一种网络负载均衡的多代理分布式爬虫系统和方法与流程

文档序号:15752031发布日期:2018-10-26 17:57阅读:175来源:国知局
一种网络负载均衡的多代理分布式爬虫系统和方法与流程

本发明涉及一种网络负载均衡的多代理分布式爬虫系统和方法,属于互联网技术领域。



背景技术:

随着互联网技术的发展,web站点日益增多,伴随着分布式技术的迅猛发展,web站点的部署已逐渐趋于多主机化,不仅仅在同一个物理位置区域。与此同时,为了保护自己的网站数据,反爬虫技术也日益加强,越来越多的反爬虫机制给爬虫系统造成的麻烦越来越多。因此,爬虫系统的爬取方式也从单点发展至分布式,以便更快速的爬取数据,此外,代理节点技术也是一个很好的抵御反爬虫技术的方式。

但是在这个过程中,由于网络负载的问题、代理节点的可用性问题、代理节点的的工作效率问题,将导致爬虫任务的低效率。

因此,亟待提供一种能够充分均衡网络负载的高效、稳定的分布式爬虫系统解决方案。



技术实现要素:

本发明所要解决的技术问题是克服现有技术的缺陷,提供一种能够均衡网络负载、高效、稳定的分布式爬虫系统。

为解决上述技术问题,本发明提供一种网络负载均衡的多代理分布式爬虫系统,包括多个代理节点,所述多个代理节点被配置为执行爬虫任务并返回爬行结果,其特征是,包括:

数据计算模块,被配置为计算任务的权重并根据计算结果筛选出新种子;

中心控制模块,被配置为根据代理节点选择算法选定代理节点并将任务下发至选定代理节点实现网络负载均衡;中心控制模块被进一步配置为:根据任务的权重、任务的特征、代理节点的负载情况计算节点的等待参数,然后将任务下发给等待参数最小的代理节点。

代理节点获取模块,被配置为获取可被使用的代理节点并向代理节点提交新代理节点;

代理节点监控模块,被配置为监控可用代理节点的生存状态及考核代理节点获取模块提交的新代理节点的可用性。

进一步地,所述中心控制模块,被进一步配置为:管理员对系统进行控制,其中系统控制包括启动系统、关闭系统、注入初始种子、请求新可用代理节点、维护节点池、存储代理节点的状态信息、向代理节点监控模块发出节点监控命令以及选择代理节点并分配任务给代理节点。

进一步地,还包括:数据存储模块,被配置为将数据爬取结果进行存储。

在另一方面本发明要解决的技术问题是提供一种有较好的抵御反爬虫系统能力的分布式爬虫系统解决方案,为解决此技术问题,本发明系统进一步包括:

所述中心控制模块与代理节点监控模块被配置为配合完成监控所有当前存活的代理节点的任务;进一步地,中心控制模块被配置为在监控间隔时间范围内随机向代理节点监控模块发出监控命令,代理节点监控模块将在接收命令后,对指定代理节点进行监控;

所述代理节点监控模块,被配置为将代理节点的状态信息提交给中心控制模块;进一步地,还被配置为监控代理节点获取模块所提交的新代理节点,若返回时间小于允许最大返回值,则视为可用,代理节点监控模块将此新代理节点的状态信息提交给中心控制模块,中心控制模块将更新该节点的状态信息,否则将丢弃。

在另一方面,本发明提供一种网络负载均衡的多代理分布式爬虫方法,其特征在于,包括:

计算任务的权重并根据计算结果筛选出新种子;

根据代理节点选择算法选定代理节点并将任务下发至选定代理节点实现网络负载均衡。

进一步地,计算任务的权重时计算公式如下:

其中,i为被计算的节点,weighti为任务权重,weightmax为允许的最大任务权重,weightmin为允许的最小任务权重,ri为任务的轮次,r为管理员设定的轮次阀值,即当当前轮次大于阀值时,爬虫效率将大幅度下降。

更进一步地,当一次爬取成功后筛选出的新种子的ri将加1实现自增,初始种子的任务轮次ri为0,表达式如下:

其中,rparent为当前已完成任务的轮次。

进一步地,当轮次ri达到预设值时,丢弃该爬虫节点并不再下发该爬虫节点引入的种子。

