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

基于网络的双机互备自动接管方法、设备、存储介质

文献发布时间:2023-06-19 18:46:07


基于网络的双机互备自动接管方法、设备、存储介质

技术领域

本申请涉及广播电视领域,尤其涉及一种基于网络的双机互备自动接管方法、设备、存储介质。

背景技术

双机互备自动接管技术,是指存在2台计算机设备,每一台负责一部分的功能,他们同时在工作。为了防止其中某一台计算机设备,由于故障等问题停止工作,因此,2台计算机设备互相为对方的备份设备。即,2台计算机设备中,任何一台出现故障,那么另一台计算机设备在保证自己工作的情况下,自动接管对方负责的工作,保证工作能够正常运行,称为双机互备自动接管。如图1所示。

现有技术中,各种软件程序单独设计、开发各自的双机互备自动接管功能,功能设计、代码实现往往与其自身业务混合绑定,使软件代码变的逻辑混乱,难以维护。因此,现有技术存在如下缺点:

1、各个软件实现的双机互备自动接管功能代码与业务代码混淆,引起逻辑混乱,难以维护。

2、现有技术只能针对对方设备故障进行自动接管,但在需要保证实时性的应用场景下,当出现心跳正常,但软件卡顿的情况时,现有技术方案无法自动接管,导致系统运行故障。

发明内容

为了解决上述技术缺陷之一,本申请提供了一种基于网络的双机互备自动接管方法、设备、存储介质。

本申请第一个方面,提供了一种基于网络的双机互备自动接管方法,方法包括:

设置心跳计时器;

在心跳计时器计时过程中,监测是否接收到互备设备发送的第一心跳信息;

若心跳计时器到时后,仍未接收到第一心跳信息,则接管互备设备的工作。

可选地,监测是否接收到互备设备发送的第一心跳信息之后,还包括:

若心跳计时器到时前,接收到互备设备的第一心跳信息,则重置心跳计时器,并重新执行在心跳计时器计时过程中,监测是否接收到互备设备发送的第一心跳信息的步骤及后续步骤。

可选地,在心跳计时器计时过程中,监测是否接收到互备设备发送的第一心跳信息之前,还包括:

通过多块网卡与互备设备建立多条通信连接;

第一心跳信息为互备设备每隔第一时间间隔,同时通过各条通信连接发送的。

可选地,接管互备设备的工作,包括:

在第二工作模式为非接管模式时,若互备设备的第一工作状态为脱机,则将第二工作模式设置为接管模式。

可选地,通过多块网卡与互备设备建立多条通信连接之后,还包括:

每隔第二时间间隔,同时通过各条通信连接,向互备设备发送第二心跳信息。

可选地,每隔第二时间间隔,同时通过各条通信连接,向互备设备发送第二心跳信息之后,还包括:

检测设备状态;

当设备状态异常时,确定第二工作模式;

在第二工作模式为非接管模式时,停止第二心跳信息的发送,设置第二工作状态为脱机。

可选地,检测设备状态,包括:

启动检测计时器,并休眠心跳发送线程预设时长;

心跳发送线程休眠结束时,确定检测计时器的实际计时时长;

若所实际计时时长大于时长阈值,则将当前时间加入全局队列;

若当前全局队列中的元素数量大于数量阈值,则确定检测设备状态异常。

可选地,方法还包括:

每隔第三时间间隔,遍历全局队列中的每个元素;

若存在目标元素,则将目标元素从全局队列中移除;

目标元素为满足如下关系的元素:当前时间与元素值的差大于预设时间差阈值,或者,当前时间小于元素值。

本申请第二个方面,提供了一种电子设备,包括:

存储器;

处理器;以及

计算机程序;

其中,所述计算机程序存储在所述存储器中,并被配置为由所述处理器执行以实现如上述第一个方面所述的方法。

本申请第三个方面,提供了一种计算机可读存储介质,其上存储有计算机程序;所述计算机程序被处理器执行以实现如上述第一个方面所述的方法。

本申请提供一种基于网络的双机互备自动接管方法、设备、存储介质,该方法设置心跳计时器;在心跳计时器计时过程中,监测是否接收到互备设备发送的第一心跳信息;若心跳计时器到时后,仍未接收到第一心跳信息,则接管互备设备的工作。本申请在心跳计时器计时过程中,监测是否接收到互备设备发送的第一心跳信息;若心跳计时器到时后,仍未接收到第一心跳信息,则接管互备设备的工作,不仅实现了自动接管,而且避免了由于各个软件实现的双机互备自动接管功能代码与业务代码混淆,引起的逻辑混乱,降低了维护难度。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1为现有双机互备自动接管技术实现示意图;

