分布式网络爬虫包含多个爬虫,每个爬虫需要完成的任务和单个的爬行器类似,它们从互联网上下载网页,并把网页保存在本地的磁盘,从中抽取URL并沿着这些URL的指向继续爬行。由于并行爬行器需要分割下载任务,可能爬虫会将自己抽取的URL发送给其他爬虫。
传统意义上,将分布式网络爬虫按分散程度的不同分为局域网分布式网络爬虫和广域网分布式网络爬虫。但随着现在技术的发展,系统部署服务器的选择可以灵活多样,已经不再受自有机房服务器的限制,这种分类已经没有太多意义。
根据分布式系统实现方式上,本文认为主要有两种主流模式:经典集中Server-Client模式,基于分布式文件系统的分散Client模式;如果从实现详情来看,实际后者可以归为前者,因为分布式文件系统对整个系统来说可以算是Server;只是从实现的理解上,可以这么来分。后续对这两种模式做下简单介绍。
经典集中Server-Client模式由服务管理Server集群和大量采集Client终端组成,基本逻辑图如图1所示,其中管理Server集群完成采集任务管理、采集Client状态管理、数据回收存储等工作,采集Client终端进行采集任务中数据下载、网页中URL抽取、数据抽取上传等工作。在这样的架构模式中,Client之间的工作都是独立的,相互之间没有直接的关联,而且部署上可以很分散,扩容很方便。从系统实现上来说,这种架构要对Server的分工做好分配,并且对同类Server节点的信息同步做好规划,做到系统能随意扩容,而且能达到系统自动容灾的效果。

图1:集中Server-Client模式
基于分布式文件系统的分散Client模式是以分布式文件系统为基础(见图2),比如hadoop项目下的HDFS文件系统;这种系统的设计实际可以和单机版的架构设计类似,比如可以把不同的采集任务存为不同的文件,采集到的不同站点(或类型)数据存到不同的文件中,这样每个采集Client可以直接读文件、写文件就可以了;并且标记文件中信息就可以标识更新状态等。而Client的部署可以选择与文件系统共享机器节点,也可以独立部署(只要能访问文件系统即可)。这个种架构比较好理解,而且从系统实现上来说会更简单。但从系统设计的灵活性上来说会相对较弱,系统的自动化运营、可控性等方面都不太好设计。

图2:基于分布式文件系统的架构模式
后续文章将以集中Server-Client模式介绍分布式网络爬虫的实现,敬请期待!
注:本文为原创内容,转载请著名出处,微信号:MangCrawler。

