CN103067521B - 一种分布式爬虫集群中的节点和系统 - Google Patents
一种分布式爬虫集群中的节点和系统 Download PDFInfo
- Publication number
- CN103067521B CN103067521B CN201310006486.5A CN201310006486A CN103067521B CN 103067521 B CN103067521 B CN 103067521B CN 201310006486 A CN201310006486 A CN 201310006486A CN 103067521 B CN103067521 B CN 103067521B
- Authority
- CN
- China
- Prior art keywords
- node
- url
- module
- load
- grade
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Abstract
本发明公开了一种基于结构化p2p的去中心化分布式爬虫节点和系统。基于结构化p2p的分布式爬虫集群中的节点包括底层覆盖网,基于p2p组织方式,执行节点间分发url和接收url的协议;爬行模块,基于被分发的url,负责从互联网抓取对应的资源;控制中心,执行分发url和接收url的功能。本发明实施例利用结构化p2p算法kademlia的特点,巧妙地解决了分布式爬虫系统中的去重和负载均衡的问题,实现了系统良好的可拓展性和容错性,可以为大规模分布式的爬虫系统提供通用的设计方法。
Description
技术领域
本发明涉及计算机数据挖掘领域,具体涉及一种分布式爬虫集群方法。
背景技术
爬虫作为搜索引擎数据采集的最重要的工具,在如今信息爆炸的时代,传统的客户端(C)/服务器(S)模式下的爬虫已经很难抓取到网络中的全部数据;而且,如果增加爬虫的数量则服务器将承受更大的负载而导致系统无法提升服务性能。在这样的背景下,分布式爬虫集群的方法渐渐进入人们的视野。
当前对分布式爬虫集群的研究主要集中在主从模式下的分布式爬虫系统,即会存在部分核心的管理节点负责任务管理、统一资源定位符url去重及负载均衡等问题,这样的主从模式依然无法解决性能瓶颈和大规模拓展的难题。另一种分布式爬虫模式为结构化对等网络p2p,即每个运行网络爬虫节点的主机都可以自由通信,没有控制节点,就不存在系统瓶颈,可以进行大规模拓展,但由于缺少管理,节点间的协作、url去重和网络负载均衡成为难以解决的问题。
发明内容
本发明的目的在于提出一种能够进一步改进系统可拓展性和容错性的节点和系统。
为此,在第一方面,本发明实施例提供一种基于结构化p2p的分布式爬虫集群中的节点,所述节点包括底层覆盖网,基于p2p组织方式,执行节点间分发url和接收url的协议;爬行模块,基于被分发的url,负责从互联网抓取对应的资源;控制中心,执行分发url和接收url的功能。
在第二方面,本发明实施例还提供一种分布式爬虫集群系统,包括如第一方面所述的节点。
本发明实施例中,每个节点地位平等且功能一致,依靠节点内部机制实现爬虫协作,所以单节点加入网络无需系统外的额外操作,整个网络可以随意拓展爬虫节点数量,实现大规模分布式爬虫集群。
附图说明
图1是本发明实施例的爬虫节点内部的结构图。
图2是爬虫节点分发url的工作流程图。
图3是爬虫节点接收url的工作流程图。
图4是爬虫节点进行负载均衡方法的工作流程图。
图5是爬虫节点处理节点加入和退出的工作流程图。
具体实施方式
下面结合附图对本发明的具体实施例做进一步详细的说明。
本发明实施例通过利用结构化p2p算法kademlia搭建底层覆盖网,建立起节点间的通信机制;在每个节点上独立运行一套完整的爬行模块,负责网页抓取,数据解析和链接抽取等工作;同时,每个节点上配置一个控制中心,负责接收和分发url,负载均衡及处理url历史记录的转移。由于每个节点地位平等且功能一致,依靠节点内部机制实现爬虫协作,所以单节点加入网络无需系统外的额外操作,整个网络可以随意拓展爬虫节点数量,实现大规模分布式爬虫集群。
图1是本发明实施例的爬虫节点内部的结构图。如图1所示,基于结构化p2p的分布式爬虫集群方法中的单节点包括底层覆盖网,爬行模块和控制中心三部分。
底层覆盖网是每个节点进行路由通信的基础部件,基于例如结构化p2p算法kademlia而实现的p2p组织方式,可实现数据定位和路由查找的功能。根据本发明实施例,增加了以下通信协议:节点间分发url和接收url的协议。
爬行模块是爬虫节点进行基本爬虫工作的基础,根据上层应用的需求,负责从互联网抓取对应的资源。具体来说,爬虫模块从接收队列中获取url,下载对应的网页数据,解析网页内容获取目标内容,根据实际应用进行相应的处理,再解析网页内容获取目标链接,根据url历史记录进行去重操作,将剩余的有效链接添加到发送队列。此工作可由多个线程并行爬取来实现,可以大大提高网页数据的下载速度。
控制中心是爬虫节点行为的核心控制者,是连接爬行模块和底层覆盖网的枢纽,是爬虫节点间协作机制的实现。控制中心实现的功能包括分发url和接收url。
具体地说,控制中心包括分发url模块,对待分发的url进行哈希,获得关键字;底层覆盖网基于关键字查询目标节点的信息。优选地,分发url模块对待分发的url进行二次哈希,获得关键字;底层覆盖网基于关键字查询备份节点的信息。优选地,分发url模块接收目标节点和/或备份节点的回复。
另外,控制中心可以包括接收url模块,接收其它节点分发的url。
在一个例子中,底层覆盖网还增加以下通信协议:因节点动态加入和退出引起的url历史记录转移的协议;控制中心还增加url历史记录转移的功能。
具体地说,控制中心可以包括节点加入模块,查找接近节点的目标,并且请求属于自己部分的url历史记录。
控制中心可以包括url历史记录转移模块,检测本地的url历史记录,找出属于请求节点的部分,转移给该请求节点。
控制中心还可以包括节点退出模块,查找接近节点的目标节点,将本地的ur l历史记录转移给目标节点。
在又一个例子中,底层覆盖网还增加以下通信协议:因负载不均衡引起的url任务转移的协议。同时修改了kadmelia中原有的路由通信协议,在节点更新路由表的通信消息中携带节点的负载等级信息,并在路由表保存的每个节点信息中增加了节点负载等级,以此来实现负载均衡时的节点等级的获取。控制中心增加负载均衡的功能。
具体地说,控制中心可以包括负载均衡模块,基于邻居节点的节点负载等级信息,确定任务转移。
节点的任务队列可以包括工作区和超载块两部分,负载均衡模块可以根据当前超载块的数量,以及当前工作区可容纳的超载块数量确定自己的负载等级。
负载均衡模块可以根据路由表的邻居节点距离信息划分节点区域,从节点区域中选择一个距离近的节点。
下文将分别介绍分发url和接收url,负载均衡及url历史记录转移的实现过程以及相关细节。
图2是爬虫节点分发url的工作流程图。参考图2可知,爬虫节点分发url时,先从发送队列中取出等待分发的url,对该url进行一次哈希,得到对应的关键字key值,再根据key值在底层覆盖网中查询对应的目标节点的信息。在一个例子中,对该url进行一次哈希和二次哈希,得到对应的关键字key值,再根据key值在底层覆盖网中查询对应的备份节点的信息。
得到目标节点的信息后,将url发送给目标节点进行下载和解析,同时,可以将url发送给备份节点进行url历史记录的保存。当收到目标节点和备份节点的回复时,分发结束,将url添加到本地的url历史记录中,通知备份节点添加url到其url历史记录。
当收到目标节点的回复但没收到备份节点的回复时,重新选择新的备份节点进行url历史记录的保存请求。
当收到备份节点的回复但没收到目标节点的回复时,根据备份节点回复的url是否已经出现过,如果已经出现过,则将url添加到本地的url历史记录,如果未出现过,则选择新的目标节点进行url分发的请求,直到收到目标节点的回复,则通知备份节点将url添加到其url历史记录。
当都没收到目标节点和备份节点的回复时,重新选择新的目标节点和备份节点进行处理。此处,为了增加系统的可靠性,可增加目标节点数或者是备份节点数,但因此也带来更多的通信量。
图3是爬虫节点接收url的工作流程图。参考图3可知,爬虫节点在接收url时,先判断该分发请求是否是url历史记录备份请求,如果是的话,再判断是url历史记录的查询请求,还是保存请求,如果是查询请求,则查询本地的url历史记录,如果未出现过,则添加到本地的url历史记录进行保存,否则,回复出现过该url,如果是保存请求,则把url添加到本地url历史记录。
如果不是备份请求,则是分发url的请求,先根据url历史记录进行去重操作,然后把有效的url添加到接收队列,并添加url到历史记录中,最后回复成功添加该url。
图4是爬虫节点进行负载均衡方法的工作流程图。负载均衡是指节点引入负载等级的概念,根据负载等级进行负载均衡的方法。节点将url接收队列分为工作区和超载块两部分,其中工作区大小由节点自身根据节点性能来确定,超载块大小统一设定成固定值,超载块数量可根据需要进行动态创建。节点接收url的时候,将优先将url添加到工作区,当工作区已满,则将url添加到超载块。节点负载等级的判断就依据节点拥有的超载块数目,如果节点没有超载块,则根据工作区可容纳多少超载块来确定其轻载等级,即为负数的负载等级。由于修改了节点路由通信协议,增加了节点负载等级的信息,每个节点可以定时地更新路由表中邻居节点的负载情况,作为负载转移的依据。当节点路由表更新后,节点判断自身的负载等级,如果负载等级大于零,则节点为重载节点,根据负载均衡算法进行超载块的转移,如果负载等级小于零,则节点为轻载节点,不做处理。其中,负载均衡算法为:先根据路由表的邻居节点距离信息划分节点区域,以新任务的加入不会导致该区域变成重载为依据,选择一个距离最近的节点区域;并以新任务的加入不会导致节点变成重载为依据,从该区域中选择一个最近的轻载节点。
参考图4可知,爬虫节点在更新路由表中的邻居节点的信息时,通过增加了节点负载等级信息,爬虫节点获知了邻居节点的负载情况。节点在更新完邻居节点的负载等级情况后,通过当前超载块的数量确定节点的重载等级。如果超载块为0,则不需要进行负载转移。如果当前超载块数量大于0,则计算当前工作区能容纳的超载块的数目,将超载块转移到当前工作区里进行处理,此时,如果剩余的超载块数量为0,则不需要进行负载转移,如果剩余的超载块数量大于0,则节点属于重载节点,将从邻居表中选择一个轻载节点进行负载转移。
选择轻载节点进行负载转移的方法如下:依次选择距离从近到远的k桶,计算重载节点的加入是否会导致该k桶内的负载等级之和超过预设值,如果会则查找下个k桶。当查找到第i个k桶,i超过了设定的k桶等级level时,将停止查找,直接选择最近的轻载节点作为转移节点,转移超载块;当没查到设定的k桶等级level时,就在选中的k桶中找寻一个轻载节点,使得轻载节点能与节点的重载等级匹配,即,两者的负载等级之和不超过预设值。
其中,超载块的大小统一设定成固定值,数量可根据需要动态创建,而工作区由节点根据自身的性能设定,一般设置成超载块大小的整数倍。
图5是爬虫节点处理节点加入和退出的工作流程图。url历史记录的转移是指节点动态变化时,节点存储的url历史记录将转移给当前负责该url的节点。其中,当新节点加入覆盖网并完成路由表的更新时,新节点找到一个离自身最接近的目标节点,向目标节点请求属于它的url历史记录。目标节点将自身存储的url历史记录中离新节点近的部分转移给新节点。当有节点正常退出覆盖网时,节点将查询到一个离它最接近的目标节点,将自身的所有url历史记录全部转移给目标节点。
参考图5可知,爬虫节点加入覆盖网时,首先按照kademlia算法进行路由表的初始化,然后查找最接近节点的目标节点,向目标节点请求属于自己部分的url历史记录,目标节点收到请求后,将检测本地的url历史记录,找出属于请求节点的部分,转移给该请求节点。节点收到目标节点转移来的url历史记录后,将添加到本地的url历史记录。
爬虫节点离开覆盖网时,首先查找最接近节点的目标节点,将本地的url历史记录全部转移给目标节点,当收到目标节点成功接收的回复后,则顺利退出覆盖网。
本领域技术人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。另外,软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种基于结构化对等网络p2p的分布式爬虫集群中的节点,所述节点包括底层覆盖网,基于p2p组织方式,执行节点间分发统一资源定位符url和接收url的协议;爬行模块,基于被分发的url,负责从互联网抓取对应的资源;控制中心,执行分发url和接收url的功能;其中,所述控制中心包括负载均衡模块,基于邻居节点的节点负载等级信息,确定任务转移;所述节点负载等级的判断是依据节点拥有的超载块数目,如果节点没有超载块,则根据工作区可容纳多少超载块来确定其轻载等级,即为负数的负载等级;当节点路由表更新后,节点判断自身的负载等级,如果负载等级大于零,则节点为重载节点,根据节点路由表的邻居节点距离信息划分节点区域,以新任务的加入不会导致该区域变成重载为依据,选择一个距离最近的节点区域;并以新任务的加入不会导致节点变成重载为依据,从该区域中选择一个最近的轻载节点;如果负载等级小于零,则节点为轻载节点,不做处理;节点加入模块,查找接近节点的目标,并且请求属于自己部分的url历史记录;节点退出模块,查找接近节点的目标节点,将本地的url历史记录转移给目标节点。
2.如权利要求1所述的节点,其中,控制中心包括分发url模块,对待分发的url进行哈希,获得关键字;底层覆盖网基于关键字查询目标节点的信息。
3.如权利要求2所述的节点,其中,分发url模块对待分发的url进行二次哈希,获得关键字;底层覆盖网基于关键字查询备份节点的信息。
4.如权利要求2或3所述的节点,其中,分发url模块接收目标节点和/或备份节点的回复。
5.如权利要求1所述的节点,其中,控制中心包括接收url模块,接收其它节点分发的url。
6.如权利要求1所述的节点,其中,控制中心包括url历史记录转移模块,检测本地的url历史记录,找出属于请求节点的部分,转移给该请求节点。
7.如权利要求1所述的节点,其中,节点的任务队列包括工作区和超载块两部分,负载均衡模块根据当前超载块的数量,以及当前工作区可容纳的超载块数量确定自己的负载等级。
8.如权利要求1所述的节点,其中,控制中心和/或爬行模块包括去重模块,根据url历史记录进行去重操作。
9.一种分布式爬虫集群系统,包括如权利要求1-8之一的节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310006486.5A CN103067521B (zh) | 2013-01-08 | 2013-01-08 | 一种分布式爬虫集群中的节点和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310006486.5A CN103067521B (zh) | 2013-01-08 | 2013-01-08 | 一种分布式爬虫集群中的节点和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103067521A CN103067521A (zh) | 2013-04-24 |
CN103067521B true CN103067521B (zh) | 2016-08-17 |
Family
ID=48109975
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310006486.5A Active CN103067521B (zh) | 2013-01-08 | 2013-01-08 | 一种分布式爬虫集群中的节点和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103067521B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103279507B (zh) * | 2013-05-16 | 2016-12-28 | 北京尚友通达信息技术有限公司 | 网页爬虫操作方法和系统 |
CN103559219B (zh) * | 2013-10-18 | 2016-12-07 | 北京京东尚科信息技术有限公司 | 分布式网络爬虫抓取任务调度方法、调度端设备及抓取节点 |
CN104038547B (zh) * | 2014-06-17 | 2017-04-12 | 中国人民解放军国防科学技术大学 | P2P网络中有效消解多Sybil节点渗透冲突的方法 |
CN104010003B (zh) * | 2014-06-18 | 2017-02-01 | 中国人民解放军国防科学技术大学 | 用于快速提升Sybil节点重要性的渗透方法 |
CN106528567B (zh) * | 2015-09-11 | 2019-11-12 | 北京国双科技有限公司 | 网络爬虫集群信息的更新方法和装置 |
CN107066530A (zh) * | 2017-03-01 | 2017-08-18 | 苏州朗动网络科技有限公司 | 一种数据刷新系统及数据刷新方法 |
CN106941537B (zh) * | 2017-05-05 | 2020-08-07 | 北京奇艺世纪科技有限公司 | 一种负载均衡方法及装置 |
WO2019061385A1 (zh) * | 2017-09-30 | 2019-04-04 | 麦格创科技(深圳)有限公司 | 分布式爬虫任务分配方法及系统 |
CN109190003B (zh) * | 2018-08-20 | 2021-03-02 | 上海蜜度信息技术有限公司 | 用于确定列表页节点的方法与设备 |
CN111104575B (zh) * | 2018-10-29 | 2023-05-05 | 阿里巴巴集团控股有限公司 | 数据抓取方法、装置及电子设备 |
CN113254747B (zh) * | 2021-06-09 | 2021-10-15 | 南京北斗创新应用科技研究院有限公司 | 基于分布式网络爬虫的地理空间数据获取系统及方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101499096A (zh) * | 2009-03-18 | 2009-08-05 | 北京邮电大学 | 分布式爬虫集群系统 |
CN101764807A (zh) * | 2009-12-16 | 2010-06-30 | 北京邮电大学 | 基于元搜索引擎的多源下载互联网资源的装置及方法 |
CN102314463A (zh) * | 2010-07-07 | 2012-01-11 | 北京瑞信在线系统技术有限公司 | 分布式爬虫系统及其提取网页数据的方法 |
-
2013
- 2013-01-08 CN CN201310006486.5A patent/CN103067521B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101499096A (zh) * | 2009-03-18 | 2009-08-05 | 北京邮电大学 | 分布式爬虫集群系统 |
CN101764807A (zh) * | 2009-12-16 | 2010-06-30 | 北京邮电大学 | 基于元搜索引擎的多源下载互联网资源的装置及方法 |
CN102314463A (zh) * | 2010-07-07 | 2012-01-11 | 北京瑞信在线系统技术有限公司 | 分布式爬虫系统及其提取网页数据的方法 |
Non-Patent Citations (1)
Title |
---|
分布式多主题网络爬虫系统的研究与实现;白鹤等;《计算机工程》;20091031;第35卷(第19期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN103067521A (zh) | 2013-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103067521B (zh) | 一种分布式爬虫集群中的节点和系统 | |
CN102055818B (zh) | 分布式智能dns库系统 | |
CN102047244B (zh) | 在内容分发网络(cdn)中处理长尾内容 | |
CN105224609B (zh) | 一种索引查询方法及装置 | |
US20110099226A1 (en) | Method of requesting for location information of resources on network, user node and server for the same | |
CN102917025B (zh) | 一种云计算平台的业务迁移方法 | |
CN104539681B (zh) | 分布式gis加速系统和gis服务的处理方法 | |
KR101942566B1 (ko) | 보안 감시 네트워크에서 정보데이터의 전송 및 캐싱 방법, 기록매체, 보안 감시 네트워크의 정보데이터 캐싱 장치, 그리고 보안 감시 네트워크 시스템 | |
US8250171B2 (en) | Content delivery apparatus, content delivery method, and content delivery program | |
CN101399688A (zh) | 一种分布式区域查找区间的发布方法及装置 | |
CN100407201C (zh) | 一种网络搜索系统及其实现方法 | |
CN102075359B (zh) | 一种基于网络坐标的服务器部署方法及装置 | |
CN101645919B (zh) | 一种基于流行度的副本等级计算方法及其副本放置方法 | |
CN101616184A (zh) | 冗余数据存储方法 | |
CN102420864B (zh) | 一种面向海量数据的数据交换方法 | |
CN105930345A (zh) | 基于分布式实时数据库的层次索引方法 | |
CN106202492A (zh) | 一种网络文件系统的元数据服务优化方法及系统 | |
CN101753405A (zh) | 集群服务器内存管理方法及其系统 | |
CN101854387B (zh) | 分布式索引服务器架构下的p2p流量优化方法和系统 | |
CN106528844A (zh) | 一种数据请求方法及装置和数据存储系统 | |
Moeini et al. | Efficient caching for peer-to-peer service discovery in Internet of Things | |
CN102378407B (zh) | 一种物联网中的对象名字解析系统及其解析方法 | |
CN102123161B (zh) | 一种分布式移动性管理的方法及分布式移动性管理系统 | |
CN101719155B (zh) | 一种支持分布式多集群计算环境的多维属性范围查询的方法 | |
CN104980493B (zh) | 一种基于主动缓存算法的发现服务方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210730 Address after: Room 1601, 16th floor, East Tower, Ximei building, No. 6, Changchun Road, high tech Industrial Development Zone, Zhengzhou, Henan 450001 Patentee after: Zhengzhou xinrand Network Technology Co.,Ltd. Address before: 100190, No. 21 West Fourth Ring Road, Beijing, Haidian District Patentee before: INSTITUTE OF ACOUSTICS, CHINESE ACADEMY OF SCIENCES |