CN109522469B - 一种分布式爬虫的调度管理方法 - Google Patents

一种分布式爬虫的调度管理方法 Download PDF

Info

Publication number
CN109522469B
CN109522469B CN201811620979.7A CN201811620979A CN109522469B CN 109522469 B CN109522469 B CN 109522469B CN 201811620979 A CN201811620979 A CN 201811620979A CN 109522469 B CN109522469 B CN 109522469B
Authority
CN
China
Prior art keywords
node
scheduling
crawler
nodes
heartbeat
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
Application number
CN201811620979.7A
Other languages
English (en)
Other versions
CN109522469A (zh
Inventor
杨胜华
宋设
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Software Group Co Ltd
Original Assignee
Inspur Software Group Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Inspur Software Group Co Ltd filed Critical Inspur Software Group Co Ltd
Priority to CN201811620979.7A priority Critical patent/CN109522469B/zh
Publication of CN109522469A publication Critical patent/CN109522469A/zh
Application granted granted Critical
Publication of CN109522469B publication Critical patent/CN109522469B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明提供一种分布式爬虫的调度管理方法,属于调度管理技术领域,该方法将爬虫进程调度和爬虫任务调度包装在爬虫心跳中,将心跳信息反馈给基于zookeeper集群搭建的中心节点,通过中心节点判断是否有调度节点或心跳节点发生异常,在有调度节点或心跳节点发生异常时,中心节点进行调度节点或心跳节点的调度管理,解决现有调度管理方法在调度节点宕机时不能及时调整与所对应的爬虫节点的链接,造成爬虫节点资源的浪费的问题,同时,解决现有调度管理方法在爬虫节点宕机时不能及时释放调度节点的连接,造成调度节点程序的资源浪费的问题。

Description

一种分布式爬虫的调度管理方法
技术领域
本发明涉及调度管理技术领域,具体地说是一种分布式爬虫的调度管理方法。
背景技术
申请号为2017104750301、名称为“一种推拉结合的分布式云端并发采集方法”的发明专利申请,其通过RPC实现推模式和拉模式两种远程调用方式;其中,推模式是采用云端接收采集服务端定时通过RPC推送的消息,完成配置发送以及已下载网页的回收,拉模式石材机云端定时向采集调度模块发起请求,计算所需的网页数量并从采集调度模块提供的API接口拉取采集所需的网页。该方法采集云端根据自己的运行情况去请求待下载URL,从而有效的避免待下载URL堆积的推拉结合,具有很好的推广价值。
发明专利申请“一种推拉结合的分布式云端并发采集方法”中还提出一种调度方案,包括节点调度和任务调度,该调度方案缺乏对节点的调度,在调度节点宕机时,不能及时调整与所对应的爬虫节点的链接,造成爬虫节点资源的浪费;在爬虫节点宕机时不能及时释放调度节点的连接,造成调度节点程序的资源浪费。
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。
RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行
发明内容
本发明的技术任务是解决现有技术的不足,提供一种分布式爬虫的调度管理方法,解决现有调度管理方法在调度节点宕机时不能及时调整与所对应的爬虫节点的链接,造成爬虫节点资源的浪费的问题,同时,解决现有调度管理方法在爬虫节点宕机时不能及时释放调度节点的连接,造成调度节点程序的资源浪费的问题。
本发明解决其技术问题所采用的技术方案是:
一种分布式爬虫的调度管理方法,该方法将爬虫进程调度和爬虫任务调度包装在爬虫心跳中,将心跳信息反馈给基于zookeeper集群搭建的中心节点,通过中心节点判断是否有调度节点或心跳节点发生异常,在有调度节点或心跳节点发生异常时,中心节点进行调度节点或心跳节点的调度管理。
具体的,所涉及爬虫进程调度包括:
1)将调度节点和爬虫节点分别注册到基于zookeeper集群搭建的中心节点;
2)中心节点按照上线的调度节点和爬虫节点的数量进行资源调度,建立调度节点和爬虫节点的对应关系;
3)调度节点与分配的爬虫节点之间建立心跳,且一个爬虫节点一次只与一个调度节点之间建立心跳;
4)如果调度节点与分配的爬虫节点之间的心跳断开,中心节点判定调度节点或爬虫节点发生异常,并对发生异常的调度节点或爬虫节点进行处理;
5)如果调度节点与分配的爬虫节点之间的心跳正常,中心节点查看是否有充足的待下载爬虫节点。
具体的,所涉及爬虫节点为下载网页的节点,调度节点为向爬虫发送待下载网页、任务状态、任务配置、回收已下载网页的节点。
可选的,调度节点向分配的爬虫节点发送RPC数据包请求,爬虫节点接收到RPC数据包后向调度节点发送的RPC数据包响应,调度节点与爬虫节点完成一次RPC心跳的过程。
可选的,根据上线爬虫节点的数量和上线调度节点的数量进行均匀分配,且一个上线调度节点至少分配一个上线爬虫节点。
可选的,调度节点与分配的爬虫节点之间的心跳断开,中心节点认为节点发生异常,随后,中心节点根据监控信息认定异常节点的类型:
如果调度节点为异常节点,则将该调度节点下的所有爬虫节点重新分配;
如果爬虫节点为异常节点,则将该爬虫节点从调度节点下移除。由此实现了节点调度管理,避免了爬虫节点资源的浪费,提高资源利用率的同时提升采集效率。
可选的,中心节点查看是否有充足的待下载爬虫节点,并进一步操作:
如果待下载爬虫节点不充足,则调整调度节点的发送频率;
如果待下载爬虫节点充足,则继续查看爬虫节点的回收是否及时,以此来决定是否调整调度节点的回收频率。
具体的,所涉及爬虫任务调度包括:
1)调度节点通过心跳通知爬虫节点任务状态变更;
2)爬虫节点接收到任务变更,设定任务状态,判断变更类型,如果是停止,则将爬虫节点内所有该任务的待下载网页进行清理。由此实现了更高效的爬虫任务管理,避免了原来一次任务状态变更通信修改不成功的情况。
本发明的一种分布式爬虫的调度管理方法与现有技术相比所产生的有益效果是:
1)本发明的分布式爬虫的调度管理方法将爬虫进程调度和爬虫任务调度包装在爬虫心跳中,将心跳信息反馈给基于zookeeper集群搭建的中心节点,通过中心节点判断是否有调度节点或心跳节点发生异常,在有调度节点或心跳节点发生异常时,中心节点进行调度节点或心跳节点的调度管理,解决现有调度管理方法在调度节点宕机时不能及时调整与所对应的爬虫节点的链接,造成爬虫节点资源的浪费的问题,同时,解决现有调度管理方法在爬虫节点宕机时不能及时释放调度节点的连接,造成调度节点程序的资源浪费的问题;
2)本发明的分布式爬虫的调度管理方法实施过程中,如果调度节点与分配的爬虫节点之间的心跳断开,中心节点认为节点发生异常,随后,中心节点根据监控信息认定异常节点为调度节点或爬虫节点,根据异常节点不同采取进行不同的操作,由此实现节点调度管理,避免爬虫节点资源的浪费,提高资源利用率的同时提升采集效率;另外,在爬虫任务调度阶段,爬虫节点接收到任务停止的信息后,将爬虫节点内所有该任务的待下载网页进行清理,由此实现了更高效的爬虫任务管理,避免了原来一次任务状态变更通信修改不成功的情况;
3)本发明的分布式爬虫的调度管理方法可以在云端网络不稳定情况下对爬虫进程的管理,将爬虫进程存活情况通过心跳返回;本发明的分布式爬虫的调度管理方法还可以对爬虫进程中任务执行情况进行准确跟踪,通过心跳返回进程内部任务数据,由中心节点做出调整,避免了爬虫节点资源的浪费,提高资源利用率的同时提升采集效率。
附图说明
附图1是本实施例中爬虫进程调度的流程框图;
附图2是本实施例中爬虫任务调度的流程框图。
具体实施方式
为使本发明的技术方案、解决的技术问题和技术效果更加清楚明白,以下结合具体实施例,对本发明的技术方案进行清查、完整的描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下获得的所有实施例,都在本发明的保护范围之内。
实施例一:
本实施例提供一种分布式爬虫的调度管理方法,该方法将爬虫进程调度和爬虫任务调度包装在爬虫心跳中,将心跳信息反馈给基于zookeeper集群搭建的中心节点,通过中心节点判断是否有调度节点或心跳节点发生异常,在有调度节点或心跳节点发生异常时,中心节点进行调度节点或心跳节点的调度管理。
在本实施例中,如附图1所示,所涉及爬虫进程调度包括:
1)将调度节点和爬虫节点分别注册到基于zookeeper集群搭建的中心节点;
2)中心节点按照上线的调度节点和爬虫节点的数量进行资源调度,建立调度节点和爬虫节点的对应关系;
3)调度节点与分配的爬虫节点之间建立心跳,且一个爬虫节点一次只与一个调度节点之间建立心跳;
4)如果调度节点与分配的爬虫节点之间的心跳断开,中心节点判定调度节点或爬虫节点发生异常,并对发生异常的调度节点或爬虫节点进行处理;
5)如果调度节点与分配的爬虫节点之间的心跳正常,中心节点查看是否有充足的待下载爬虫节点。
在本实施例中,所涉及爬虫节点为下载网页的节点,调度节点为向爬虫发送待下载网页、任务状态、任务配置、回收已下载网页的节点。
在本实施例中,调度节点向分配的爬虫节点发送RPC数据包请求,爬虫节点接收到RPC数据包后向调度节点发送的RPC数据包响应,调度节点与爬虫节点完成一次RPC心跳的过程。
在本实施例中,根据上线爬虫节点的数量和上线调度节点的数量进行均匀分配,且一个上线调度节点至少分配一个上线爬虫节点。
在本实施例中,调度节点与分配的爬虫节点之间的心跳断开,中心节点认为节点发生异常,随后,中心节点根据监控信息认定异常节点的类型:
如果调度节点为异常节点,则将该调度节点下的所有爬虫节点重新分配;
如果爬虫节点为异常节点,则将该爬虫节点从调度节点下移除。由此实现了节点调度管理,避免了爬虫节点资源的浪费,提高资源利用率的同时提升采集效率。
在本实施例中,中心节点查看是否有充足的待下载爬虫节点,并进一步操作:
如果待下载爬虫节点不充足,则调整调度节点的发送频率;
如果待下载爬虫节点充足,则继续查看爬虫节点的回收是否及时,以此来决定是否调整调度节点的回收频率。
在本实施例中,如附图2所示,所涉及爬虫任务调度包括:
1)调度节点通过心跳通知爬虫节点任务状态变更;
2)爬虫节点接收到任务变更,设定任务状态,判断变更类型,如果是停止,则将爬虫节点内所有该任务的待下载网页进行清理。由此实现了更高效的爬虫任务管理,避免了原来一次任务状态变更通信修改不成功的情况。
本实施例的分布式爬虫的调度管理方法,解决了现有调度管理方法在调度节点宕机时不能及时调整与所对应的爬虫节点的链接,造成爬虫节点资源的浪费的问题,同时,解决了现有调度管理方法在爬虫节点宕机时不能及时释放调度节点的连接,造成调度节点程序的资源浪费的问题。
本实施例的分布式爬虫的调度管理方法,可以在云端网络不稳定情况下对爬虫进程的管理,将爬虫进程存活情况通过心跳返回;本发明的分布式爬虫的调度管理方法还可以对爬虫进程中任务执行情况进行准确跟踪,通过心跳返回进程内部任务数据,由中心节点做出调整,避免了爬虫节点资源的浪费,提高资源利用率的同时提升采集效率。
以上应用具体个例对本发明的原理及实施方式进行了详细阐述,这些实施例只是用于帮助理解本发明的核心技术内容,并不用于限制本发明的保护范围,本发明的技术方案不限制于上述具体实施方式内。基于本发明的上述具体实施例,本技术领域的技术人员在不脱离本发明原理的前提下,对本发明所作出的任何改进和修饰,皆应落入本发明的专利保护范围。

