一种数据采集器故障恢复后的工作控制方法与流程

文档序号:14248685阅读:333来源:国知局

本发明涉及一种数据采集器故障恢复后的工作控制方法,特别是涉及一种适用于拉取型数据采集器的采集器故障恢复后的工作控制方法。



背景技术:

目前拉取型数据采集器(拉取型数据采集器是指数据采集器主动向数据源拉取数据,拉取方式可以是访问数据源的数据库或者通过其他通讯方式拉取数据。)故障恢复后或者发生的故障无法解决而需要新增加数据采集器,需要停止或者重启任意一台机器来实现数据源分配到所有的数据采集器上,即数据采集器的水平扩展。



技术实现要素:

本发明要解决的技术问题是提供一种数据采集器故障恢复后的工作控制方法,该方法能够在不需要停止或者重启任意一台机器,就可以实现数据源分配到所有的数据采集器上;

本发明第二个要解决的技术问题是在保证数据采集器故障恢复后,或者需要新增加数据采集器时,将数据采集器的数据源的采集工作自动均衡分配到所有数据采集器上的自动均衡方法;

本发明第三个要解决的技术问题是提供一种便于故障问题原因排查的方法。

本发明采用的技术方案如下:一种数据采集器故障恢复后的工作控制方法,具体方法为:如果控制中心发现一个没有分配数据源的新数据采集器登录,则选举出处于在线状态的其他一个数据采集器,作为进行数据源分配处理的资源分配数据采集器;

控制中心下发资源分配通知给所述资源分配数据采集器;所述资源分配数据采集器收到资源分配任务通知后,通过对应的数据库查询目前正常工作的数据采集器及正在采集的数据源,抽取数据源分配给所述新数据采集器,在对应数据库中更新数据采集器和数据源的对应关系,并向控制中心汇报资源分配完毕,将资源分配方式报告给控制中心;

被抽取了数据源的数据采集器定时监测数据库中是否有需要断开的数据源,如果有,则断开数据源;所述新数据采集器定时监测数据库中是否有需要新分配的数据源,如果有,启动数据采集线程进行数据采集。

数据采集器与控制中心建立tcp长连接,建立连接后,并登录到控制中心,登录时上传采集器的id和采集器的组id并向控制中心汇报与该采集器链接的所有数据源id。

选举资源分配数据采集器时,只要按照设定的选举规则,从在线正常工作状态的数据采集器中能唯一选举出一个数据采集器,作为资源分配数据采集器即可。

由于数据源的分配工作只是更新所述其所对应的数据库中数据采集器和数据源的对应关系,因此,还需要分配完成后,一方面,被抽取了数据源的数据采集器定时监测数据库中是否有需要断开的数据源,如果有,则断开数据源;另一方面,所述新数据采集器定时监测数据库中是否有需要新分配的数据源,如果有,启动数据采集线程进行数据采集,建立与被分配的数据源之间的链接,完成数据源采集工作。

本发明方案能够在不需要停止或者重启任意一台机器的基础上,就可以实现数据源分配到所有的数据采集器上。

所述方法还包括:建立数据采集器组,数据采集器登录控制中心时上传该数据采集器所在的组id,实现数据采集器的分组管理。

所述方法还包括:建立数据采集器组时,对于同一业务类型的数据源,其数据采集器建立在同一组,使得分组责任明确。

所述方法还包括:所选举的资源分配数据采集器,与新数据采集器在同一组中。

所述方法还包括:每一个数据采集器组对应一个数据库,方便分组管理。

所述方法还包括:所选举的资源分配数据采集器为在线状态的数据采集中id号最大或最小的数据采集器。

所述方法还包括:所述新数据采集器定时监测数据库中是否有需要新分配的数据源时,如果有,首先根据心跳机制判断数据源是否被其他采集器正在采集,如果没有被采集,再启动数据采集线程进行数据采集。

数据采集器每隔一个设定时间阈值t1,向数据库更新与数据源链接的心跳时间,只要心跳时间不超出所设定的时间距离阈值t2,则说明数据采集器在正常工作。

所述方法还包括:分配日志数据库,控制中心下发资源分配通知给所述资源分配数据采集器,并向日志数据库记录日志,内容包括所处理的任务类型及所选举的数据采集器;所述资源分配数据采集器将资源分配方式报告给控制中心后,控制中心向日志数据库记录该日志,以此便于故障问题原因排查。

