广域网分布式 Web 爬虫(二)
网格的特性使其能够支持广域网部署.
1.2分布式爬虫的基本结构和工作流程
由于爬虫要下载多个网页,而各个网页的下载过程之间依赖性较小,因此可以被并行化.为了高效地下载网
页,爬虫程序一般被设计为多线程和多进程协同的方式,而分布式爬虫是将多个具有抓取网页功能的Agent分
别部署于多个计算资源之上的爬虫程序.以下是分布式爬虫中每个Agent的大致工作流程(其中,左侧带*号的
两行代码可能需要多机协同完成).为了突出Agent对URL的处理,算法描述省略了域名解析、对网页和URL
的预处理以及解析网站的Robots.txt文件的过程.
URLSeen:用于存储已经抓取过的URL.
URL队列:用于存储待抓取的URL.
输入:初始URL列表.
Agent(初始URL列表){
将初始URL列表中的URL放入URL队列;
while(URL队列不为空){
从URL队列中取出一个URL;
将URL存入URLSeen;
下载URL指向的网页;
提取网页中含有的URL;
for(每一个新发现的URL){
if(URL应由本Agent负责){
}else{
if(URL不在URLSeen中&&URL不在URL队列中)
将URL放入URL队列;
通过一定的Web划分方法选择负责当前URL的Agent;
将URL发送至此Agent;
*
*
}
}
1.3广域网分布式Web爬虫的优势和挑战
广域网分布式Web爬虫与基于LAN的分布式爬虫或称局域网爬虫相比具有诸多优势:
(1)可扩展性
可扩展性是局域网爬虫的致命缺点,也是提出广域网分布式爬虫的主要原因.首先,广域网系统能够容纳更
多的计算资源,拥有更多的网络接入点.理论上,整体吞吐量可以无限扩展;局域网爬虫因其计算资源数量受到
LAN的限制,很难扩展到较大的规模,从而限制了系统整体吞吐量.其次,广域网系统是由若干个相对较小的机
群甚至单机节点组成,这使得资源添加和系统维护都变得相对简单.如果能够进一步利用分布在Internet上的个
人计算资源,则维护开销将大为降低;相比之下,在LAN中维护大规模机群的代价则非常昂贵,需要解决数据存
储、系统互连、机架结构、电源、散热等诸多问题.
(2)多网络接入点
爬虫在抓取网页时,HTTP请求和下载网页的过程需要占用系统网络接入点的大部分带宽.对基于LAN的
系统,随着机群规模的扩大,接入带宽将变为系统瓶颈.如果爬虫程序分布在不同的网络位置,就可以使用多个
网络接入点,理论上可以获得相当于这些接入点加和的总带宽.并且随着网络接入点数量的增加,系统的总带宽
也会相应增加,理论上带宽可以无限扩展.
}
}