分布式java爬虫爬取视频时,如何控制每台服务器爬取的量不同;同时能够达到最大化

分布式爬虫架构_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
分布式爬虫架构
&&分布式爬虫架构
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢后使用快捷导航没有帐号?
查看: 4537|回复: 35
谈谈主从分布式爬虫与对等分布式爬虫的优劣
论坛徽章:1
谈谈主从分布式爬虫与对等分布式爬虫的优劣
1、本周互动作业请在当前主题帖内进行发布,其他版块发起回复贴无效。
2、回复内容需符合主题帖讨论方向,灌水或者复制他人回帖,管理员及老师可以删除此贴,并判处作业不合格。
3、发起回帖需符合:1个回帖,字数不少50个字符的帖子。
新手上路, 积分 16, 距离下一级还需 34 积分
论坛徽章:4
主从式(Master-Slave)
对于主从式而言,有一台专门的Master服务器来维护待抓取URL队列,它负责每次将 URL分发到不同的Slave服务器,而Slave服务器则负责实际的网页下载工作。Master服务器除了维护待抓取URL队列以及分发URL之外,还要负责调解各个Slave服务器的负载情况。以免某些Slave服务器过于清闲或者劳累。这种模式下,Master往往容易成为系统瓶颈。
对等式(Peer to Peer)
在这种模式下,所有的抓取服务器在分工上没有不同。每一台抓取服务器都可以从待抓取在URL队列中获取URL,然后对该URL的主域名的hash值H,然后计算H mod m(其中m是服务器的数量,以上图为例,m为3),计算得到的数就是处理该URL的主机编号。
举例:假设对于URL ,计算器hash值H=8,m=3,则H mod m=2,因此由编号为2的服务器进行该链接的抓取。假设这时候是0号服务器拿到这个URL,那么它将该URL转给服务器2,由服务器2进行抓取。
这种模式有一个问题,当有一台服务器死机或者添加新的服务器,那么所有URL的哈希求余的结果就都要变化。也就是说,这种方式的扩展性不佳。针对这种情况,又有一种改进方案被提出来。这种改进的方案是一致性哈希法来确定服务器分工。其基本结构如图所示:
一致性哈希将URL的主域名进行哈希运算,映射为一个范围在0-232之间的某个数。而将这个范围平均的分配给m台服务器,根据URL主域名哈希运算的值所处的范围判断是哪台服务器来进行抓取。
如果某一台服务器出现问题,那么本该由该服务器负责的网页则按照顺时针顺延,由下一台服务器进行抓取。这样的话,及时某台服务器出现问题,也不会影响其他的工作。
中级会员, 积分 260, 距离下一级还需 240 积分
论坛徽章:10
主从模式是指由一台主机作为控制节点负责所有运行网络爬虫的主机进行管理,爬虫只需要从控制节点那里接收任务,并把新生成任务提交给控制节点就可以了,在这个过程中不必与其他爬虫通信,这种方式实现简单利于管理。而控制节点则需要与所有爬虫进行通信,它需要一个地址列表来保存系统中所有爬虫的信息。当系统中的爬虫数量发生变化时,协调者需要更新地址列表里的数据,这一过程对于系统中的爬虫是透明的。但是随着爬虫网页数量的增加。控制节点会成为整个系统的瓶颈而导致整个分布式网络爬虫系统性能下降。
金牌会员, 积分 1483, 距离下一级还需 1517 积分
论坛徽章:31
主从模式是指由一台服务器作为控制节点负责所有运行网络爬虫的服务器进行管理,爬虫只需要从控制节点那里接收任务,并把新生成任务提交给控制节点就可以了,在这个过程中不必与其他爬虫通信,这种方式实现简单利于管理。而控制节点则需要与所有爬虫进行通信,它需要一个地址列表来保存系统中所有爬虫的信息。当系统中的爬虫数量发生变化时,协调者需要更新地址列表里的数据,这一过程对于系统中的爬虫是透明的。但是随着爬虫网页数量的增加。控制节点会成为整个系统的瓶颈而导致整个分布式网络爬虫系统性能下降。这种模式下,Master往往容易成为系统瓶颈。P2P模式中所有的抓取服务器在分工上没有不同。每一台抓取服务器都可以从待抓取URL队列中获取URL,然后对该URL的主域名的hash值H,然后计算H mod m(其中m是服务器的数量),计算得到的数就是处理该URL的服务器编号。这种爬取模式是目前爬虫的主流模式。
新手上路, 积分 10, 距离下一级还需 40 积分
论坛徽章:1
主从分布式爬虫:
专门有一台服务器负责对其它服务器提供URL(URL分发器),其它服务器则进行实际的网页下载服务,把功能进行分摊了。URL分发器维护待抓取URL队列,从中获取URL给下载服务器,并承担负载均衡工作,使每台下载服务器的工作量都差不多。google在早期就是采用的主从分布式爬虫,url服务器承担很多管理工作(处理待抓取队列,已抓取队列),url服务器成为了主从分布式爬虫的瓶颈所在。
对等分布式爬虫:
在对等分布爬虫中,每台服务器完成的工作都是一样的,但是他们各自负担一部分url抓取工作,由于没有url服务器的存在,每台抓取服务器的分工就成了问题,就在服务器自己判断哪个url需要自己抓取或者别的服务器抓取。进行哈希计算与取模,取数字决定哪台服务器下载。
高级会员, 积分 946, 距离下一级还需 54 积分
论坛徽章:20
主从分布式爬虫:不同服务器不同分工。其中一台是主节点,为其他机器分发URL, 相当于URL分发器。其他服务器根据分配到的URL进行网页下载。待抓取URL队列存放在主节点,主节点必须使得所有机器负载均衡。多个从节点相互独立,都只与主节点交互。主节点承担了所有的管理工作,工作量太大,一旦主节点瘫痪,整个分布式爬虫就无法正常工作。
对等分布式爬虫:服务器之间不存在分工差异,每台服务器完成的工作都一样。每台服务器自行判断某个URL有没有被抓取过。一种方法是对域名进行HASH计算来决定由哪台服务器下载。
中级会员, 积分 452, 距离下一级还需 48 积分
论坛徽章:9
本帖最后由 peterchen932 于
11:25 编辑
(1)& & & & 主从分布式爬虫:
由一台master服务器, 来提供url的分发, 维护待抓取url的list。由多台slave服务器执行网页抓取功能, slave所抽取的新url,一律由master来处理解析,而slave之间不需要做任何通信。
优点:可由master做到load balance。架构简单,master控URL的分发,修改配置,以配合执行的url的抽取工作。
缺点: master无法扩展成为单点故障及性能瓶颈。
(2)& & & & 对等分布式爬虫:
由多台相同的服务器集成,每台服务器可单独运作,完成爬虫工作,每台服务器之间的分工有一定的运算逻辑(ex: hash),由运算(配置)的结果,来决定由那台服务器做抓取网页的工作。
优点: 没有单点故障,性能瓶颈的出现机率较低,扩展性强,备援性高。
缺点: 因事先定义(ex: hash),无法真的做到load balance,当某一台服务器过于忙录,分配给这台服务器的url只能等待(就算其他服务器是空闲的),扩展新的服务器,需要每台去重新定义(ex: hash)。
论坛徽章:22
主从分布式爬虫:
由一台主机作为控制节点负责所有运行网络爬虫的主机进行管理以及对其它服务器提供URL分发,其它服务器则进行实际的网页下载服务,把功能进行分摊了。URL分发器维护待抓取URL队列,从中获取URL给下载服务器,并承担负载均衡工作,使每台下载服务器的工作量都差不多,不必与其他爬虫通信,这种方式实现简单利于管理。
对等分布式爬虫:
在对等分布爬虫中,每台服务器完成的工作都是一样的,但是他们各自负担一部分url抓取工作,由于没有url服务器的存在,每台抓取服务器的分工就成了问题,需要与所有爬虫进行通信,它需要一个地址列表来保存系统中所有爬虫的信息,就在服务器自己判断哪个url需要自己抓取或者别的服务器抓取。进行哈希计算与取模,取数字决定哪台服务器下载。
注册会员, 积分 93, 距离下一级还需 107 积分
论坛徽章:5
主从式分布爬虫
优点:由于由一台管理服务器将待抓取URL分配给不同的抓取服务器,并对抓取服务器之间的工作进行负载均衡,使得抓取服务器可以得到有效合理地利用。
缺点:因为URL服务器承担很多管理任务,同时待抓取URL队列数量巨大,所以URL服务器容易成为整个系统的瓶颈。
对等式分布爬虫
优点:由于没有URL分发服务器,所以不存在系统瓶颈问题,另外其哈希函数不是针对整个URL,而只针对主域名,所以可以保证同一网站的网页都由同一台服务器抓取,这样一方面可以提高下载效率(DNS域名解析可以缓存),另外一方面也可以主动控制对某个网站的访问速度,避免对某个网站访问压力过大。
缺点:如果在抓取过程中某台服务器宕机,或者新加入一台抓取服务器,则每台抓取服务器的取模算法都得更新。
金牌会员, 积分 1548, 距离下一级还需 1452 积分
论坛徽章:17
主从分布式爬虫:不同的服务器有不同分工。主节点为其他机器分发URL, 其他服务器根据分配到的URL进行网页下载。
对等分布式爬虫:服务器之间不存在分工差异,每台服务器的工作都一样,自行判断某个URL有没有被抓取过。中国领先的IT技术网站
51CTO旗下网站
如何设计一个复杂的分布式爬虫系统?
一个复杂的分布式爬虫系统由很多的模块组成,每个模块是一个独立的服务(SOA架构),所有的服务都注册到Zookeeper来统一管理和便于线上扩展。模块之间通过thrift(或是protobuf,或是soup,或是json,等)协议来交互和通讯。
作者:佚名来源:| 10:13
一个复杂的分布式爬虫系统由很多的模块组成,每个模块是一个独立的服务(SOA架构),所有的服务都注册到Zookeeper来统一管理和便于线上扩展。模块之间通过thrift(或是protobuf,或是soup,或是json,等)协议来交互和通讯。
Zookeeper负责管理系统中的所有服务,简单的配置信息的同步,同一服务的不同拷贝之间的负载均衡。它还有一个好处是可以实现服务模块的热插拔。
URLManager是爬虫系统的核心。负责URL的重要性排序,分发,调度,任务分配。单个的爬虫完成一批URL的爬取任务之后,会找
URLManager要一批新的URL。一般来说,一个爬取任务中包含几千到一万个URL,这些URL最好是来自不同的host,这样,不会给一个
host在很短一段时间内造成高峰值。
ContentAcceptor负责收集来自爬虫爬到的页面或是其它内容。爬虫一般将爬取的一批页面,比如,一百个页面,压缩打包成一个文件,发送给ContentAcceptor。ContentAcceptor收到后,解压,存储到分布式文件系统或是分布式数据库,或是直接交给
ContentParser去分析。
CaptchaHandler负责处理爬虫传过来的captcha,通过自动的captcha识别器,或是之前识别过的captcha的缓存,或是通过人工打码服务,等等,识别出正确的码,回传给爬虫,爬虫按照定义好的爬取逻辑去爬取。
RobotsFileHandler负责处理和分析robots.txt文件,然后缓存下来,给ContentParser和
URLManager提供禁止爬取的信息。一个行为端正的爬虫,原则上是应该遵守robots协议。但是,现在大数据公司,为了得到更多的数据,基本上遵守这个协议的不多。robots文件的爬取,也是通过URLManager作为一种爬取类型让分布式爬虫去爬取的。
ProxyManager负责管理系统用到的所有Proxy,说白了,负责管理可以用来爬取的IP。爬虫询问ProxyManager,得到一批 Proxy
IP,然后每次访问的时候,会采用不同的IP。如果遇到IP被屏蔽,即时反馈给ProxyManager,ProxyManager会根据哪个host屏蔽了哪个IP做实时的聪明的调度。
Administor负责管理整个分布式爬虫系统。管理者通过这个界面来配置系统,启动和停止某个服务,删除错误的结果,了解系统的运行情况,等等。
各种不同类型的爬取任务,比如,像给一个URL爬取一个页面( NormalCrawler),像需要用户名和密码注册然后才能爬取(
SessionCrawler ),像爬取时先要输入验证码( CaptchaCrawler ),像需要模拟用户的行为来爬取( Simulator
),像移动页面和内容爬取( MobileCrawler ),和像App内内容的爬取(
AppCrawler),需要不同类型的爬虫来爬取。当然,也可以开发一个通用的爬虫,然后根据不同的类型实施不同的策略,但这样一个程序内的代码复杂,可扩展性和可维护性不强。
一个爬虫内部的爬取逻辑,通过解释从配置文件 CrawlLogic
来的命令来实现,而不是将爬取逻辑硬编码在爬虫程序里面。对于复杂的爬取逻辑,甚至可以通过用代码写的插件来实现。
ContentParser根据URLExtractionRules来抽取需要继续爬取的URL,因为focus的爬虫只需要爬取需要的数据,不是网站上的每个URL都需要爬取。ContentParser还会根据FieldExtractionRules来抽取感兴趣的数据,然后将原始数据结构化。由于动态生成的页面很多,很多数据是通过Javascript显示出来的,需要JavascriptEngine来帮助分析页面。这儿需要提及下,有些页面大量使用AJAX来实时获取和展示数据,那么,需要一个能解释Javascript的爬虫类型来处理这些有AJAX的情形。
为了监控整个系统的运行情况和性能,需要 Monitor 系统。为了调试系统,保障系统安全有据可循,需要 Logger
系统。有了这些,系统才算比较完备。
所有的数据会存在分布式文件系统或是数据库中,这些数据包括URL( URLRepo),Page( PageRepo )和Field( FieldRepo
),至于选择什么样的存储系统,可以根据自己现有的基础设施和熟悉程度而定。
为了扩大爬虫系统的吞吐量,每个服务都可以横向扩展,包括横向复制,或是按URL来分片(sharding)。由于使用了Zookeeper,给某个服务增加一个copy,只用启动这个服务就可以了,剩下的Zookeeper会自动处理。
这里只是给出了复杂分布式爬虫系统的大框架,具体实现的时候,还有很多的细节需要处理,这时,之前做过爬虫系统,踩过坑的经验就很重要了。【编辑推荐】【责任编辑: TEL:(010)】
大家都在看猜你喜欢
热点头条热点头条热点
24H热文一周话题本月最赞
讲师:30641人学习过
讲师:30391人学习过
讲师:218403人学习过
精选博文论坛热帖下载排行
以Linux为代表的自由软件及其稳定性,逐渐在全世界崭露头角且备受重视。由于可以支持多种网络环境,因此在采用Linux系统之前,必须熟悉各种...
订阅51CTO邮刊您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
分布式微信公众平台爬虫系统的分析与应用.pdf 81页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
需要金币:250 &&
分布式微信公众平台爬虫系统的分析与应用
你可能关注的文档:
··········
··········
分布式微信公众平台爬虫系统的研究与应用
论文作者签名:
指导教师签名:
论文评阅人 1 :
评阅人2 :
答辩委员会主席:
答辩日期:
南华大学学位论文原创性声明
本人声明,所呈交的学位论文是本人在导师指导下进行的研究工作及取得
的研究成果。尽我所知,除了论文中特别加以标注和致谢的地方外,论文中不
包含其他人已经发表或撰写过的研究成果,也不包含为获得南华大学或其他单
位的学位或证书而使用过的材料。与我共同工作的同志对本研究所作的贡献均
已在论文中作了明确的说明。本人完全意识到本声明的法律结果由本人承担。
作者签名:
南华大学学位论文版权使用授权书
本学位论文是本人在南华大学攻读(博/硕)士学位期间在导师指导下完
成的学位论文。本论文的研究成果归南华大学所有,本论文的研究内容不得以
其它单位的名义发表。本人同意南华大学有关保留、使用学位论文的规定,即:
学校有权保留学位论文,允许学位论文被查阅和借阅;学校可以公布学位论文
的全部或部分内容,可以采用复印、缩印或其它手段保留学位论文;学校可根
据国家或湖南省有关部门规定送交学位论文。同意学校将论文加入《中国优秀
博硕士学位论文全文数据库》,并按《中国优秀博硕士学位论文全文数据库出
版章程》规定享受相关权益。同意授权中国科学信息技术研究所将本学位论文
收录到 《中国学位论文全文数据库》,并通过网络向社会公众提供信息服务。
对于涉密的学位论文,解密后适用该授权。
作者签名:
导师签名:
分布式微信公众平台爬虫系统的研究与应用
摘要:近几年来,移动互联网的飞速发展对人们的生活方式产生了
极大的影响。微信作为一个新兴的移动社交平台,已累计有超过 6
亿的注册用户。而微信公众平台依托于微信的海量用户也迅速流行
起来,目前已有注册公众号账号超过800 万,累计发布了超过2 亿
篇文章,对微信公众平台所发布的海量信息资源进行深入研究具有
重大意义。
本文基于Scrapy 框架设计并实现了针对微信公众平台的分布式
爬虫系统,实现对微信公众平台上公众号信息和文章信息的爬取,
将爬取到的数据存储至单机MySQL
数据库和FastDFS 分布式文件
系统中。此后,概要说明了基于爬取到数据的一种应用场景,可为
公众号用户提供快速建站的数据服务。
首先,对开源网络爬虫框架Scrapy 的整体架构、各个组件模块
和内部运行机制进行深入研究。针对它目前仅支持单机爬取的不足,
对其进行扩展,基于 Redis
数据库的有序集合重新实现了调度器模
块,使其可以支持多爬虫节点的主从式分布式爬取。
正在加载中,请稍后...

我要回帖

更多关于 python爬虫爬取iframe 的文章

 

随机推荐