挑战:
1.如何避免重复性。不同的处理线程(进程)如何协调,使得不重复下载页面。
2.网页质量。每一个处理进程,如何能过全局的考虑网页的质量,因为他们彼此之间不知道对方存在,所以进程间了解的网页重要性有局部性。
3.通信带宽。为了解决上述问题,进程间需要通信,然而随着规模的加大,通信花销也变得异常的大。
如果解决了上述问题,则并行爬虫要比单个爬虫更有诱惑力:
1.可扩展性。随着规模的加大,单个爬虫不可能完成整个互联网页面的抓取。并行都不太可能,哈哈。
2.基于网络地理分布的抓取。并行爬虫中的任意一个,只是抓取地理位置上相近的网站。例如,德国的负责欧洲的,中国的负责亚洲的,这样可以减小网络延迟。这样的做法,也可以有效的减小网络带宽负载。
基于地理位置的抓取,事后这些网页也必须转换到一个所谓的central location,以协助建立一个所谓的central index。但是,有很多办法使得这个转换的代价远远小于所谓的全网漫游:
1.压缩技术
2.只发送本次跟上次的difference
3.根据central index的需求,只是发送摘要。