所述方法还包括:资源分配数据采集器在进行资源分配时,根据当前处于工作状态的所有数据采集器以及所有需要采集的数据源,根据平均分配原则,抽取适当的数据源分配给所述新数据采集器,实现资源的均衡分配。

所述方法还包括:抽取数据源中id号最大或最小的数据源分配给所述新数据采集器。

与现有技术相比,本发明的有益效果是:

1、解决了拉取式数据采集器故障节点恢复后,在不重启或停止任意一台机器的前提下,完成资源的分配,保证了数据的完整性,并可以实现采集器的水平扩展;

2、对于某个数据采集器故障恢复或加入新的数据采集器时,被采集的数据源的自动均衡分配上,本方案得到了很好的解决;

3、通过数据采集器与数据源的心跳机制保证了一个数据源同一时刻只能有一个采集器与之相链接;

4、引入了组的机制,即保证了同一个组内的数据采集器才能进行资源均衡;

5、控制中心作为数据采集器的核心组件,统一进行新增采集器的发现并且引入了选举机制,选择进行资源分配和均衡的唯一采集器;

6、控制中心记录了故障发生和处理的日志,能够给系统管理员在进行故障排查提供了参考。

附图说明

图1为本发明其中一实施例的结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

本说明书(包括摘要和附图)中公开的任一特征,除非特别叙述,均可被其他等效或者具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。

具体实施例1

一种数据采集器故障恢复后的工作控制方法,具体方法为:如果控制中心发现一个没有分配数据源的新数据采集器登录(如图1所示,例如c2),则选举出处于在线状态的其他一个数据采集器,作为进行数据源分配处理的资源分配数据采集器;

控制中心下发资源分配通知给所述资源分配数据采集器;所述资源分配数据采集器收到资源分配任务通知后,通过对应的数据库查询目前正常工作的数据采集器(c1和c3)及正在采集的数据源(s1到s6),抽取数据源分配给所述新数据采集器,在对应数据库中更新数据采集器和数据源的对应关系,并向控制中心汇报资源分配完毕,将资源分配方式报告给控制中心;

被抽取了数据源的数据采集器(c1和c3)定时监测数据库中是否有需要断开的数据源,如果有,则断开数据源;所述新数据采集器(c2)定时监测数据库中是否有需要新分配的数据源,如果有,启动数据采集线程进行数据采集。

数据采集器与控制中心建立tcp长连接,建立连接后,并登录到控制中心,登录时上传采集器的id和采集器的组id并向控制中心汇报与该采集器链接的所有数据源id。

选举资源分配数据采集器时,只要按照设定的选举规则,从在线正常工作状态的数据采集器中能唯一选举出一个数据采集器,作为资源分配数据采集器即可。

由于数据源的分配工作只是更新所述其所对应的数据库中数据采集器和数据源的对应关系,因此,还需要分配完成后,一方面,被抽取了数据源的数据采集器定时监测数据库中是否有需要断开的数据源,如果有,则断开数据源;另一方面,所述新数据采集器定时监测数据库中是否有需要新分配的数据源,如果有,启动数据采集线程进行数据采集,建立与被分配的数据源之间的链接,完成数据源采集工作。

具体实施例2

在具体实施1的基础上,所述方法还包括:建立数据采集器组,数据采集器登录控制中心时上传该数据采集器所在的组id,实现数据采集器的分组管理。如图1所示,在本具体实施例中,将数据采集器分为g1组和g2组,其中g1组包括数据采集器c1、c2和c3,对数据源s1到s6进行数据采集;g2组包括数据采集器c4、c5和c6,对数据源s7到s9进行数据采集。

具体实施例3

在具体实施例2的基础上,所述方法还包括:建立数据采集器组时,对于同一业务类型的数据源,其数据采集器建立在同一组,使得分组责任明确。如图1所示,在本具体实施例中,g1组的数据采集器与g2组的数据采集器所采集的数据源为两个不同业务类型的数据源。g1组的数据采集器只能与g1组所对应的数据源c1到c6链接;g2组的数据采集器只能与g2组所对应的数据源c7到c9链接。

具体实施例4

