9장 웹 크롤러 설계

가상면접으로 배우는 대규모 시스템 설계 기초

9장 웹 크롤러 설계

웹 크롤러는 로봇 또는 스파이더라고도 부른다 검색엔진에 널리 쓰이는 기술로 웹에 새로 올라오거나 갱신된 컨텐츠를 찾는것이 주된 일이다.

크롤러의 용도

  • 검색 엔진 인덱싱
  • 웹 아카이빙
  • 웹 마이닝
  • 웹 모니터링

크롤러의 속성

  • 규모 확장성
  • 안정성
  • 예절
  • 확장성

시작 URL 집합

  • 크롤러가 크롤링을 시작하는 출발점
  • 시작 URL은 조금 창의적으로 접근 해야될수도 있다.
  • 주제별로 다른 URL을 사용

미수집 URL 저장소

  • 크롤러 상태
    • 다운로드할 URL
      • 이 내용을 저장하는 저장소
    • 다운로드된 URL
  • 예의
    • 너무 많은 요청은 무례한 일이다(DDOS)

HTML 다운로더

  • 웹페이지를 다운로드하는 컴포넌트

도메인 이름 변환기

  • URL을 IP 주소로 변환 하는 절차가 필요함

콘텐츠 파서

  • 웹페이지를 다운로드 하면 파싱과 검증 절차를 거쳐야됨

중복 콘텐츠인가

  • 웹페이지에 중복된 컨텐츠가 많다.

콘텐츠 저장소

  • 데이터 양이 너무 많으므로 대부분의 콘텐츠는 디스크에 저장한다
  • 인기 있는 콘텐츠는 메모리에 두어 접근 지연시간을 줄일 것이다

URL 추출기

  • 링크를 골라내는 역활

URL 필터

  • 특정 콘텐츠 타입이나 파일 확장자를 갖는 URL
  • 접속 오류 URL
  • 접근 제외 목록에 포함된 URL

DFS : 깊이 우선 탐색법

  • 그래프의 크기가 클 경우 어느 정도로 깊숙이 가게 될지 가늠하기 어렵다

BFS : 너비 우선 탐색법

  • 문제점
    • 한 페이지에서 나오는 링크의 상당수는 같은 서버로 되돌아간다.
    • 표준적 BFS 알고리즘은 URL 간에 우선순위를 두지 않는다

성능 최적화

  • 분산 크롤링
  • 도메인 이름 변환 결과 캐시
  • 지역성
  • 짧은 타임아웃

안정성

  • 안정 해시 : 다운로더 서버들에 부하를 분산할 때 적용 가능한 기술
  • 크롤링 상태 및 수집 데이터 저장
  • 예외 처리
  • 데이터 검증

문제 있는 콘텐츠 감지 및 회피

  • 중복 콘텐츠
  • 거미 덫
  • 데이터 노이즈

참조