掌桥专利:专业的专利平台
掌桥专利
首页

一种热备系统的容错选举方法及热备系统

文献发布时间:2024-01-17 01:20:32


一种热备系统的容错选举方法及热备系统

技术领域

本发明属于工业现场过程控制领域,具体涉及一种热备系统的容错选举方法及热备系统。

背景技术

选举算法在分布式算法研究中的基础性地位,相关算法研究较多,但往往带有较多的前提假设主要包括:需要系统中有心跳及时链路;不是通信有效的,即:所有心跳链路只携带心跳信息无其它需同步业务信息;不是稳定算法,即:在当前主工作节点并未失灵且链路也都在任意长时间内有效的情况下,算法也会重新选举新的主工作节点;算法仅考虑进程失效以及消息丢失的情况,而没有考虑心跳及时链路出现错误的情况;算法使用超时的方法来检验消息是否及时,所以需要各个进程之间使用同步时钟,这些前提假设使得系统的计算效率降低,选举结果的可解释性差,实用性不强。

发明内容

本发明的目的在于提供一种热备系统的容错选举方法及热备系统,用以解决选举算法带有较多的前提假设以及资源需求导致选举过程计算复杂、计算效率低、可解释性差的技术问题。

为解决上述技术问题,本发明提供了一种热备系统的容错选举方法,包括如下步骤:

1)获取所有工作节点的心跳信息,所述心跳信息包括报文头和工作节点的工作情况,所述工作情况指工作节点是否处于主工作模式;

2)在一个间隔周期到来时,根据工作节点的心跳信息按照如下方式对全部工作节点进行选举:

若当前记录的主工作节点处于主工作状态,则选取该工作节点作为本次选举的结果;

若当前记录的主工作节点不处于主工作状态,遍历全部工作节点:如果能找到唯一一个宣称自己为主工作节点的活动状态工作节点,则选取该工作节点作为本次选举的结果;如果没有找到,则将按照某种方式对所有工作节点进行排序形成一个工作节点队列,队列中第一个处于活动状态的工作节点作为本次选举的结果;3)根据选取结果,生成节点心跳信息对外发布,并在下一个间隔周期到来时重新执行步骤2)。

其有益效果为:本发明的选取方法若选举出的主工作节点不发生故障时,算法不会改变当前的主工作节点;当前主工作节点发生故障时,算法将重新进行主工作节点的选举,极端情况是选举自身作为主工作节点在网络通讯正常情况下,如果当前接收到的其它工作节点的选举结果与自身选举结果不一致,则最多经过三个选举周期即可取得一致结果;其选举周期少,选举策略简单可解释性强。

进一步地,步骤1)中需对获取的心跳信息标记本地时戳。

其有益效果为:标记本地时戳便于确定处于活动状态的工作节点。

进一步地,宣称自己为主工作节点的活动状态工作节点需满足:该工作节点的本地时戳与当前系统时间之差小于设定阈值。

其有益效果为:通过本地时戳与当前系统时间之差找出处于活动状态的工作节点,提升系统选举的有效性。

进一步地,步骤1)后,需对心跳信息无效的工作节点进行过滤。

其有益效果为:遍历有效心跳信息过滤失效的心跳(状态)信息提高排序效率。

进一步地,心跳信息还包括工作节点标识,工作节点标识包括节点名称,节点名称为一个唯一的字符串或者为一个唯一的数字。

其有益效果为:通过心跳信息的工作节点标识便于确定目前处于工作状态的工作节点。

进一步地,按照某种方式对所有工作节点进行排序依据工作节点标识进行排序。

其有益效果为:通过心跳信息的工作节点标识排序,使不同工作节点上的选举算法可产生一致结果。

进一步地,采用UDP组播的方式接收所有工作节点的心跳信息。

其有益效果为:采用UDP组播的方式提高了系统效率,避免了心跳接收链路的物理搭建。

进一步地,步骤3)中采用UDP报文的方式将生成的节点心跳信息发送至约定的组播通讯地址上,以完成对外发布。

其有益效果为:采用UDP组播的方式提高了系统效率,避免了心跳传输链路的物理搭建。

进一步地,心跳信息还包括其他业务信息,所述其他业务信息包括向外推送的业务信息。

其有益效果为:心跳信息增加了其他需要同步的业务信息,提高了可用性和容错性。

为解决上述技术问题,本发明还提供了一种热备系统,包括若干个工作节点,各个工作节点之间通信连接,其内部工作节点用于采用如上所述的热备系统的容错选举方法进行节点选举。

附图说明

图1是本发明的算法网络运行环境示意图;

图2是本发明的心跳(状态)报文的主要信息定义示意图;

图3是本发明的选举模块内部各部分功能顺序关系示意;

图4是本发明的工作节点选举过程流程图;

图5-1是本发明的当前主工作节点标识为“未知”的算法运行输出示意图;

图5-2是本发明的选取遍历到的第一个处于活动状态的工作节点算法运行输出示意图;