Claims (5)

1.一种分布式爬虫的调度管理方法,其特征在于,该方法包括:
将爬虫进程调度和爬虫任务调度包装在爬虫心跳中,其中,爬虫进程调度包括:1)将调度节点和爬虫节点分别注册到基于zookeeper集群搭建的中心节点,2)中心节点按照上线的调度节点和爬虫节点的数量进行资源调度,建立调度节点和爬虫节点的对应关系,3)调度节点与分配的爬虫节点之间建立心跳,且一个爬虫节点一次只与一个调度节点之间建立心跳,4)如果调度节点与分配的爬虫节点之间的心跳断开,中心节点判定调度节点或爬虫节点发生异常,并对发生异常的调度节点或爬虫节点进行处理,5)如果调度节点与分配的爬虫节点之间的心跳正常,中心节点查看是否有充足的待下载爬虫节点;爬虫任务调度包括:1)调度节点通过心跳通知爬虫节点任务状态变更,2)爬虫节点接收到任务变更,设定任务状态,判断变更类型,如果是停止,则将爬虫节点内所有该任务的待下载网页进行清理;
将心跳信息反馈给基于zookeeper集群搭建的中心节点,通过中心节点判断是否有调度节点或心跳节点发生异常;
在有调度节点或心跳节点发生异常时,中心节点进行调度节点或心跳节点的调度管理,这一过程中,调度节点与分配的爬虫节点之间的心跳断开时,中心节点认为节点发生异常,随后,中心节点根据监控信息认定异常节点的类型:
如果调度节点为异常节点,则将该调度节点下的所有爬虫节点重新分配,
如果爬虫节点为异常节点,则将该爬虫节点从调度节点下移除。
2.根据权利要求1所述的一种分布式爬虫的调度管理方法,其特征在于,爬虫节点为下载网页的节点,调度节点为向爬虫发送待下载网页、任务状态、任务配置、回收已下载网页的节点。
3.根据权利要求1所述的一种分布式爬虫的调度管理方法,其特征在于,调度节点向分配的爬虫节点发送RPC数据包请求,爬虫节点接收到RPC数据包后向调度节点发送的RPC数据包响应,调度节点与爬虫节点完成一次RPC心跳的过程。
4.根据权利要求3所述的一种分布式爬虫的调度管理方法,其特征在于,根据上线爬虫节点的数量和上线调度节点的数量进行均匀分配,且一个上线调度节点至少分配一个上线爬虫节点。
5.据权利要求1所述的一种分布式爬虫的调度管理方法,其特征在于,中心节点查看是否有充足的待下载爬虫节点,并进一步操作:
如果待下载爬虫节点不充足,则调整调度节点的发送频率;
如果待下载爬虫节点充足,则继续查看爬虫节点的回收是否及时,以此来决定是否调整调度节点的回收频率。
CN201811620979.7A 2018-12-28 2018-12-28 一种分布式爬虫的调度管理方法 Active CN109522469B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811620979.7A CN109522469B (zh) 2018-12-28 2018-12-28 一种分布式爬虫的调度管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811620979.7A CN109522469B (zh) 2018-12-28 2018-12-28 一种分布式爬虫的调度管理方法