进一步地,根据代理节点选择算法选定代理节点时包括根据任务的权重、任务的特征、代理节点的负载情况计算节点的等待参数,等待参数最小的代理节点将被选中,其中计算代理节点的等待参数的方法包括以下步骤:

(1)计算代理节点i的等待工作队列长度qi,且允许的最大队列长度为qmax,若队列已满,则考查下一个备选代理节点;

(2)计算任务k的目标服务器与各代理节点i之间的物理距离di,并通过历史工作记录表查询出该物理距离的工作次数ci及响应的平均返回时间ti,若ti为负,则视为不可选;

(3)计算代理节点i已工作次数worki;

(4)计算代理节点的等待参数ai由下述公式计算:

其中m,n,p为常数。

优选地,还包括若被分配的代理节点无法完成爬取任务,则重新分配代理节点,且该任务的权重将加1;无论爬取是否成功,都会更新该代理节点所对应的状态信息;若爬取失败,则该代理节点的历史工作记录表中将所对应的,记录该代理节点与任务目标服务器之间的距离d的记录的平均返回时间设为-1表示不可选。

优选地,计算任务k的目标服务器与各代理节点i之间的物理距离di时包含计算任务k的服务器经纬度(j0,w0)并计算所有可用节点i经纬度(j1,w1)与服务器经纬度之间的距离di,表达式如下:

其中r为地球半径。

本发明所达到的有益效果:本发明根据网络负载均衡的代理节点选择算法在实现各代理节点网络负载均衡的基础上选择物理距离最近、等待时间最短、响应最快、成功概率最高的代理节点,可以更好的完成数据爬虫任务;另一方面,本发明能够基于代理节点技术通过中心控制模块和代理节点监控模块的协作,有较好的抵御反爬虫系统能力。

附图说明

图1为本发明分布式爬虫系统的模块框架图;

图2为本发明方法中网络负载均衡的代理节点选择算法的流程图。

具体实施方式

下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。

实施例1

图1示出了本发明分布式爬虫系统的模块框架图;如图1所示,本实施例提供一种多节点的网络负载均衡的分布式爬虫系统,主要由7个模块组成,分别是:中心控制模块、数据计算模块、数据存储模块、代理节点监控模块、代理节点获取模块和各代理节点。

其中,中心控制模块被配置为由管理者注入初始种子,具体地,管理者可不定时、多次向其添加初始种子,所有爬虫任务均基于这些初始种子展开,且中心控制模块将实现对整个爬虫系统的运行控制。

数据计算模块被配置为用于计算任务的权重,计算爬取结果并筛选出新种子,将合法爬取结果存入数据存储模块。具体地,当数据计算模块根据带权任务提交中心控制模块,中心控制模块会根据权重进行任务的处理,权重越高,则将被优先处理。此外,数据计算模块被配置为从代理节点返回的数据中筛选出新的种子,且该种子的任务轮次为当前任务的轮次加1。当轮次ri达到某一定值时,可认为该爬虫节点已无意义,可丢弃,并不再下发该爬虫节点引入的种子。

数据存储模块被配置用于存储数据库,采用mysql存储任务抓取数据结果。采用本地磁盘存储任务抓取的文字、图片、文件。

中心控制模块被配置的功能包括但不限于启动系统、关闭系统、注入初始种子、用于请求新可用节点、用于维护代理节点池、用于存储代理节点的状态消息、用于向代理节点监控模块发出节点监控命令以及用于选择代理节点并分配任务给代理节点。具体地,中心控制模块作为整个系统的用户级控制终端,可以由管理员对系统进行控制,且可以通过管理者注入初始种子,初始种子的任务轮次记为0,即r=0。具体地,管理者可以不定时的向中心控制模块注入新初始种子,以达到更高的效率。具体地,当代理节点池中的代理节点较少时,中心控制模块将向代理节点获取模块发出请求新可用节点命令,代理节点获取模块在接收命令后将去获取新可用节点。

优选地,维护代理节点池的实现流程为:当代理节点监控模块提交节点监控结果时,首先判断该被监控节点是否已经添加入代理节点池,若未添加,则将该节点加入代理节点池,若已添加,则更新节点状态。维护代理节点池的工作,将在系统启动时并行启动,将在代理节点加入代理池的某一范围内的随机时间后,由代理节点监控进行监测,并将监测结果提交至中心控制模块。