图2为本申请实施例提供的一种基于网络的双机互备自动接管方法的实现流程示意图;

图3为本申请实施例提供的一种双机互备自动接管技术实现示意图;

图4为本申请实施例提供的一种心跳发送逻辑示意图;

图5为本申请实施例提供的一种自检故障自动接管机制逻辑示意图;

图6为本申请实施例提供的一种心跳故障自动接管机制逻辑示意图;

图7为本申请实施例提供的一种手动操作逻辑示意图;

图8为本申请实施例提供的一种手动非接管逻辑示意图。

具体实施方式

为了使本申请实施例中的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

在实现本申请的过程中,发明人发现,现有技术中,各种软件程序单独设计、开发各自的双机互备自动接管功能,功能设计、代码实现往往与其自身业务混合绑定,使软件代码变的逻辑混乱,难以维护。

针对上述问题,本申请实施例中提供了一种基于网络的双机互备自动接管方法、设备、存储介质,该方法设置心跳计时器;在心跳计时器计时过程中,监测是否接收到互备设备发送的第一心跳信息;若心跳计时器到时后,仍未接收到第一心跳信息,则接管互备设备的工作。本申请在心跳计时器计时过程中,监测是否接收到互备设备发送的第一心跳信息;若心跳计时器到时后,仍未接收到第一心跳信息,则接管互备设备的工作,不仅实现了自动接管,而且避免了由于各个软件实现的双机互备自动接管功能代码与业务代码混淆,引起的逻辑混乱,降低了维护难度。

参见图2,本实施例提供的基于网络的双机互备自动接管方法的实现过程如下:

101,设置心跳计时器。

在执行步骤之前,会启动当前设备(即执行本实施例提供的基于网络的双机互备自动接管方法的设备),启动后,设置第二工作模式为脱机状态,即设置当前设备的工作模式为脱机模式。

102,在心跳计时器计时过程中,监测是否接收到互备设备发送的第一心跳信息。

其中,第一心跳信息为互动设备的心跳信息,为了与当前设备(即执行本实施例提供的基于网络的双机互备自动接管方法的设备)的心跳信息进行区别,将互动设备的心跳信息命名为第一心跳信息,当前设备的心跳信息为第二心跳信息。

在执行本步骤之前,会通过多块网卡与互备设备建立多条通信连接。

第一心跳信息为互备设备每隔第一时间间隔,同时通过各条通信连接发送的。

同时,每隔第二时间间隔,同时通过各条通信连接,向互备设备发送第二心跳信息。

即,每隔第二时间间隔,执行如下步骤:

1、为每条通信连接对应一个单独的线程,该线程即心跳发送线程。

2、基于各线程,通过各条通信连接发送第二心跳信息。

在发送第二心跳信息之后,还会进入自检故障自动接管机制,检测当前硬件设备是否处于卡顿状态(如:硬盘损坏造成的卡顿、其他应用程序大量占用系统资源造成的卡顿等)。该机制实现过程为:

1)检测设备状态。

检测过程为:

(1)启动检测计时器,并休眠心跳发送线程预设时长。

其中,预设时长可以根据实际需要设置,例如1秒钟。

(2)心跳发送线程休眠结束时,确定检测计时器的实际计时时长。

预设时长是正常时钟的时长。以预设时长为1秒钟为例,检测计时器记录的是设备系统时间1秒钟所对应正常时钟的时长,在设备系统正常情况下,系统时间中的1秒钟与正常时钟的1秒钟是相同的,所以,如果设备系统正常,则休眠结束时检测计时器的实际计时时长也是1秒钟。但是,如果设备系统异常,由于卡顿等,设备系统认为的1秒钟会比正常时钟的1秒钟长,此时休眠结束时检测计时器的实际计时时长会大于1秒钟。

(3)若所实际计时时长大于时长阈值,则将当前时间加入全局队列。

其中,时长阈值可根据预设时长确定,例如,若预设时长为1秒钟,时长阈值可以为1050毫秒。

对于全局队列,会周期性的确定元素是否有效,进而将无效元素移除。确定过程为:

A.每隔第三时间间隔,遍历全局队列中的每个元素。

B.若存在目标元素,则将目标元素从全局队列中移除。

