广域网分布式 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的

系统,随着机群规模的扩大,接入带宽将变为系统瓶颈.如果爬虫程序分布在不同的网络位置,就可以使用多个

网络接入点,理论上可以获得相当于这些接入点加和的总带宽.并且随着网络接入点数量的增加,系统的总带宽

也会相应增加,理论上带宽可以无限扩展.

}

}

相关推荐