Publications (2)

Publication Number Publication Date
CN109522469A CN109522469A (zh) 2019-03-26
CN109522469B true CN109522469B (zh) 2023-06-06

Family

ID=65797737

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811620979.7A Active CN109522469B (zh) 2018-12-28 2018-12-28 一种分布式爬虫的调度管理方法

Country Status (1)

Country Link
CN (1) CN109522469B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111026947B (zh) * 2019-12-18 2022-08-12 烽火通信科技股份有限公司 一种爬虫方法以及基于浏览器的嵌入式爬虫实现方法
CN112231538B (zh) * 2020-12-15 2021-05-14 中移(苏州)软件技术有限公司 更新调度任务队列的方法及装置、设备、存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106657228A (zh) * 2016-09-27 2017-05-10 山东浪潮云服务信息科技有限公司 一种利用云端进行并发采集的爬虫实现方法
WO2017113687A1 (zh) * 2015-12-28 2017-07-06 乐视控股(北京)有限公司 爬虫系统及方法
CN107071009A (zh) * 2017-03-28 2017-08-18 江苏飞搏软件股份有限公司 一种负载均衡的分布式大数据爬虫系统
CN108205541A (zh) * 2016-12-16 2018-06-26 北大方正集团有限公司 分布式网络爬虫任务的调度方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017113687A1 (zh) * 2015-12-28 2017-07-06 乐视控股(北京)有限公司 爬虫系统及方法
CN106657228A (zh) * 2016-09-27 2017-05-10 山东浪潮云服务信息科技有限公司 一种利用云端进行并发采集的爬虫实现方法
CN108205541A (zh) * 2016-12-16 2018-06-26 北大方正集团有限公司 分布式网络爬虫任务的调度方法及装置
CN107071009A (zh) * 2017-03-28 2017-08-18 江苏飞搏软件股份有限公司 一种负载均衡的分布式大数据爬虫系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
一种基于Redis的分布式爬虫系统设计与实现;罗娇敏等;《软件》;20171015(第10期);全文 *