图5-3是本发明的只有本工作节点处于工作状态的算法运行输出示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明了,以下结合附图及实施例,对本发明进行进一步详细说明。

热备系统的容错选举方法实施例:

本发明的选举方法的整体运行机制描述如下:

a)算法启动,初始化网络通讯操作,监听通讯接收端口。

b)心跳(状态)接收模块接收其它备选节点发送来的心跳(状态)信息;

c)对接收到的心跳状态信息标记本地时戳;

d)将接收到的心跳(状态)信息存入心跳(状态)信息缓冲中。

e)根据心跳(状态)信息缓冲中保存的心跳(状态)信息,执行如下选举算法:

1)读取心跳(状态)信息缓冲中保存的心跳(状态)信息,根据约定的发送时间间隔,过滤失效的心跳(状态)信息;

2)如果当前程序内记录的主任务节点对应的心跳(状态)信息仍然有效,且信息中明确当前该节点仍然是主工作节点,则认为当前记录的主任务节点仍然为工作节点,完成选举退出本次选举过程;

3)如果当前程序内记录有效心跳(状态)信息中,只有唯一一个节点声明自己为主工作节点,则认为该节点为主工作节点,完成选举退出本次选举过程;

4)如果当前程序内记录有效心跳(状态)信息中,没有一个节点声明自己为主工作节点,则转入步骤5),重新进行选举;

5)如果当前程序内记录的主任务节点对应的心跳(状态)信息无效,则对接收到的有效心跳(状态)信息涉及的节点标识按某种方式进行排序,取排序后的第一个节点作为当前选举出的工作主节点。

f)记录选举算法中选举出的主任务节点,并通过心跳(状态)信息发布模块,以一定周期对外发布当前的选举结果。

下面以船载网络通讯系统构造为例,对本发明的一种容错选举方法进行说明。如图1所示为本实施例的算法网络运行环境示意图,在当前实施例中,工作节点通过双冗余网络接入到船载网络信息传输设备中,采用UDP组播的通讯方式进行心跳(状态)信息的传递。如能保证介质传输的可靠,工作节点也可采用一般网卡单侧入网。工作节点除了采用UDP组播方式作为信息传输方式也可使用DDS等具有“发布/订阅消息模式”的通讯中间件实现其心跳(状态)信息的传递。如果网络设备不具备路由功能,应支持各信息节点之间的“点对点”方式通讯,在逻辑层面建立工作节点之间的信息传递链路。

本发明的整个选举方法流程包括三步,每个步骤由相应的软件模块来实现,分别为心跳(状态)信息接收模块,选举模块和心跳(状态)信息发布模块,下面进行具体介绍。

步骤1:获取所有工作节点的心跳信息。

该步骤通过心跳(状态)信息接收模块来实现,在本实施例中,如图2定义了心跳(状态)信息的数据结构,其具体含义或相关解释如下:

标准报文头:用于定义报文的一般性数据结构,主要包括:报文标识、发送时间,发送者IP地址、发送端口、接收者IP地址,目的端口等信息。该数据结构可根据项目具体情况进行更改或全部取消。

发送该报文的工作节点标识:枚举变量,定义了发送该报文的工作节点标识,在本实施例中,工作节点包括:指挥员台、管理调度Ⅰ台、管理调度Ⅱ台、管理调度Ⅲ台、管理调度Ⅳ台等五个节点。工作节点定义可根据项目具体情况对节点名称、定义数量等进行修改。

当前该工作节点工作情况:布尔类型,定义了该工作节点是否处于主工作模式。在本实施例中,true表示该节点处于主工作模式,false表示该节点处于备份工作模式,该信息也可以通过该站点其它一些工作状态综合判断获得。例如:可以标识出当前该工作节点记录的当前处于主工作模式的节点标识,通过记录的该主工作节点标识和当前发送该信息的工作节点工作标识之间是否一致来获取该节点的工作情况。

报文本地时戳:记录接收到当前信息的本地时间。在本实施例中,采用本机系统时间,该信息也可通过其它表示时间的方式进行记录。例如:可以采用一个定时器,以定时累加计数的方式记录本机时间。

节点保存的工作状态信息:定义了工作节点需传输信息的数据结构。在本实施例中,传递了被监控设备在对应工作节点中记录的状态信息,包括:设备标识、设备机构状态、故障状态、关键组件运行情况等信息。工作状态信息可根据项目具体情况进行重新定义或取消。

步骤2:在一个间隔周期根据工作节点的心跳信息对全部工作节点进行选举。

该步骤通过选举模块来实现,在本实施例中,如图3选举模块内部各部分功能顺序关系示意:描述了在本实施例中,软件的运行机制。

相应的步骤如下:

a)算法的模块运行,对网络收发参数进行初始化操作:

1)按约定的通讯端口初始化监听端口;

2)由于实施例是采用组播方式进行通讯,因此对约定的组播通讯地址发送IGMP报文,加入到该监听组中,完成消息的订阅;