优选地,存储代理节点的状态信息包括:(1)节点监测状态,包括可用、失效等;(2)等待工作队列;(3)ip,包括端口;(4)节点经纬度(j,w);(5)加入代理节点池的时间;(6)最近工作时间;(7)已工作次数;(8)最近监测时间;(9)历史工作记录表。其中,工作记录表中记录的对应字段为(d,c,t),d为与节点的物理距离,c为该物理距离的工作次数,t为响应的平均返回时间。当收到新代理节点后,将新建代理节点,并初始化代理节点的状态信息,包括节点监测状态、ip、节点经纬度,其余状态信息按空数据或空队列进行初始化。当代理节点每次被监测完成后,将更新节点监测状态、最近监测时间。当代理节点每次完成爬虫工作后,代理节点状态将更新历史工作记录表、已工作次数。

具体地,在接到数据计算模块提交的任务后,中心控制模块将从代理节点池中根据网络负载均衡的代理节点选择算法挑选出最优工作节点,然后将任务下发至该代理节点。

代理节点监控模块用于监控可用代理节点的生存状态及考核新代理节点的可用性。具体地,当代理节点获取模块提交新代理节点后,代理节点监控模块将对新节点进行考核,若考核通过,则提交监控结果给中心控制模块,该节点将成为可用节点,若考核不通过,则将被丢弃。同时,还需要对所有可用节点进行监控,并将监控结果提交至中心控制模块,以测试代理节点的持续可用性。

代理节点获取模块用于从网络代理节点提供商获取代理节点信息,并将获取的代理节点信息提交给代理节点监控模块。具体地,代理节点获取模块可以通过多代理节点运营商获取数据,亦可在获取代理节点后首先根据ip地址过滤掉已提交代理节点监控模块的代理节点或过滤掉重复的代理节点,以减少代理节点监控模块的工作负载并提高本模块的工作效率。

各代理节点用于执行爬虫任务并将结果反馈给数据计算模块。具体地,各代理节点会通过网络请求的方式对目标进行数据爬取,若爬取成功,则将爬取结果提交至数据计算模块,若爬取失败,则将爬取失败信息反馈中心控制模块,以便中心控制模块重新分发任务给其余代理节点。

实施例2

图2示出了本发明方法中网络负载均衡的代理节点选择算法的流程图;

如图2所示,本实施例提供了网络负载均衡的代理节点选择算法,是一种能满足网络负载均衡要求的选择最优代理节点的工作方法。主要在中心控制模块进行实现。

当中心控制模块接收到数据计算模块提交的任务后,将遍历代理节点池,以找到一个备选代理节点。

当选择某个备选代理节点时,首先判断代理节点中的等待工作队列是否已达到最大允许队列长度,如果已达到最大允许队列长度,则继续遍历代理节点池,否则,获取目标的物理位置、工作次数等状态信息,并计算求出备选代理节点等待参数。若等待参数优于待定最优代理节点的等待参数,则将当前备选代理节点设置为待定最优代理节点,并继续遍历代理节点池。当代理节点池的遍历工作完成后,那么当前待定最优代理节点即被选中的最优代理节点。将任务下发至该最优代理节点,选择工作结束。

具体地,计算代理节点的等待参数ai的计算公式如下:

其中m,n,p为常数,

其中,ai为等待参数,ti为该物理距离响应的平均返回时间,ci为该物理距离的工作次数,worki为该代理节点的已工作次数,qi为该代理节点的等待工作队列长度。

具体地,计算任务k的服务器经纬度(j0,w0),并计算所有可用节点i经纬度(j1,w1)与服务器经纬度之间的距离di,且di由haversine公式计算,haversine公式如下:

其中r为地球半径。

需要说明的是上述实施例,并非用来限定本发明的保护范围,在上述技术方案的基础上所作出的等同变换或替代,仍落在本专利的专利范围内。

本发明方案所公开的技术手段不仅限于上述实施方式所公开的技术手段,还包括由以上技术特征任意组合所组成的技术方案。应当指出,对于本技术领域的技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1