基于执行器状态控制的分布式爬虫任务调度方法技术

技术编号:37986141 阅读:5 留言:0更新日期:2023-06-30 10:00
本发明专利技术公开了一种分布式爬虫系统中基于执行器状态控制的采集任务调度方法,主要解决现有技术中重点任务无法优先响应以及发生异常无法自处理的问题,其实现方案为:1)生成代理IP池;2)基于代理IP构建系统分布式采集执行器,并预设执行器状态转移机制;3)引入任务分级机制,生成带有优先级特征的任务,并根据执行器实时状态,将任务分发至各分布式采集执行器中;4)各执行器根据优先级顺序依次执行任务;5)定义执行器在执行任务过程中遇到的各类异常,并预设各类异常对应的自处理机制。本发明专利技术有效地提高了系统的执行效率,避免了由执行器异常造成的任务队列堵塞,提升了系统的可用性,可应用于互联网中多采集执行器的大型数据采集系统。采集系统。采集系统。

【技术实现步骤摘要】
基于执行器状态控制的分布式爬虫任务调度方法


[0001]本专利技术属于计算机
,特别涉及一种分布式爬虫任务调度方法,可应用于互联网中多采集执行器的大型数据采集系统。

技术介绍

[0002]互联网的高速发展使得大数据的应用越来越广泛,分布式爬虫技术愈来愈重要。爬虫系统常见的执行逻辑是:用户设置采集任务,根据预设的执行时间,系统实时配置执行脚本提交至执行器,执行器根据预设规则进行采集操作,返回结果。现有分布式爬虫系统对于任务调度机制的研究还不够成熟,纵使拥有较强的硬件资源支撑,若无法物尽其用,仍会造成系统算力的浪费,导致系统运行低效。现有的分布式爬虫任务调度方法主要通过预设的分配机制,根据执行器的硬件情况调度分发任务,这种方法虽然能够从节点层面宏观对资源进行分配调用,但是未考虑爬虫任务的特殊性,若节点即执行器发生异常,例如网络波动、IP封禁等,会导致队列中任务堆积,系统运行异常,引发较大的风险。
[0003]天津工业大学在其发表的论文“主动获取式的分布式网络爬虫集群方法研究”(主动获取式的分布式网络爬虫集群方法研究[J].计算机科学,2018,45(S1):428

432.)中公开了一种主动获取任务式的分布式网络爬虫方法。该方法的具体步骤是,第一步:选择配置较高的机器作为中控机器;第二步:为集群各子节点引入子节点控制模块;第三步:根据动态的双向优先级任务分配和调度算法,分配调度任务;第四步:对应节点执行任务,返回结果。该方法的节点能够主动识别异常,但由于未考虑异常处理流程,需要人工对节点异常进行排查和修复,极大的增加了人力成本,需要耗费较大的运维成本,可持续性低。
[0004]上海交通大学在其申请号为CN202010464671.9的专利文献中公开了一种“基于计算资源的分布式爬虫调度系统及方法”。其实现步骤是,第一步:通过客户端获取用户定义的爬虫方案以生成导航页爬虫种子并存储在Redis数据库中;第二步:爬虫生产者节点集群中的各节点计算自身资源获取导航页爬虫种子,并将所生成的内容页爬虫种子存储在客户端的Redis数据库中;第三步:爬虫消费者节点集群中的各个节点计算自身资源获取内容页爬虫种子,操作内容页爬虫种子采集目标数据。该方法由于只考虑系统计算资源进行任务调度,未考虑各执行器在实际运行时潜在的诸如IP封禁、网络波动这些不确定性风险,因而会造成执行器任务堆积,进而可能导致系统崩溃;同时该方法未区分任务等级,系统无法优先处理重要任务,可用性较低,无法适用于大型分布式爬虫系统的任务调度。

技术实现思路