其中,目标元素为满足如下关系的元素:当前时间与元素值的差大于预设时间差阈值,或者,当前时间小于元素值。

其中时间差阈值如10秒。

(4)若当前全局队列中的元素数量大于数量阈值,则确定检测设备状态异常。

其中,数量阈值如4。

2)当设备状态异常时,确定第二工作模式。

3)在第二工作模式为非接管模式时,停止第二心跳信息的发送,设置第二工作状态为脱机。

其中,第一工作模式为互动设备的工作模式,为了与当前设备(即执行本实施例提供的基于网络的双机互备自动接管方法的设备)的工作模式进行区别,将互动设备的工作模式命名为第一工作模式,当前设备的心跳信息为第二工作模式。

工作模式同一时刻仅为一种状态,如工作模式为非接管模式,或者,工作模式为接管模式。工作状态可以为脱机,或者,非脱机。脱机状态表征设备状态异常,非脱机状态表征设备状态正常。

另外,第一时间间隔为互动设备发送心跳的时间间隔,为了与当前设备(即执行本实施例提供的基于网络的双机互备自动接管方法的设备)的发送心跳的时间间隔进行区别,将互动设备发送心跳的时间间隔命名为第一时间间隔,当前设备发送心跳的时间间隔命名为第二时间间隔。在实践中,优选的当前设备与互动设备同时发送心跳信息,即第一时间间隔与第二时间间隔相同,但是,也可以不同,本实施例不对第一时间间隔与第二时间间隔的关系进行限定。

第三时间间隔为全局队列的元素确认周期,本实施例不对第三时间将与第一时间间隔、第二时间间隔之间的关系进行限定。

此外,第一心跳信息包括互备设备当前的第一工作模式。第二心跳信息包括当前的第二工作模式。

103,若心跳计时器到时后,仍未接收到第一心跳信息,则接管互备设备的工作。

例如,设置第二工作模式为接管状态。

若心跳计时器到时前,接收到互备设备的第一心跳信息,则重置心跳计时器,并重新执行步骤102及后续步骤,即重新执行在心跳计时器计时过程中,监测是否接收到互备设备发送的第一心跳信息的步骤及后续步骤。

本实施例提供的基于网络的双机互备自动接管方法在具体应用时,如图3所示,如上图所示,设备A、设备B分别负责各自的工作。且设备A和设备B均各自执行本实施例提供的基于网络的双机互备自动接管方法,进行自动接管。例如,设备A、设备B之间可以建立多个通信(不限定通信协议,只要满足本方法规定的功能即可),互相发送心跳信息。设备A、设备B内部包含心跳超时器,当一段时间未收到对方的心跳,心跳超时器便会超时,本方便会认为对方出现了故障,无法继续负责自身的工作。此时,本方便会自动接管对方负责的工作。

本实施例提供的基于网络的双机互备自动接管方法,不规定如何“自动接管”对方的工作,而是给出一个“自动接管”的通知。当上层模块获取到“自动接管”的通知后,进行相应的处理。

参见图3所示,本实施例通过的基于网络的双机互备自动接管方法分别执行于设备A和设备B,下面仅以设备A执行本实施例通过的基于网络的双机互备自动接管方法为例,再次说明。对于设备B执行本实施例通过的基于网络的双机互备自动接管方法的过程,参见设备A。

1、设备A启动,设置设备A的工作模式(即第二工作模式)为脱机状态。

2、通过设备A的多块网卡与设备B建立多条通信连接。以使设备B每隔第一时间间隔,同时通过各条通信连接向设备A发送心跳信息(即第一心跳新)。

同时,每隔第二时间间隔,如图4所示,设备A同时通过各条通信连接,向设备B发送心跳信息(即第二心跳信息)后。设备A和设备B均进入自检故障自动接管机制。下面以设备A为例进行说明,设备B采用同样的方案,如图5所示:

(1)启动检测计时器。

(2)休眠心跳发送线程1秒钟。

(3)心跳发送线程休眠结束时,停止计时器,确定检测计时器的实际计时时长。

(4)若所实际计时时长大于1050毫秒,则将当前时间加入全局队列。

(5)遍历全局队列中的每个元素,若全局队列中存在当前时间-元素值>10秒,或者,当前时间小于元素值,则将该元素移除。

(6)若当前全局队列中的元素数量大于4,则确定检测设备状态异常。

(7)若设备A的工作模式(即第二工作模式)为非接管模式时,停止第二心跳信息的发送,将设备B的工作模式(即第一工作模式)设置为接管模式。

(8)若设置成功,则将设备A的工作状态(即第二工作状态)设置为脱机。

同时,设备A和设备B均会根据对方发送的心跳信息,对对方的状态进行判断。仍以设备A为例,对于设备B采用同样方案实现,如图6所示,

(1)设备A设置心跳计时器,在心跳计时器计时过程中,监测是否接收到设备B发送的心跳信息(即第一心跳信息)。如果收到,则重置心跳计时器。

(2)如果没有收到,则判断心跳计时器是否超时,如果超时则确定设备A的工作模式(即第二工作模式)是否为非接管模式。

(3)若设备A的工作模式为非接管模式,则设置设备B的工作状态(即第一工作状态)为脱机(允许设置失败)。

(4)将设备A的工作模式(即第二工作模式)设置为接管模式。

进而实现设备A接管设备B。

另外,在具体实现时,本实施例提供的基于网络的双机互备自动接管方法基于当前设备,即执行本实施例提供的基于网络的双机互备自动接管方法的设备(如设备A,或者设备B)的外部接口、内部接口、内部实现。

1、外部接口

外部接口是指该实现方法对外部调用方开放的接口,调用方通过外部接口可以实现与该实现方法的交互。

外部接口函数如表1所示。

表1

2、内部接口

内部接口,是指2台设备之间的通信接口。

2台设备之间,如果心跳链路故障,那么2台计算机都无法收到对方的心跳,都会认为对方发生了故障,从而导致2台设备都开始自动接管,出现问题。为了解决这个问题,本实施例支持2台设备之间通过多块网卡建立多条心跳链路,从而保证在一条链路故障情况下,2台设备仍然正常工作。通过外部接口的is_exist_broken_line接口函数,可以检查损坏链路的信息,用于维护。

内部接口函数如表2所示。

表2

主备设备(即设备A和设备B)之间的心跳信息,只包含自身当前的工作模式。

3、内部实现

2台计算机设备之间,通过内部接口中的心跳接口函数,互相通知自己的存活状态,心跳发送的默认频率为2.5次/秒。在当前设备中设有超时器,默认超时时间为3秒,每次接收到对方的心跳,都会重置超时器。假如长时间未收到对方的心跳,那么超时器便会超时,此时认为对方发生故障,当前设备会自动通过外部接口向使用者反馈“自动接管”的通知,并设置当前工作模式为接管状态。

本实施例提供的基于网络的双机互备自动接管方法只负责给出是否接管对方的通知,并不负责具体接管逻辑。

本实施例的方法为防止由于硬件设备故障引起的包装播出控制链路中断问题,都采用主备路冗余配置,来避免单路故障引起的控制链路中断。双机采用心跳来判断对方设备是否正常,如果发现心跳断开则判断为对方设备故障,自动进行接管。为避免心跳线路故障导致的主备双重控制问题引起的播出控制混乱,使用了双心跳链路,双心跳均采用2块独立网线连接、独立线程管理,最大限度地避免了心跳之间的干扰。

另外,为了避免当设备本身出现故障,或软件部分线程故障,但并未完全死机时,会出现心跳正常,指令不发送或指令发送延时,导致包装播出异常。还会自动检测当前程序的核心线程的程序循环(包装管理机为包装执行单生成发送线程,包装控制机为指令发送线程),设置循环时间阈值,检测循环执行是否超过设定阈值,超过阈值判定为超时,当发现在规定的时间段内超时次数超过设定次数判定为程序故障,此时暂停心跳发送线程,并通知对方进行接管操作,待对方接管成功后,将自身脱机。因此,本实施例提供的基于网络的双机互备自动接管方法的内部实现包括以下部分:心跳发送与自检故障逻辑、自检故障自动接管逻辑、心跳接收与心跳故障自动接管逻辑、手动操作逻辑。

下面分别进行介绍:

1)心跳发送与自检故障逻辑

在内部实现中,2台计算机设备之间,通过内部接口中的心跳接口函数发送心跳,互相通知自己的存活状态,心跳发送的默认频率为2.5次/秒,每根心跳线缆对应一个单独的线程进行心跳的发送。每个心跳发送线程,按照图4所示逻辑不断地发送心跳。同时,在心跳发送完成后,会进入“自检故障自动接管机制”,检测当前硬件设备是否处于卡顿状态(如:硬盘损坏造成的卡顿、其他应用程序大量占用系统资源造成的卡顿等)。

2)自检故障自动接管机制

检测当前硬件设备是否处于卡顿状态(如:硬盘损坏造成的卡顿、其他应用程序大量占用系统资源造成的卡顿等)。当检测到硬件设备出现卡顿后将执行该逻辑,将自身设置为脱机状态,将对方设置为接管状态,防止自身由于硬件设备卡顿的原因造成业务逻辑处理问题。

3)心跳接收与心跳故障自动接管机制

在内部实现中,会开启一个单独线程用来处理心跳的接收,多根心跳线上心跳的接收都由该线程依次处理。该线程会不断地重复执行下图逻辑,默认循环间隔时间为100毫秒。同时,会设置一个心跳超时器,默认超时时间为3秒,每次接收到对方的心跳,都会重置超时器。假如长时间未收到对方的心跳,那么心跳超时器便会超时,此时认为对方发生故障,进行自动接管。

4)手动操作逻辑

规定了2种手动操作逻辑:手动接管逻辑、手动非接管逻辑。这2种手动操作逻辑都通过外部接口中的set_workmode接口实现,接口参数规定只能为接管、非接管,否则会提示错误。

手动操作逻辑如图7所示。

手动非接管逻辑如图8所示。

仍以图3为例,假设设备A、设备B都未启动,那么设备A、设备B需要按照如下方式启动:

1、启动设备A,默认启动后的工作模式为脱机状态,此时设备A通过外部接口is_control_myself、is_control_standby获取到的值都为false,因此设备A不进行任何工作。

2、通过外部接口set_workmode,将设备A的工作模式设置为接管状态。此时,设备A通过外部接口is_control_myself、is_control_standby获取到的值都为true,因此设备A开始工作,既要负责本身的工,也会负责设备B的工作。此时,工作正常运行。

3、启动设备B,启动后默认为脱机,此时设备B通过外部接口is_control_myself、is_control_standby获取到的值都为false,因此设备B不进行任何工作。此时,设备A仍然为接管状态,同时负责本身、设备B的工作。

4、通过外部接口set_workmode,将设备B的工作模式设置为非接管状态。按照“手动设置为非接管状态”的逻辑,设备A、设备B都将变为非接管状态,每个设备通过外部接口is_control_myself获取到的值为true,从外部接口is_control_standby获取到的值为false,因此设备A只控制自身的工作,设备B只控制自身的工作。设备A、设备B进入双机互备自动接管的工作模式。

本实施例提供的基于网络的双机互备自动接管方法,通过对线程Sleep函数执行时间的计时,可以检测设备的运行卡顿状态。如果设备出现运行卡顿(可能由硬盘损坏、其他应用程序占用资源等原因引起),会影响设备中所有软件的工作效率,无法保证实时性。当发现运行卡顿后,可以按照逻辑使自身脱机、对方接管,从而使系统可以自动切换,防止引起故障。

本实施例提供一种基于网络的双机互备自动接管方法,设置心跳计时器;在心跳计时器计时过程中,监测是否接收到互备设备发送的第一心跳信息;若心跳计时器到时后,仍未接收到第一心跳信息,则接管互备设备的工作,不仅实现了自动接管,而且避免了由于各个软件实现的双机互备自动接管功能代码与业务代码混淆,引起的逻辑混乱,降低了维护难度。

基于网络的双机互备自动接管方法的同一发明构思,本实施例提供一种电子设备,该电子设备包括:存储器,处理器,以及计算机程序。

其中,计算机程序存储在存储器中,并被配置为由处理器执行以实现上述基于网络的双机互备自动接管方法。

具体的,

设置心跳计时器。

在心跳计时器计时过程中,监测是否接收到互备设备发送的第一心跳信息。

若心跳计时器到时后,仍未接收到第一心跳信息,则接管互备设备的工作。

可选地,监测是否接收到互备设备发送的第一心跳信息之后,还包括:

若心跳计时器到时前,接收到互备设备的第一心跳信息,则重置心跳计时器,并重新执行在心跳计时器计时过程中,监测是否接收到互备设备发送的第一心跳信息的步骤及后续步骤。

可选地,在心跳计时器计时过程中,监测是否接收到互备设备发送的第一心跳信息之前,还包括:

通过多块网卡与互备设备建立多条通信连接。

第一心跳信息为互备设备每隔第一时间间隔,同时通过各条通信连接发送的。

可选地,接管互备设备的工作,包括:

在第二工作模式为非接管模式时,若互备设备的第一工作状态为脱机,则将第二工作模式设置为接管模式。

