数据采集方法、装置及存储介质
技术领域
本发明涉及通信技术领域,尤其涉及一种数据采集方法、装置及存储介质。
背景技术
数据采集需要依赖的最主要资源是带宽、IP地址、处理器与内存,在硬件资源相对低廉的情况下处理器与内存不会成为限制采集***规模的瓶颈,真正的瓶颈往往是带宽与IP地址。大规模下载网页等网络内容需要有足够的网络带宽的支持,网站通常对某个IP地址在单位时间内可访问的次数有所限制,因此对网站大批量高时效性采集需要有足够IP地址的支持。
目前开源的分布式采集框架,在使用时基于降低公网带宽以及传输效率的要求,需要将多个采集节点部署在同一个机房的机器内,基于这种部署要求对于拥有多个机房的用户就无法方便地利用多机房的带宽以及多IP地址优势。与此同时如果在一台机器上部署多个采集程序,就无法控制每个采集程序对***资源的消耗,而在一台机机器上只部署一个采集程序,那么就会带来机器资源使用率不均衡以及资源浪费的问题。
发明内容
本发明提供一种数据采集方法、装置及存储介质,以提高数据采集过程中的资源使用率,实现负载均衡。
本发明的第一方面是提供一种数据采集方法,应用于分布式采集***,所述分布式采集***包括调度节点、总控节点、以及多个数据采集节点,所述方法包括:
所述总控节点接收所述调度节点发送的调度任务;
所述总控节点接收各所述数据采集节点发送的运行状态信息;
所述总控节点根据预设策略、预先获取的各所述数据采集节点的处理能力信息及各所述数据采集节点的运行状态信息,将所述调度任务分配给所述数据采集节点,以使所述数据采集节点执行所述调度任务。
进一步的,所述调度任务包括目标网页以及所述目标网页的调度顺序,所述目标网页以及所述目标网页的调度顺序由所述调度节点根据采集任务及预定调度策略获取。
进一步的,述总控节点根据预设策略、预先获取的各所述数据采集节点的处理能力信息及各所述数据采集节点的运行状态信息,将所述调度任务分配给所述数据采集节点,包括:
所述总控节点根据网页域名打散策略、各所述数据采集节点的处理能力信息及运行状态信息,将所述调度任务分配给所述数据采集节点。
进一步的,所述总控节点配置有至少一个备用总控节点,以在所述总控节点出现故障时从所述至少一个备用总控节点中选举出一个备用总控节点以替代所述总控节点。
本发明的第二方面是提供一种数据采集方法,应用于分布式采集***,所述分布式采集***包括调度节点、总控节点、以及多个数据采集节点,所述方法包括:
所述数据采集节点获取自身的运行状态信息;
所述数据采集节点将所述运行状态信息发送给所述总控节点,以使所述总控节点根据预设策略、预先获取的各所述数据采集节点的处理能力信息及各所述数据采集节点的运行状态信息,将所述调度任务分配给所述数据采集节点;
所述数据采集节点接收所述总控节点分配的所述调度任务,并执行所述调度任务。
进一步的,所述数据采集节点接收所述总控节点分配的所述调度任务,并执行所述调度任务,包括:
所述数据采集节点接收到所述调度任务后,根据所述调度任务为所述数据采集节点的下载插件和解析插件分配任务,以由所述下载插件和所述解析插件分别独立的执行所分配的任务。
进一步的,所述数据采集节点将所述运行状态信息发送给所述总控节点,包括:
所述数据采集节点获取其各所述下载插件和所述解析插件的运行状态信息,将各插件的运行状态信息以预设周期发送给所述总控节点。
本发明的第三方面是提供一种总控节点,应用于分布式采集***,所述分布式采集***包括调度节点、总控节点、以及多个数据采集节点,所述总控节点包括:
存储器,用于存储计算机程序;
处理器,用于运行所述存储器中存储的计算机程序以实现:接收所述调度节点发送的调度任务;接收各所述数据采集节点发送的运行状态信息;根据预设策略、预先获取的各所述数据采集节点的处理能力信息及各所述数据采集节点的运行状态信息,将所述调度任务分配给所述数据采集节点,以使所述数据采集节点执行所述调度任务。
进一步的,所述调度任务包括目标网页以及所述目标网页的调度顺序,所述目标网页以及所述目标网页的调度顺序由所述调度节点根据采集任务及预定调度策略获取。
进一步的,在所述处理器根据预设策略、预先获取的各所述数据采集节点的处理能力信息及各所述数据采集节点的运行状态信息,将所述调度任务分配给所述数据采集节点时,所述处理器被配置为:
根据网页域名打散策略、各所述数据采集节点的处理能力信息及运行状态信息,将所述调度任务分配给所述数据采集节点。
进一步的,所述总控节点配置有至少一个备用总控节点,以在所述总控节点出现故障时从所述至少一个备用总控节点中选举出一个备用总控节点以替代所述总控节点。
本发明的第四方面是提供一种数据采集节点,应用于分布式采集***,所述分布式采集***包括调度节点、总控节点、以及多个数据采集节点,所述数据采集节点包括:
存储器,用于存储计算机程序;
处理器,用于运行所述存储器中存储的计算机程序以实现:获取自身的运行状态信息;将所述运行状态信息发送给所述总控节点,以使所述总控节点根据预设策略、预先获取的各所述数据采集节点的处理能力信息及各所述数据采集节点的运行状态信息,将所述调度任务分配给所述数据采集节点;接收所述总控节点分配的所述调度任务,并执行所述调度任务。
进一步的,在所述处理器接收所述总控节点分配的所述调度任务,并执行所述调度任务时,所述处理器被配置为:
接收到所述调度任务后,根据所述调度任务为所述数据采集节点的下载插件和解析插件分配任务,以由所述下载插件和所述解析插件分别独立的执行所分配的任务。
进一步的,在所述处理器将所述运行状态信息发送给所述总控节点时,所述处理器被配置为:
获取其各所述下载插件和所述解析插件的运行状态信息,将各插件的运行状态信息以预设周期发送给所述总控节点。
本发明的第五方面是提供一种计算机可读存储介质,其上存储有计算机程序;
所述计算机程序被处理器执行时实现如第一方面所述的方法。
本发明的第六方面是提供一种计算机可读存储介质,其上存储有计算机程序;
所述计算机程序被处理器执行时实现如第二方面所述的方法。
本发明提供的数据采集方法、装置及存储介质,通过调度节点将调度任务发送给总控节点,总控节点接收各数据采集节点发送的运行状态信息,并根据预设策略、预先获取的各所述数据采集节点的处理能力信息及各数据采集节点的运行状态信息,将调度任务分配给数据采集节点,以使数据采集节点执行调度任务。本发明中通过总控节点统一管理各数据采集节点,为每一数据采集节点均衡负载,从而提高数据采集的响应能力与机器资源使用率,并且数据采集节点可分布在不同的机房中,充分利用多机房的带宽与多IP地址优势,且支持节点的动态扩容与收缩。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的分布式采集***的架构图;
图2为本发明实施例提供的数据采集方法流程图;
图3为本发明另一实施例提供的数据采集方法流程图;
图4为本发明实施例提供的总控节点的结构图;
图5为本发明实施例提供的数据采集节点的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供的数据采集方法,可以适用于图1所示的分布式采集***。如图1所示,所述分布式采集***包括调度节点、总控节点、以及多个数据采集节点。其中调度节点是每个采集产品的核心任务调度,该节点需要根据采集任务计算需要下载的目标网页,以特定的调度策略决定每个目标网页的调度顺序;此外,还可根据网页下载的历史决策网页的刷新周期;为保证网页下载的成功率该节点还需要有基于时间增长特性的重试策略。调度节点可有多个,例如调度节点1为新闻调度节点,调度节点2为自适应调度节点,可针对不同的信源采集使用不同的调度程序。总控节点(SpiderService节点)是分布式采集***的核心节点,预先获取的各数据采集节点的处理能力信息,并接收各数据采集节点发送的运行状态信息,将从调度节点接收到的调度任务根据预设策略、各数据采集节点的处理能力信息及运行状态信息分配给各数据采集节点。数据采集节点(SpiderProxy节点)具有下载与解析能力,可以为布置在不同的机房中,如图1所示,数据采集节点1、2、3布置于公司机房,数据采集节点4、5、6布置于云服务器,数据采集节点7、8、9布置于客户机房,可充分利用多机房的带宽与多IP地址优势,通过将各数据采集节点注册到总控节点后将下载与解析能力提供给总控节点,并以预设周期将运行状态信息送给总控节点,在接收到总控节点分配的调度任务后根据调度任务进行下载和解析。
进一步的,总控节点还可配置有至少一个备用总控节点,以在总控节点出现故障时从备用总控节点中选举出一个以替代总控节点。此外分布式采集***还可包括代理节点(agent),负责分布式采集***的高可用实现,并提供查询主节点接口,通过将所有总控节点注册到分布式***的可靠协调***(zookeeper),代理节点根据zookeeper中节点数据对所有总控节点进行选举,选出主节点,其余为备用节点,当主节点出现故障后,代理节点重新选举,并通过接口将选举结果对外公布。
下面结合具体的实施例对区块链网络的组建过程进行详细的描述。
图2为本发明实施例提供的数据采集方法流程图。本实施例提供了数据采集方法,执行主体为总控节点,该方法具体步骤如下:
S101、所述总控节点接收所述调度节点发送的调度任务。
在本实施例中,当调度节点收到采集任务时,可根据采集任务及预定调度策略获取调度任务,调度任务可包括目标网页以及目标网页的调度顺序。具体的,可先根据采集任务获取目标网页,然后根据预定调度策略获取目标网页的调度顺序,其中预定调度策略可以为:按照优先级高低处理任务,高优先优先执行,低优先级后执行,相同优先级按照任务先到先服务的策略。进一步的,调度任务中还可包括网页的刷新周期,网页的刷新周期可由调度节点根据网页下载历史获取,具体的,在刷新周期内至少执行一次该调度任务,从而获取最新的任务数据。进一步的,为了保证网页下载的成功率,调度节点还可在调度任务中增加基于时间增长特性的重试策略,具体的,在第一次失败后间隔2s重试该任务,第二次失败后间隔3s重试该任务,依次类推,当然间隔的时间可根据实际需要进行设定。
S102、所述总控节点接收各所述数据采集节点发送的运行状态信息。
在本实施例中,数据采集节点可周期性的向总控节点发送器运行状态信息,例如数据采集节点的物理资源利用率,如内存、CPU等的利用率。当然也可在总控节点在接收到调度任务后主动向各数据采集节点获取各自的运行状态信息。
S103、所述总控节点根据预设策略、预先获取的各所述数据采集节点的处理能力信息及各所述数据采集节点的运行状态信息,将所述调度任务分配给所述数据采集节点,以使所述数据采集节点执行所述调度任务。
在本实施例中,总控节点可预先获取各数据采集节点的处理能力信息,例如数据采集节点的下载能力信息和解析能力信息,可以在各数据采集节点注册到总控节点时由各数据采集节点将其各自的处理能力信息上报给总控节点,当然也可由总控节点向各数据采集节点主动请求。进而,总控节点可以根据预设策略、各数据采集节点的处理能力信息及运行状态信息,为调度任务分配数据采集节点,并将调度任务发送给对应的数据采集节点,由该数据采集节点执行调度任务,例如根据调度任务中包含的目标网页以及目标网页的调度顺序进行数据的下载和解析,以实现各数据采集节点均衡负载,提高分布式采集***的响应能力与机器的资源使用率。
更具体的,所述总控节点可根据网页域名打散策略、各所述数据采集节点的处理能力信息及运行状态信息,将所述调度任务分配给所述数据采集节点,其中网页域名打散策略为,在有其他域名任务前提下,两个相邻的任务不能是相同域名任务。
本实施例提供的数据采集方法,通过调度节点将调度任务发送给总控节点,总控节点接收各数据采集节点发送的运行状态信息,并根据预设策略、预先获取的各所述数据采集节点的处理能力信息及各数据采集节点的运行状态信息,将调度任务分配给数据采集节点,以使数据采集节点执行调度任务。本实施例中通过总控节点统一管理各数据采集节点,为每一数据采集节点均衡负载,从而提高数据采集的响应能力与机器资源使用率,并且数据采集节点可分布在不同的机房中,充分利用多机房的带宽与多IP地址优势,且支持节点的动态扩容与收缩。
图3为本发明实施例提供的数据采集方法流程图。本实施例提供了数据采集方法,执行主体为数据采集节点,该方法具体步骤如下:
S201、所述数据采集节点获取自身的运行状态信息。
在本实施例中,数据采集节点可主动获取或者响应总控节点的请求,获取自身的运行状态信息,例如数据采集节点的物理资源利用率,如内存、CPU等的利用率。具体的,数据采集节点设置有下载插件和解析插件,可获取各下载插件和解析插件的运行状态信息。
S202、所述数据采集节点将所述运行状态信息发送给所述总控节点,以使所述总控节点根据预设策略、预先获取的各所述数据采集节点的处理能力信息及各所述数据采集节点的运行状态信息,将所述调度任务分配给所述数据采集节点。
在本实施例中,数据采集节点可周期性的向总控节点发送其运行状态信息,也可由总控节点在接收到调度任务后主动向各数据采集节点请求运行状态信息,并由数据采集节点根据请求返回运行状态信息。具体的,数据采集节点可通过数据总线发送给总控节点。进而由总控节点根据预设策略、预先获取的各数据采集节点的处理能力信息及运行状态信息将调度任务分配给各数据采集节点。其中数据采集节点的处理能力信息可例如数据采集节点的下载能力信息和解析能力信息等,可在各数据采集节点注册到总控节点时由各数据采集节点将其各自的处理能力信息上报给总控节点,当然也可由总控节点向各数据采集节点主动请求。
S203、所述数据采集节点接收所述总控节点分配的所述调度任务,并执行所述调度任务。
在本实施例中,数据采集节点在接收到调度任务后,则执行该调度任务,例如根据调度任务中包含的目标网页以及目标网页的调度顺序进行数据的下载和解析。
具体的,数据采集节点接收到调度任务后,可根据调度任务为数据采集节点的下载插件和解析插件分配任务,以由下载插件和所述解析插件分别独立的执行所分配的任务。其中,数据采集节点根据调度任务为下载插件和解析插件分配任务具体可以为,根据各插件的处理能力和运行状态进行分配任务,当插件有处理更多任务能力时则继续向该插件分配任务。本实施例中数据采集节点的每一个插件都可以为独立的***进程,此外各插件支持热插拔与升级。
本实施例提供的数据采集方法,通过调度节点将调度任务发送给总控节点,总控节点接收各数据采集节点发送的运行状态信息,并根据预设策略、预先获取的各所述数据采集节点的处理能力信息及各数据采集节点的运行状态信息,将调度任务分配给数据采集节点,以使数据采集节点执行调度任务。本实施例中通过总控节点统一管理各数据采集节点,为每一数据采集节点均衡负载,从而提高数据采集的响应能力与机器资源使用率,并且数据采集节点可分布在不同的机房中,充分利用多机房的带宽与多IP地址优势,且支持节点的动态扩容与收缩。并且数据采集节点提供下载能力,是一个分布式下载集群,只需开发必要的数据解析插件即可,降低研发周期。数据采集节点在内存、CPU等资源许可的条件下可支持挂载多种解析插件,每个数据采集节点可具有若干种数据下载与数据解析能力。
图4为本发明实施例提供的总控节点的结构图。本实施例提供的总控节点可以执行上述总控节点侧的数据采集方法实施例提供的处理流程,如图3所示,所述总控节点40包括存储器41和处理器42。此外还可包括通讯接口43。
其中,存储器41,用于存储计算机程序;
处理器42,用于运行所述存储器41中存储的计算机程序以实现:接收所述调度节点发送的调度任务;接收各所述数据采集节点发送的运行状态信息;根据预设策略、预先获取的各所述数据采集节点的处理能力信息及各所述数据采集节点的运行状态信息,将所述调度任务分配给所述数据采集节点,以使所述数据采集节点执行所述调度任务。
进一步的,所述调度任务包括目标网页以及所述目标网页的调度顺序,所述目标网页以及所述目标网页的调度顺序由所述调度节点根据采集任务及预定调度策略获取。
进一步的,在所述处理器42根据预设策略、预先获取的各所述数据采集节点的处理能力信息及各所述数据采集节点的运行状态信息,将所述调度任务分配给所述数据采集节点时,所述处理器42被配置为:
根据网页域名打散策略、各所述数据采集节点的处理能力信息及运行状态信息,将所述调度任务分配给所述数据采集节点。
进一步的,所述总控节点配置有至少一个备用总控节点,以在所述总控节点出现故障时从所述至少一个备用总控节点中选举出一个备用总控节点以替代所述总控节点。
本发明实施例提供的总控节点可以具体用于执行上述图2所提供的方法实施例,具体功能此处不再赘述。
本发明实施例提供的总控节点,通过调度节点将调度任务发送给总控节点,总控节点接收各数据采集节点发送的运行状态信息,并根据预设策略、预先获取的各所述数据采集节点的处理能力信息及各数据采集节点的运行状态信息,将调度任务分配给数据采集节点,以使数据采集节点执行调度任务。本实施例中通过总控节点统一管理各数据采集节点,为每一数据采集节点均衡负载,从而提高数据采集的响应能力与机器资源使用率,并且数据采集节点可分布在不同的机房中,充分利用多机房的带宽与多IP地址优势,且支持节点的动态扩容与收缩。
图5为本发明实施例提供的数据采集节点的结构图。本实施例提供的数据采集节点可以执行上述数据采集节点侧的数据采集方法实施例提供的处理流程,如图5所示,所述数据采集节点包括存储器51和处理器52。此外还可包括通讯接口53。
其中,存储器51,用于存储计算机程序;
处理器52,用于运行所述存储器51中存储的计算机程序以实现:获取自身的运行状态信息;将所述运行状态信息发送给所述总控节点,以使所述总控节点根据预设策略、预先获取的各所述数据采集节点的处理能力信息及各所述数据采集节点的运行状态信息,将所述调度任务分配给所述数据采集节点;接收所述总控节点分配的所述调度任务,并执行所述调度任务。
进一步的,在所述处理器52接收所述总控节点分配的所述调度任务,并执行所述调度任务时,所述处理器52被配置为:
接收到所述调度任务后,根据所述调度任务为所述数据采集节点的下载插件和解析插件分配任务,以由所述下载插件和所述解析插件分别独立的执行所分配的任务。
进一步的,在所述处理器52将所述运行状态信息发送给所述总控节点时,所述处理器52被配置为:
获取其各所述下载插件和所述解析插件的运行状态信息,将各插件的运行状态信息以预设周期发送给所述总控节点。
本发明实施例提供的数据采集节点可以具体用于执行上述图3所提供的方法实施例,具体功能此处不再赘述。
本发明实施例提供的数据采集节点,通过调度节点将调度任务发送给总控节点,总控节点接收各数据采集节点发送的运行状态信息,并根据预设策略、预先获取的各所述数据采集节点的处理能力信息及各数据采集节点的运行状态信息,将调度任务分配给数据采集节点,以使数据采集节点执行调度任务。本实施例中通过总控节点统一管理各数据采集节点,为每一数据采集节点均衡负载,从而提高数据采集的响应能力与机器资源使用率,并且数据采集节点可分布在不同的机房中,充分利用多机房的带宽与多IP地址优势,且支持节点的动态扩容与收缩。并且数据采集节点提供下载能力,是一个分布式下载集群,只需开发必要的数据解析插件即可,降低研发周期。数据采集节点在内存、CPU等资源许可的条件下可支持挂载多种解析插件,每个数据采集节点可具有若干种数据下载与数据解析能力。
另外,本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现上述实施例所述的总控节点侧的数据采集方法,其实现原理和技术效果类似,此处不再赘述。
另外,本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现上述实施例所述的数据采集节点侧的数据采集方法,其实现原理和技术效果类似,此处不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。