design crawl

原型的分布式web crawler的高层体系架构。crawler由多个处理进程运行在不同主机上由一个高速联通网络相连。每个爬虫进程由多个worker线程组成,每个worker线程执行重复worker cycles。

  • worker从frontier获得一个URL根据优先级等策略
    • 调用fetcher,将host转换成ip(如果可以从内存中获取)
    • worker连接到web server,检查robot exclusion rules(拒绝蜘蛛协议),试图下载页面
  • 如果下载顺利,web 页面可能存储在一个收获页面的仓库。
    • 任何情况下,页面传递给Link extractor,解析页面的HTML内容,从它们抽取链接
    • 对应的URL传到URL distributor,分配给每个URL一个爬虫进程。分配策略经常是hash urls host部分,domain 或者ip地址 (后者需要DNS解析)。由于绝大多数链接指向相同网站的页面,分配给本地的爬虫进程是更加合理的
  • 接下来,URL传递过自定义URL filter (就是说,排除那些在黑名单中的URL,或者有特点文件后缀的URL是没啥兴趣的),到Duplicate URL 终结者,维持当前发现的URL的集合,只传递当前没有被发现的URL。
  • 最后,URL prioritizer给这个URL选择一个位置在Frontier,基于比如评估页面重要性或者改变比率得出的优先级因子

results matching ""

    No results matching ""