可选地,通过多块网卡与互备设备建立多条通信连接之后,还包括:

每隔第二时间间隔,同时通过各条通信连接,向互备设备发送第二心跳信息。

可选地,每隔第二时间间隔,同时通过各条通信连接,向互备设备发送第二心跳信息之后,还包括:

检测设备状态。

当设备状态异常时,确定第二工作模式。

在第二工作模式为非接管模式时,停止第二心跳信息的发送,设置第二工作状态为脱机。

可选地,检测设备状态,包括:

启动检测计时器,并休眠心跳发送线程预设时长。

心跳发送线程休眠结束时,确定检测计时器的实际计时时长。

若所实际计时时长大于时长阈值,则将当前时间加入全局队列。

若当前全局队列中的元素数量大于数量阈值,则确定检测设备状态异常。

可选地,方法还包括:

每隔第三时间间隔,遍历全局队列中的每个元素。

若存在目标元素,则将目标元素从全局队列中移除。

目标元素为满足如下关系的元素:当前时间与元素值的差大于预设时间差阈值,或者,当前时间小于元素值。

本实施例提供的电子设备,其上计算机程序被处理器执行以在心跳计时器计时过程中,监测是否接收到互备设备发送的第一心跳信息;若心跳计时器到时后,仍未接收到第一心跳信息,则接管互备设备的工作,不仅实现了自动接管,而且避免了由于各个软件实现的双机互备自动接管功能代码与业务代码混淆,引起的逻辑混乱,降低了维护难度。

基于网络的双机互备自动接管方法的同一发明构思,本实施例提供一种计算机可其上存储有计算机程序。计算机程序被处理器执行以实现上述基于网络的双机互备自动接管方法。

具体的,

设置心跳计时器。

在心跳计时器计时过程中,监测是否接收到互备设备发送的第一心跳信息。

若心跳计时器到时后,仍未接收到第一心跳信息,则接管互备设备的工作。

可选地,监测是否接收到互备设备发送的第一心跳信息之后,还包括:

若心跳计时器到时前,接收到互备设备的第一心跳信息,则重置心跳计时器,并重新执行在心跳计时器计时过程中,监测是否接收到互备设备发送的第一心跳信息的步骤及后续步骤。

可选地,在心跳计时器计时过程中,监测是否接收到互备设备发送的第一心跳信息之前,还包括:

通过多块网卡与互备设备建立多条通信连接。

第一心跳信息为互备设备每隔第一时间间隔,同时通过各条通信连接发送的。

可选地,接管互备设备的工作,包括:

在第二工作模式为非接管模式时,若互备设备的第一工作状态为脱机,则将第二工作模式设置为接管模式。

可选地,通过多块网卡与互备设备建立多条通信连接之后,还包括:

每隔第二时间间隔,同时通过各条通信连接,向互备设备发送第二心跳信息。

可选地,每隔第二时间间隔,同时通过各条通信连接,向互备设备发送第二心跳信息之后,还包括:

检测设备状态。

当设备状态异常时,确定第二工作模式。

在第二工作模式为非接管模式时,停止第二心跳信息的发送,设置第二工作状态为脱机。

可选地,检测设备状态,包括:

启动检测计时器,并休眠心跳发送线程预设时长。

心跳发送线程休眠结束时,确定检测计时器的实际计时时长。

若所实际计时时长大于时长阈值,则将当前时间加入全局队列。

若当前全局队列中的元素数量大于数量阈值,则确定检测设备状态异常。

可选地,方法还包括:

每隔第三时间间隔,遍历全局队列中的每个元素。

若存在目标元素,则将目标元素从全局队列中移除。

目标元素为满足如下关系的元素:当前时间与元素值的差大于预设时间差阈值,或者,当前时间小于元素值。

本实施例提供的计算机可读存储介质,其上的计算机程序被处理器执行以在心跳计时器计时过程中,监测是否接收到互备设备发送的第一心跳信息;若心跳计时器到时后,仍未接收到第一心跳信息,则接管互备设备的工作,不仅实现了自动接管,而且避免了由于各个软件实现的双机互备自动接管功能代码与业务代码混淆,引起的逻辑混乱,降低了维护难度。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请实施例中的方案可以采用各种计算机语言实现,例如,面向对象的程序设计语言Java和直译式脚本语言JavaScript等。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在本申请的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

在本申请中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接或可以互相通讯;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本申请中的具体含义。

尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

技术分类

06120115686449