基于流水线负载平衡模型的并行爬虫研究.pdf
文本预览下载声明
第35卷 第2期 计 算 机 工 程 2009年 1月
Vo1.35 No.2 ComputerEngineering January2009
· 软件技术与数据库 · 文章编号:100_3428(2oo9)o2—_0o34一I3 文献标识码:A 中圈分类号:TP311
基于流水线负载平衡模型的并行爬虫研究
盂祥乾,叶允明,邓 斌
(哈尔滨工业大学深圳研究生院,深圳 518055)
摘 要:针对并行爬虫系统在多任务并发执行时所遇到的模块间负载平衡问题,提出流水线负载平衡模型(PLB),将不同的任务抽象为独
立模块而达到各模块的处理速度相等,采用多线程的方式实现基于PLB的并行爬虫,根据线程的休眠和缓冲区的变化对线程数量进行动态
调整以实现PLB。实验结果表明该方法具有良好的运行效率和稳定性。
关健词:爬虫;并行;流水线;负载平衡
StudyonParallelCrawlerBasedonPipelineLoadBalancingM odel
MENG Xiang-qian,YEYun-ming,DENG Bin
(ShenzhenGraduateSchool,HarbinInstituteofTechnology,Shenzhen518055)
[Abstract]ThispaperproposesaloadbalancingmodelnamedPipelineLoadBalancing(PLB),tOaddresstheloadbalancingproblemamong
concurrentmodulesinapraallelcrawlingsystem.DifferenttasksinPLB raeimplementedasindependentmoduleswhichhavesimilarprocessing
abilities.Dynamicmulti-threadingandbufferingmechanismsraeemployedtoimplementaPLB—basedpraallelcrawler.Thenumberofthreadsis
adjustedaccordingtothechanginginbuffersizeandwaitingintervalofahtread.ExperimentalresultsshowthatthePLB—basedcrawlerprovides
highperformanceaswellasgoodstability.
[Keywords]crawler;parallel;pipeline;loadbalancing
高效的网络爬虫(crawler)是搜索引擎的重要基础。采用 大小等因素的影响波动较大,所以实现动态的负载平衡调整
多任务并发执行,实现类似于CPU的流水线(pipeline)运行方 十分必要。
式,可极大地提高网络和计算资源的利用率等性能。流水线
稳定高效运行的关键在于各执行单元问的动态负载平衡,但
目前对并行爬虫的研究大多集中于对任务进行有效分割和各
模块的实现方法上 l【J,很少涉及多任务间的并发执行。本文
研究了并行化爬虫中流水线式的动态负载平衡问题,抽象出
流水线负载平衡(PipelineLoadBalancing,PLB)模型,介绍了
针对该目标模型的多线程式实现方法,包括增加与减少线程
数量的测算与实现算法,通过对比实验验证了该模型及其实
现的有效性。
1 面向网络爬虫的PLB模型
一 个爬行对象的爬行过程需执行如下的任务 :对一个
URL进行DNS,获取主机对应的IP地址,再通过HTTP协
议下载该页面,从中抽取超链接,并根据所定义的过滤规则
逐个进行过滤,最后将其作为新的爬行对象加入待爬行队列
中。采用单任务串行的方式执行,即任意时刻只有一个任务
在运行,必然会导致网络和计算资源的浪费。
本文提出采用爬虫的流水线运行方式,即多个任务同时
显示全部