Also Published As

Publication number Publication date
CN109522469A (zh) 2019-03-26

Similar Documents

Publication Publication Date Title
CN102710554B (zh) 分布式消息系统和分布式消息系统的服务状态检测方法
CN110933154A (zh) 一种面向污水处理物联网应用的边云数据协同方法及系统
CN103945003A (zh) 一种WebRTC客户端连接动态自适应选择的方法
CN109522469B (zh) 一种分布式爬虫的调度管理方法
CN102035893A (zh) 一种服务器主动推送数据的方法和系统
CN105721512A (zh) 一种远程过程调用系统及其方法
CN103051551A (zh) 一种分布式系统及其自动维护方法
CN102945169A (zh) 一种基于Android的Native APP融合Web APP开发系统
CN104917833A (zh) 一种基于nio请求的异步信息处理方法
CN102215266B (zh) 持久化服务的实现方法及持久化服务系统
CN108924228B (zh) 基于边缘计算的工业互联网优化系统
CN104852991A (zh) 分布式推送服务器系统及应用该系统的数据推送方法
CN102629939A (zh) 电力企业服务总线实现方法及装置
CN105391536A (zh) 一种客户端和服务端进行通信的方法及装置
WO2022267646A1 (zh) 一种容器集的部署方法及装置
CN108833577A (zh) 基于边缘计算的数据通信优化系统及方法
WO2017004990A1 (zh) 消息推送方法及装置
CN101599921A (zh) 一种企业即时通信系统及其文件传输方法
CN103001962B (zh) 业务支撑方法和系统
CN108111630B (zh) 一种Zookeeper集群系统及其连接方法和系统
CN112511595B (zh) 一种消息推送方法及消息服务系统
CN101102333A (zh) 网络下载系统与方法
CN112291180A (zh) 一种消息负载均衡的方法
CN111343220A (zh) 转发器、分布式文件传输方法、系统、介质及电子设备
CN102291326B (zh) 一种终端及其即时通讯应用的管理方法及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant