가상면접으로 배우는 대규모 시스템 설계 기초
9장 웹 크롤러 설계
웹 크롤러는 로봇 또는 스파이더라고도 부른다 검색엔진에 널리 쓰이는 기술로 웹에 새로 올라오거나 갱신된 컨텐츠를 찾는것이 주된 일이다.
크롤러의 용도
- 검색 엔진 인덱싱
- 웹 아카이빙
- 웹 마이닝
- 웹 모니터링
크롤러의 속성
- 규모 확장성
- 안정성
- 예절
- 확장성
시작 URL 집합
- 크롤러가 크롤링을 시작하는 출발점
- 시작 URL은 조금 창의적으로 접근 해야될수도 있다.
- 주제별로 다른 URL을 사용
미수집 URL 저장소
- 크롤러 상태
- 다운로드할 URL
- 이 내용을 저장하는 저장소
- 다운로드된 URL
- 다운로드할 URL
- 예의
- 너무 많은 요청은 무례한 일이다(DDOS)
HTML 다운로더
- 웹페이지를 다운로드하는 컴포넌트
도메인 이름 변환기
- URL을 IP 주소로 변환 하는 절차가 필요함
콘텐츠 파서
- 웹페이지를 다운로드 하면 파싱과 검증 절차를 거쳐야됨
중복 콘텐츠인가
- 웹페이지에 중복된 컨텐츠가 많다.
콘텐츠 저장소
- 데이터 양이 너무 많으므로 대부분의 콘텐츠는 디스크에 저장한다
- 인기 있는 콘텐츠는 메모리에 두어 접근 지연시간을 줄일 것이다
URL 추출기
- 링크를 골라내는 역활
URL 필터
- 특정 콘텐츠 타입이나 파일 확장자를 갖는 URL
- 접속 오류 URL
- 접근 제외 목록에 포함된 URL
DFS : 깊이 우선 탐색법
- 그래프의 크기가 클 경우 어느 정도로 깊숙이 가게 될지 가늠하기 어렵다
BFS : 너비 우선 탐색법
- 문제점
- 한 페이지에서 나오는 링크의 상당수는 같은 서버로 되돌아간다.
- 표준적 BFS 알고리즘은 URL 간에 우선순위를 두지 않는다
성능 최적화
- 분산 크롤링
- 도메인 이름 변환 결과 캐시
- 지역성
- 짧은 타임아웃
안정성
- 안정 해시 : 다운로더 서버들에 부하를 분산할 때 적용 가능한 기술
- 크롤링 상태 및 수집 데이터 저장
- 예외 처리
- 데이터 검증
문제 있는 콘텐츠 감지 및 회피
- 중복 콘텐츠
- 거미 덫
- 데이터 노이즈