인터넷 파충류를 설계하다
무엇이 인터넷 파충류입니까?
구글과 같은 검색엔진은 사용자가 최신 정보를 신속하게 얻을 수 있도록 자주 새로운 페이지를 검색하고 인덱스해야 한다.음반 회사는 판권과 상표 침해 사건을 감시해야 한다.이것들은 단지 인터넷 파충류의 일부 용례일 뿐이다.
정경
이 용례에서 우리는 매달 10억 개의 웹 페이지를 처리하고 5년 동안 웹 내용을 저장해야 한다는 용례를 고려해 보자.
스토리지 요구 사항 예측
초당 웹 페이지 조회 횟수(QPS):
1 x 109 pages / 30 days / 24 hours / 3600 seconds = 400 QPS
QPS가 이 추정치보다 높은 이유는 몇 가지가 있을 수 있습니다.따라서 최대 QPS를 계산합니다.
Peak QPS = 2 * QPS = 800 QPS
우리가 사용할 평균 웹 페이지 크기는 다음과 같습니다.
500 kb
매달 페이지를 저장하는 데 필요한 저장 공간:
1 x 109 pages X 500 kb = 500 tb
5년 스토리지 페이지에 필요한 스토리지 공간:
500 tb X 12 months X 5 years = 30 pb (petabytes)
고급 디자인
다음은 논리가 고차원적으로 흐르는 모습이다.그리고 우리는 매 단계를 상세하게 소개할 것이다.
피드 URL
피드 URL은 전체 네트워킹 프로세스의 시작점이 되는 간단한 텍스트 파일입니다.네트워크 파충류는 같은 영역의 모든 페이지를 방문할 것이다.예를 들어 만약에
www.homedepot.com
을 피드 URL으로 제공한다면 인터넷 파충류는 상점의 모든 부서를 검색할 것이다. 예를 들어 www.homedepot.com/gardening
과 www.homedepot.com/lighting
등이다.선택한 피드 URL은 용례에 따라 다릅니다.만약 141560개의 저작권 침해 URL을 만들었다면 141560개의 저작권 침해 URL을 발견할 수 있을 것이다.
URL 경계
이 단계를 액세스할 URL의 FIFO(Fedi-Fout) 큐로 볼 수 있습니다.이 큐에는 액세스한 적이 없는 URL만 표시됩니다.다음은 URL 경계에 대한 두 가지 중요한 고려 사항에 대해 살펴보겠습니다.
위의 디자인은 관리 예의의 구성 요소를 보여 준다.매핑 테이블 스토리지 호스트 도메인(예:
www.soundcloud.com
)을 특정 대기열로 매핑합니다.대기열 라우터는 매핑을 사용하여 URL을 해당 대기열로 보냅니다.그런 다음 각 대기열(1, 2... N)에는 같은 호스트의 URL이 포함됩니다.각 다운로드 프로세스는 큐에 매핑되고 한 번에 하나의 URL을 받습니다.다운로드 작업마다 지연을 추가할 수 있습니다.HTML 다운로드 프로그램
URL을 지정하고 DNS에 요청을 보내고 IP 주소를 받습니다.그런 다음 HTML 페이지를 검색하기 위해 IP 주소로 다른 요청을 보냅니다.
대부분의 사이트에는
www.youtube.com
이라는 파일이 있는데 파충류는 이 파일을 마법사로 사용해 어떤 페이지를 해석할 수 있도록 한다.다음은 www.homedepot.com
파일의 한 토막입니다.웹 사이트에 대한 접속을 시도하기 전에, 우리는 이 문서를 검사하고 규칙을 준수해야 한다.이 로봇스 파일도 중복 다운로드를 피하기 위해 캐시에 적합하다.Disallow: /*retail/availability*
Disallow: /*retail/availabilitySearch*
Disallow: /*retail/pickupEligibility*
Disallow: /*shop/sign_in*
Disallow: /*shop/sign_out*
Disallow: /*/shop/1-800-MY-APPLE/*
다음은 HTML 다운로드 프로그램의 성능 최적화를 소개할 것이다도메인 이름 확인 모듈
HTML 페이지를 검색하기 전에 DNS 해결사는 URL을 IP 주소로 변환해야 합니다.
컨텐트 파서
인터넷상의 어떤 HTML 페이지도 오류나 오류 데이터가 없다는 것을 보장할 수 없다.컨텐트 파서는 HTML 페이지를 검증하고 잘못된 형식의 데이터를 필터링합니다.
내용 보셨어요?
파충류는 수십억 개의 페이지를 검색해야 하기 때문에, 우리는 과거에 처리된 페이지를 삭제함으로써 우리의 작업을 반복하지 않기를 희망한다.이 단계에서는 HTML 컨텐트가 이미 저장되어 있는지 확인하고 저장되어 있으면 무시합니다.그것은 조회 내용을 데이터베이스에 저장함으로써 이 점을 실현할 것이다.
컨텐트 저장소
HTML의 스토리지 시스템입니다.이것은 전통적인 관계 데이터베이스일 수 있다.HTML 페이지의 해시만 저장하거나 체크섬 기능을 통해 전체 HTML 페이지를 분석하고 저장할 필요 없이 중복된 내용을 검사하는 속도를 높일 수 있습니다.
주소 추출
이 단계는 HTML을 사용하여 새 URL을 구문 분석하고 추출합니다.예를 들어, 다음은 애플 웹 사이트의 HTML입니다.URL 추출기는 href 값을 찾아 전체 URL을 만듭니다.
url 필터
이 단계에서는 PDF나 JPG 등 일부 컨텐츠 유형과 우리가 소유할 수 있는 블랙리스트의 URL을 제외합니다.URL에서 파일 확장자를 찾아 이러한 컨텐트 유형을 찾습니다.
인터넷 주소 보셨어요?
이 단계에서는 이전에 액세스한 URL 또는 URL 경계에 이미 존재하는 URL을 추적합니다.URL이 URL 저장소 데이터베이스에 저장되어 있는지 확인합니다.이것은 중복 작업과 가능한 무한 순환 조건을 줄이는 데 도움이 된다.
이 글은 알렉스 서 (Alex Xu) 의 《 시스템 설계 인터뷰 - 내막자 안내서 》 에서 발췌한 것이다.
Reference
이 문제에 관하여(인터넷 파충류를 설계하다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/henriavo/design-a-web-crawler-1ecn텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)