3)根据项目涉及网络具体拓扑结构,设置UDP报文发送时的TTL参数为8。完成网络初始化工作。

b)启动模块性多线程服务:

1)初始化工作节点心跳(状态)信息存储容器,启动信息接收线程,当底层接收到对应信息后,将信息保存至工作节点心跳(状态)信息存储容器中;

2)对当前定义的全部工作节点的标识进行排序,获得一个稳定的遍历序列;

3)启动定时选举服务,按工程实际需要选举时间间隔,当前时间间隔设置为5秒。

具体的,步骤2)中排序的方式主要是让不同工作节点上的选举程序,根据同样的输入,产生同样的输出,即各个节点在采用同样的协商机制进行协商。由于每个工作节点的标识(数字)不同,采用标识进行排序,简单直观。

c)定时到,启动选举算法,根据图4论述的算法流程,本例具体实施方式如下:

1)关闭定时器,防止定时任务时间过长引起事件的循环载入;

2)为了确保选举的稳定性,首先检查当前记录的主工作节点是否仍处于主工作状态,如果是,则完成本次选举;

3)对在步骤b)中的序号为2)中完成排序的全部工作节点的标识进行顺序遍历,如果能找到一个宣称自己为主工作节点的活动状态工作节点(该节点的工作信息的本地时戳与当前系统时间之差小于11秒(当前软件设备状态采样周期为5秒,通过试验取略大于采样周期两倍的时间间隔较为合适),则认为该节点仍处于工作状态),则将该工作节点作为本次选举结果,完成本次选举;

4)如果没有找到,对在步骤b)中的序号为2)中完成排序的全部工作节点的标识进行顺序遍历,找到第一个处于活动状态的工作节点(相关定义如前所述)作为本次选举的结果,完成选举。

步骤3:在完成选举后,对外发布选举结果并重启定时服务。

该步骤通过心跳(状态)信息发布模块来实现,具体步骤为:

1)选举模块记录本次选举结果;

2)读取本次选举结果,结合当前接收到的监控设备工作状态信息,生成节点心跳(状态)信息,以UDP报文的方式发送至约定的组播通讯地址上,完成节点心跳(状态)信息的对外发布。

3)重新启动定时器,3秒后重复上述c)步骤。

标记[N]表示:代表没有接收到该工作节点的心跳报文;

标记[P]表示:代表接收到的该工作节点心跳状态信息显示自身为主工作节点;

标记[S]表示:代表接收到的该工作节点心跳状态信息显示自身为备工作节点;

图中,括号内的时间为本机时间,明显看出在各台位时统不一致的情况下,在全部工作节点运行正常情况下没有进行多次选举,算法是稳态的。

如图5-1所示,指挥员台设备监控软件启动后,记录的当前主工作节点标识为“未知”,选举算法执行步骤c)中序号为3)的分支进行处理;依据算法机制争取选取了当前处于主工作状态的节点(调度三台)作为主工作节点,并将自身设置为备工作节点;

如图5-2所示,当关闭当前主工作节点(调度三台)后,算法执行步骤c)中序号为4)的分支进行处理:选取当前遍历到的第一个处于活动状态的工作节点(指挥员台)作为当前的工作节点;

如图5-3所示,当前系统中只有本工作节点处于工作状态,则算法执行c)中序号为4)的分支进行处理:选取当前遍历到的第一个处于活动状态的工作节点(本工作节点,指挥员台)作为当前的工作节点。

本发明的容错选举方法当前选举出的主工作节点不发生故障时,算法不会改变当前的主工作节点;当前主工作节点发生故障时,算法将重新进行主工作节点的选举,极端情况是选举自身作为主工作节点;在网络通讯正常情况下,如果当前接收到的其它工作节点的选举结果与自身选举结果不一致,则最多经过三个选举周期即可取得一致结果;由于算法中承担心跳功能的信息包含了节点工作状态,因此在进行选举的同时也同步了各设备之间的工作状态,因此是通讯有效的。

本发明采用组播通讯的方式,以尽可能少的网络通讯资源和设备计算资源,实现“主-从”热备系统中的相关选举功能,确保系统在主设备故障时能在规定的切换时间间隔内进行相关功能的主备倒换,提高系统可靠性。

热备系统实施例:

本实施例的热备系统包括若干个工作节点,各个工作节点之间通过计算机数字通信网络进行连接,且网络自身需支持网络组播功能,其内部工作节点的选举方法和系统具体组成已在热备系统容错选举方法实施例中说明,这里不在赘述。

以上给出了具体的实施方式,但本发明不局限于所描述的实施方式。本发明的基本思路在于上述基本方案,对本领域普通技术人员而言,根据本发明的教导,设计出各种变形的模型、公式、参数并不需要花费创造性劳动。在不脱离本发明的原理和精神的情况下对实施方式进行的变化、修改、替换和变型仍落入本发明的保护范围。

技术分类

06120116149124