[0005]本专利技术的目的在于针对上述现有技术的不足,提出一种基于执行器状态控制的分布式爬虫任务调度方法,以通过预设执行器异常自处理机制,降低人工运维成本,避免执行器异常造成的任务队列堵塞;通过引入任务分级机制,实现对采集任务的优先级分类。
[0006]实现本专利技术目的技术方案包括如下步骤:
[0007](1)生成代理IP池:
[0008]1a)在采集服务器中生成安全外壳协议SSH密钥对;
[0009]1b)购买n台VPS代理服务器,将SSH密钥对中的公钥分别添加至各VPS代理服务器/root/.ssh路径下的authorized_keys文件中;
[0010]1c)在采集服务器端发送SSH命令,通过SSH密钥对中的私钥,分别建立采集服务器与各代理服务器的远程连接,并存储这些代理服务器的IP地址构成代理IP池,再将各代理IP状态均设置为空闲Free,等待执行器后续调用;
[0011](2)构建系统分布式采集执行器:
[0012]2a)基于Selenium工具提供的WebDriver函数库,创建浏览器页面作为新的采集执行器,该执行器状态设置为新建New;
[0013]2b)执行器选取步骤1c)中Free状态的代理IP,建立该执行器与此代理服务器的SSH连接,并将执行器状态更新为初始化Initializing,将IP状态更新为忙碌Busy,再将执行器的流量出口地址设置为该代理IP,将执行器状态更新为空闲Idel,
[0014]得到一个基于代理IP的采集执行器;
[0015]2c)重复执行步骤2a)与2b),添加m个采集执行器,完成系统分布式采集执行器的构建,其中m小于n,以保证代理池IP数大于执行器数;
[0016](3)配置生成采集任务:
[0017]3a)根据互联网爬取目标特征,编写驱动执行器自动化执行的脚本,并设置任务运行的优先级,包括高、中、低三个级别;
[0018]3b)设置任务执行周期,并根据Cron表达式,定时生成记录任务相关信息的令牌Token,该信息包括执行脚本、运行优先级;
[0019](4)分发器调度任务:
[0020]4a)对生成的Token进行留档登记,根据Token的id字段进行去重操作后,再提交给采集系统中的分发器处理;
[0021]4b)分发器将接收到的Token分发至步骤(2)构建的系统分布式采集各执行器中;
[0022]4c)执行器得到Token后,根据该Token的优先级信息,将其添加至此执行器对应的高、中、低三个级别的优先级队列中;
[0023](5)执行器执行Token;
[0024](6)设定执行器执行Token过程中的各类异常包括:轻微异常、严重异常、挂起异常和损坏异常;
[0025](7)执行器对采集运行过程中发生的各类异常进行自动处理:
[0026]若发生轻微异常,则执行器将正在运行的Token重新提交至系统分发器,并对该轻微异常数值加一,执行步骤(8);
[0027]若发生严重异常,则执行器将其自身状态变更为关闭中Closing,断开SSH连接,将关联代理IP状态由Busy变更为Free,并添加至代理池中,执行步骤(10);
[0028]若发生挂起异常,则执行器进入休眠,系统发出通知等待用户对系统或浏览器进行人工操作,执行步骤(11);
[0029]若发送损坏异常,则执行器变更为Broken状态,检视该执行器队列中Token,重新提交至系统分发器发送通知,由管理员从采集服务器层级删除该执行器进程;
[0030](8)判断异常数值是否达到十:
[0031]若轻微异常值小于十,则返回步骤(5);
[0032]若轻微异常数等于十,则更换执行器关联IP,即断开执行器SSH连接,将代理IP状态变更为Frozen,执行步骤(9);
[0033](9)判断代理池中是否存在Free状态IP:
[0034]若不存在,则执行器进入挂起异常;
[0035]若存在,则重新选取代理池中Free状态IP,重置该执行器轻微异常数为零,返回步骤(5);
[0036](10)执行器进入终结Terminated状态,删除执行器驱动,返回执行步骤2a),并保留执行队列;
[0037](11)用户触发执行器,执行器接续执行当前Token的后续步骤。<本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于执行器状态控制的分布式爬虫任务调度方法,其特征在于,包括如下步骤:(1)生成代理IP池:1a)在采集服务器中生成安全外壳协议SSH密钥对;1b)购买n台VPS代理服务器,将SSH密钥对中的公钥分别添加至各VPS代理服务器/root/.ssh路径下的authorized_keys文件中;1c)在采集服务器端发送SSH命令,通过SSH密钥对中的私钥,分别建立采集服务器与各代理服务器的远程连接,并存储这些代理服务器的IP地址构成代理IP池,再将各代理IP状态均设置为空闲Free,等待执行器后续调用;(2)构建系统分布式采集执行器:2a)基于Selenium工具提供的WebDriver函数库,创建浏览器页面作为新的采集执行器,该执行器状态设置为新建New;2b)执行器选取步骤1c)中Free状态的代理IP,建立该执行器与此代理服务器的SSH连接,并将执行器状态更新为初始化Initializing,将IP状态更新为忙碌Busy,再将执行器的流量出口地址设置为该代理IP,将执行器状态更新为空闲Idel,得到一个基于代理IP的采集执行器;2c)重复执行步骤2a)与2b),添加m个采集执行器,完成系统分布式采集执行器的构建,其中m小于n,以保证代理池IP数大于执行器数;(3)配置生成采集任务:3a)根据互联网爬取目标特征,编写驱动执行器自动化执行的脚本,并设置任务运行的优先级,包括高、中、低三个级别;3b)设置任务执行周期,并根据Cron表达式,定时生成记录任务相关信息的令牌Token,该信息包括执行脚本、运行优先级;(4)分发器调度任务:4a)对生成的Token进行留档登记,根据Token的id字段进行去重操作后,再提交给采集系统中的分发器处理;4b)分发器将接收到的Token分发至步骤(2)构建的系统分布式采集各执行器中;4c)执行器得到Token后,根据该Token的优先级信息,将其添加至此执行器对应的高、中、低三个级别的优先级队列中;(5)执行器执行Token;(6)设定执行器执行Token过程中的各类异常包括:轻微异常、严重异常、挂起异常和损坏异常;(7)执行器对采集运行过程中发生的各类异常进行自动处理:若发生轻微异常,则执行器将正在运行的Token重新提交至系统分发器,并对该轻微异常数值加一,执行步骤(8);若发生严重异常,则执行器将其自身状态变更为关闭中Closing,断开SSH连接,将关联代理IP状态由Busy变更为Free,并添加至代理池中,执行步骤(10);若发生挂起异常,则执行器进入休眠,系统发出通知等待用户对系统或浏览器进行人工操作,执行步骤(11);若发送损坏异常,则执行器变更为Broken状态,检视该执行器队列中Token,重新提交
至...

【专利技术属性】
技术研发人员:吴家骥景贺铭尚坤谭铭洲屈檀李伟杰游海波
申请(专利权)人:西安电子科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1