在具体实施例2或3的基础上,所述方法还包括:所选举的资源分配数据采集器,与新数据采集器在同一组中。如图1所示,如果是g1组中的数据采集器发生故障后恢复或者加入的新数据采集器是加入到g1组中,则只能从g1组中选举出资源分配数据采集器;如果是g2组中的数据采集器发生故障后恢复或者加入的新数据采集器是加入到g2组中,则只能从g2组中选举出资源分配数据采集器。

具体实施例5

在具体实施例2到4之一的基础上,所述方法还包括:每一个数据采集器组对应一个数据库,方便分组管理。如图1所示,在本具体实施例中,g1组对应数据库db1,g2组对应数据库db2。

具体实施例6

在具体实施例1到5之一的基础上,所述方法还包括:所选举的资源分配数据采集器为在线状态的数据采集中id号最大或最小的数据采集器,作为选举规则,从在线正常工作状态的数据采集器中选举出唯一的一个数据采集器作为资源分配数据采集器。以g1组中的c2数据采集器为故障恢复后的数据采集器为例,如果选举规则为在线状态的数据采集器中id号最大的数据采集器,则选举c3为资源数据采集器;如果选举规则为在线状态的数据采集器中id号最小的数据采集器,则选举c1为资源分配数据采集器。

具体实施例7

在具体实施例1到6之一的基础上,所述方法还包括:所述新数据采集器定时监测数据库中是否有需要新分配的数据源时,如果有,首先根据心跳机制判断数据源是否被其他采集器正在采集,如果没有被采集,再启动数据采集线程进行数据采集。

数据采集器每隔一个设定时间阈值t1,向数据库更新与数据源链接的心跳时间,只要心跳时间不超出所设定的时间距离阈值t2,则说明数据采集器在正常工作。

所述t1可以设定为1秒到3秒中的一个时间,所述t2可以设定为3秒到5秒中的一个时间,具体设置,根据用户的实际需求和实际情况进行设定。

具体实施例8

在具体实施例1到7之一的基础上,所述方法还包括:分配日志数据库,控制中心下发资源分配通知给所述资源分配数据采集器,并向日志数据库记录日志,内容包括所处理的任务类型及所选举的数据采集器,如:数据采集器c1开始进行资源均衡处理;所述资源分配数据采集器将资源分配方式报告给控制中心后,控制中心向日志数据库记录该日志,以此便于故障问题原因排查。如图1所示,在本具体实施例中,控制中心向日志数据库db3记录日志。

具体实施例9

在具体实施例1到8之一的基础上,所述方法还包括:资源分配数据采集器在进行资源分配时,根据当前处于工作状态的所有数据采集器以及所有需要采集的数据源,根据平均分配原则,抽取适当的数据源分配给所述新数据采集器,实现资源的均衡分配。

以g1组中的c2数据采集器为故障恢复后的新数据采集器,选举规则为在线状态的数据采集器中id号最小的数据采集器为例,则选举c1为资源分配数据采集器。如果控制中心下发资源分配通知给数据采集器c1进行资源分配,数据采集器c1收到资源分配通知后,从数据库db1中查询与所有在线数据采集器c1、c2和c3,及对应的需要采集的数据源,c1对应数据源s1、s2和s3,c3对应数据源s4、s5和s6;根据平均分配原则(每个数据采集器最大可分配数据源个数算法:cail(6/2)=3,cail函数为向上取整函数,6指的是所有的数据源个数,2指的是正常工作的数据采集器个数),数据采集器c1和c3均多分配了一个数据源,因此将数据源s1到s3中的一个,及数据源s4到s6中的一个分别分配给数据采集器c2。此分配工作只是更新数据库db1中数据数据采集器和数据源的对应关系,数据采集器c1和数据采集器c3定时监测数据库中是否有需要断开的数据源,如果有,则断开数据源;所述新数据采集器c2定时监测数据库中是否有需要新分配的数据源,如果有,启动数据采集线程进行数据采集

具体实施例10

在具体实施例1到9之一的基础上,所述方法还包括:抽取数据源中id号最大或最小的数据源分配给所述新数据采集器。可以均按照id号最的方法来抽取(例如c1抽取s3,c3抽取s6),也可以均按照id号最小的方法来抽取(例如c1抽取s1,c3抽取s4),也可以按照数据采集器id号比新数据采集器id号小的抽取数据源id号最大的,数据采集器id好比新数据采集器id号大的抽取数据源id号最小的(例如c1抽取s3,c3抽取s4),由用户按照需求自行定义。

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