对端状态检测方法、装置及设备的制作方法

文档序号:7859132阅读:90来源:国知局
专利名称:对端状态检测方法、装置及设备的制作方法
技术领域
本发明涉及通信技木,尤其涉及一种对端状态检测方法、装置及设备。
背景技术
目前识别对端状态常用的方法是通过心跳探測机制来识别对端状态,根据对对端状态的识别,可以及时进行故障状态转移、主备状态选举等操作,还可以在探测到对端存在或探测到对端故障时提供相关事件的通告。心跳探測机制的过程是第一设备周期性的向作为其对端的第二设备发送心跳消息,如果第二设备未在心跳超时时间内接收到第一设备发送的心跳消息,则第二设备判定第一设备发生故障。
现有心跳探測机制实现简单,但灵敏度较低,无法探测到对端“闪断”的情況。例如,假设心跳消息的发送周期为10s,心跳超时时间为30s,如果第一设备在Os和IOs分别发送了心跳消息,而在Ils时故障(例如系统崩溃),因此重新启动,在38s时第一设备发送了重启后的第一个心跳消息。从时序上来看,第二设备会收到第一设备在0s、10s和38s时发送的心跳消息,心跳消息仅在10s-38s这段时间内丢失,并未超出心跳超时时间(SP30s),所以第二设备会认为第一设备一直处于在线状态,不会探測到第一设备的这次“闪断”,但是实际上第一设备已经重新启动过,第一设备与第二设备的状态已经不同步,这将导致双机的故障状态转移、主备状态选举等运行错乱。

发明内容
本发明提供一种对端状态检测方法、装置及设备,用以解决现有心跳探測机制无法探测到对端“闪断”的问题。本发明一方面提供一种对端状态检测方法,包括第二设备接收对端的第一设备发送的第一心跳消息,所述第一心跳消息携帯有第一会话标识ID,所述第一会话ID是对应于所述第一设备上当前状态检测过程的会话ID,其中,不同状态检测过程对应的会话ID不同;所述第二设备判断所述第一会话ID与所述第二设备本地存储的第二会话ID是否相同,所述第二会话ID是对应于所述第二设备上当前状态检测过程的会话ID ;如果判断结果为不相同,所述第二设备判定所述第一设备发生过故障。本发明一方面还提供一种对端状态检测装置,设置在第二设备中,所述装置包括第一接收模块,用于接收对端的第一设备发送的第一心跳消息,所述第一心跳消息携帯有第一会话标识ID,所述第一会话ID是对应于所述第一设备上当前状态检测过程的会话ID,其中,不同状态检测过程对应的会话ID不同;第一判断模块,用于判断所述第一会话ID与所述第二设备本地存储的第二会话ID是否相同,所述第二会话ID是对应于所述第二设备上当前状态检测过程的会话ID ;判定模块,用于在所述第一判断模块判断出所述第一会话ID与所述第二会话ID不相同时,判定所述第一设备发生过故障。本发明另一方面提供一种对端状态检测方法,包括第一设备生成第一心跳消息,所述第一心跳消息携帯有第一会话标识ID,所述第ー会话ID是对应于所述第一设备上当前状态检测过程的会话ID,其中,不同状态检测过程对应的会话ID不同;所述第一设备将所述第一心跳消息发送给对端的第二设备,以使所述第二设备根据所述第一会话ID和所述第二设备本地存储的第二会话ID判断所述第一设备的状态,所述第二会话ID是对应于所述第二设备上当前状态检测过程的会话ID。本发明另一方面还提供一种对端状态检测装置,设置在第一设备中,所述装置包括 第二生成模块,用于生成第一心跳消息,所述第一心跳消息携帯有第一会话标识ID,所述第一会话ID是对应于所述第一设备上当前状态检测过程的会话ID,其中,不同状态检测过程对应的会话ID不同;第二发送模块,用于将所述第一心跳消息发送给对端的第二设备,以使所述第二设备根据所述第一会话ID和所述第二设备本地存储的第二会话ID判断所述第一设备的状态,所述第二会话ID是对应于所述第二设备上当前状态检测过程的会话ID。本发明又一方面还提供ー种设备,包括本发明一方面提供的任一对端状态检测装置,和/或,本发明另一方面提供的对端状态检测装置。本发明提供的对端状态检测方法、装置及设备,第二设备与对端的第一设备使用会话ID表征不同的状态检测过程,第二设备接收第一设备发送的携帯有表征第一设备上当前状态检测过程的第一会话ID,然后将第一会话ID和表征第二设备上当前状态检测过程的第二会话ID进行比较,通过判断两端上当前的状态检测过程是否对应来判断第一设备是否发生过“闪断”等故障,如果两个会话ID不相同,说明两端当前的状态检测过程不相同,因此可以判定第一设备发生过“闪断”等故障并重启了,由此可见,本发明技术方案解决了现有心跳探測机制无法探测到对端“闪断”等故障的问题。


图I为本发明一实施例提供的对端状态检测方法的流程图;图2为本发明另ー实施例提供的对端状态检测方法的流程图;图3为本发明又一实施例提供的对端状态检测方法的流程图;图4为本发明又一实施例提供的对端状态检测方法的流程图;图5为本发明又一实施例提供的对端状态检测方法的流程图;图6为本发明又一实施例提供的对端状态检测方法的流程图;图7为本发明又一实施例提供的对端状态检测方法的流程图;图8为本发明又一实施例提供的对端状态检测方法的流程图;图9为本发明又一实施例提供的对端状态检测方法的流程图;图10为本发明又一实施例提供的对端状态检测方法的流程图;图11为本发明一实施例提供的对端状态检测装置的结构示意图;图12为本发明另ー实施例提供的对端状态检测装置的结构示意图13为本发明又一实施例提供的对端状态检测装置的结构示意图;图14为本发明又一实施例提供的对端状态检测装置的结构示意图。
具体实施例方式图I为本发明一实施例提供的对端状态检测方法的流程图。如图I所示,本实施例的方法包括步骤101、第二设备接收对端的第一设备发送的第一心跳消息,该第一心跳消息携带有第一会话标识(ID),该第一会话ID是对应于第一设备上当前状态检测过程的会话ID,其中,不同状态检测过程对应的会话ID不同。
步骤102、第二设备判断第一会话ID与第二设备本地存储的第二会话ID是否相同,该第二会话ID是对应于第二设备上当前状态检测过程的会话ID ;如果判断结果为否,即不相同,执行步骤103 ;如果判断结果为是,即相同,则可以结束操作。步骤103、第二设备判定第一设备发生过故障。在本实施例中,第二设备判定第一设备发生过的故障主要是指“闪断”故障,但不限于此,例如也可以是现有心跳探測机制无法检测到的其他故障。其中,第二设备与第一设备互为对端,本实施例以第二设备检测第一设备的状态为例进行说明,但不限于此。本实施例的方法同样适用于第一设备检测第二设备的状态。在此说明,本发明以下各实施例中,第一设备上当前状态检测过程实际上是指第一设备确定的当前第二设备对第一设备进行状态检测的过程;第二设备上当前状态检测过程实际上是指第二设备确定的当前第二设备对第一设备进行状态检测的过程。在本实施例中,第一设备向第二设备发送心跳消息,第二设备接收第一设备发送的心跳消息,从而获知第一设备的状态。其中,当第二设备接收到第一设备发送的心跳消息时,可以判断第一设备未发生故障,即对第二设备来说,第一设备是正常存在的。进ー步,为了检测第一设备是否发生过“闪断”等故障,本实施例中的第一设备与第二设备使用会话ID表征状态检测过程。其中,不同状态检测过程对应的会话ID不同。另外,第一设备和第二设备上对应的状态检测过程对应相同的会话ID。其中,如果第一设备在第二设备上的某一状态检测过程中未发生故障,第一设备与第二设备上的状态检测过程是对应的,两端使用的表征状态检测过程的会话ID也是相同的;反之,如果第一设备在第二设备上的某一状态检测过程中发生了故障,则第一设备与第二设备上的状态检测过程就会不对应,则两端使用的表征状态检测过程的会话ID就会不同。在本实施例中,第二设备正是通过判断第一设备与第二设备上的状态检测过程是否对应来判断第一设备是否发生了“闪断”等故障的。更为具体的,第二设备通过判断第一设备发送的心跳消息携帯的会话ID与本地存储的会话ID是否相同,来判断第一设备与第二设备上当前状态检测过程是否相同。于是,第一设备向第二设备发送第一心跳消息时,在第一心跳消息中携帯表征第一设备上当前状态检测过程的第一会话ID。其中,如果第一设备上当前状态检测过程是与第二设备上当前状态检测过程相对应的状态检测过程,则第一会话ID就与第二设备本地存储的第二会话ID相同,则第二设备就会判断出第一会话ID与第二会话ID相同。如果第一设备上当前状态检测过程不是与第二设备上当前状态检测过程对应的状态检测过程,则第一会话ID就与第二会话ID不相同,则第二设备就会判断出第一会话ID与第二会话ID不相同。如果第二设备判断出第一会话ID与第二会话ID相同,说明第一设备在第二设备上当前状态检测过程中未发生过“闪断”故障。则第二设备可以结束操作。可选的,第二设备也可以判定第一设备在第二设备上当前状态检测过程中尚未发生过“闪断”故障。如果第二设备判断出第一会话ID与第二会话ID不相同,说明第一设备在第二设备上当前状态检测过程中发生过“闪断”,因此才导致第一会话ID与第二会话ID不相同,所以可以判定第一设备在第二设备上当前状态检测过程中发生过故障。其中,如果第一设备发生“闪断”,意味着第一设备在很短时间内故障并重新启动,由于第一设备重新启动了,所以第一设备重新启动的状态检测过程与“闪断”之前的状态检测过程属于不同的状态检测过程,所使用的会话ID并不相同,而第二设备按照现有心跳探測机制尚未发现第一设备发生了“闪断”,所以使用的会话ID仍是第一设备发生“闪断”之前使用的会话ID,因此,在第 一设备发生“闪断”的情况下,第二设备会判断出第一会话ID与第二会话ID不相同。在本实施例的一可选实施方式中,第二设备在检测出第一设备发生过故障后,可以向第二设备或管理员等通告第二设备发生过故障,以便于及时采取相应处理操作。例如,管理员可以及时对第一设备和第二设备进行状态同步,或者用第一设备的备份替换第一设备,保证有关业务的正常运行等。本发明提供的对端状态检测方法,第二设备与对端的第一设备使用会话ID表征不同的状态检测过程,第二设备接收第一设备发送的携帯有表征第一设备上当前状态检测过程的第一会话ID,然后将第一会话ID和表征第二设备上当前状态检测过程的第二会话ID进行比较,通过判断两端上当前的状态检测过程是否对应来判断第一设备是否发生过“闪断”等故障,如果两个会话ID不相同,说明两端当前的状态检测过程不相同,因此可以判定第一设备发生过“闪断”等故障并重启了,由此可见,本实施例解决了现有心跳探測机制无法探测到对端“闪断”等故障的问题,为基于对对端状态检测结果的故障状态转移、主备状态选举、对端状态通告等操作提供了有利条件,为这些操作成功执行打下了基础。图2为本发明另ー实施例提供的对端状态检测方法的流程图。本实施例基于图I所示实施例实现,如图2所示,本实施例在步骤101之前包括步骤201、第二设备生成第二会话ID,将第二会话ID发送给第一设备,以使第一设备将第二会话ID作为第一设备上与第二设备上当前状态检测过程对应的状态检测过程对应的会话ID并存储在本地。本实施例主要描述由进行检测的设备(即第二设备)负责为当前状态检测过程生成对应的会话ID,并将该会话ID提供给被检测的设备(即第一设备),以使被检测的设备在该状态检测过程中能够使用该会话ID。具体的,第二设备可以在启动第二设备上当前状态检测过程时或之前,生成表征第二设备上当前状态检测过程的第二会话ID。第二设备生成第二会话ID后,将第二会话ID存储在本地,以便于对对端的第一设备进行状态检測。另外,第二设备将该第二会话ID提供给第一设备,以使第一设备使用第二会话ID表征第一设备上与第二设备上当前状态检测过程对应的状态检测过程,并在该过程中向第二设备发送携帯有第二会话ID的心跳消息。可选的,第二设备将第二会话ID提供给第一设备的方式不做限定,例如可以携带在第二设备发送给第一设备的心跳消息中,或者携帯在专门定义的消息中发送给第一设备。可选的,由于不同的会话ID表征不同的状态检测过程,因此,第一设备和第二设备可以临时存储会话ID,一旦该会话ID表征的状态检测过程结束,该会话ID会被删除或丢失。在此说明,如果第一设备上当前状态检测过程是与第二设备上当前状态检测过程对应的状态检测过程,则第一设备发送的第一心跳消息中携帯的第一会话ID就是第二会话ID。在该情况下,第二设备会判断出第一会话ID与第二会话ID相同。如果第一设备上当前状态检测过程不是与第二设备上当前状态检测过程对应的状态检测过程,例如第一设备上当前状态检测过程是在第一设备发生“闪断”之后重新启动 的状态检测过程,则第一设备发送的第一心跳消息中携帯的第一会话ID不是第二会话ID,其中,第二会话ID会因为第一设备发生“闪断”而丢失。在该情况下,第二设备会判断出第ー会话ID与第二会话ID不相同。在此说明,第一设备上预先设置有ー默认的会话ID (简称为预设的会话ID),当第ー设备上不存在第二设备发送的会话ID时,第一设备会将预设的会话ID作为当前状态检测过程对应的会话ID。该预设的会话ID与第二设备生成的各会话ID不相同。这样,第一设备因发生“闪断”而重启后,会使用预设的会话ID作为第一会话ID,然后生成第一心跳消息,所以第一心跳消息中的第一会话ID与第二会话ID不相同。在此说明,第二设备可以采用各种方法生成能够唯一表征每个状态检测过程的会话ID,例如可以采用随机生成方法。可选的,本实施例使用的表征状态检测过程的会话ID可以是通用唯一识别码(Universally Unique Identif ier,简称为 UUID),但不限于此。在本实施例的一可选实施方式中,如图3所示,本实施例的方法在步骤101之前还包括步骤202、第二设备判断心跳超时时间是否到达,如果判断结果为是,即心跳超时时间到达,则执行步骤203 ;如果判断结果为否,即心跳超时时间未到达,则执行步骤101。优选的,步骤202可以在步骤201之后执行,并重新启动对心跳超时时间的计时。步骤203、第二设备判定第一设备发生故障。在本实施例中,第一设备周期性的向第二设备发送第一心跳消息,第二设备上设置有心跳超时时间,如果在心跳超时时间内未接收到第一设备发送的第一心跳消息,则说明第一设备发生故障或丢失,如果在心跳超时时间内接收到第一设备发送的第一心跳消息,则说明第一设备一直存在或者重新出现。在第一设备存在或重新出现的情况下,本实施例的第二设备通过将第一心跳消息携帯的第一会话ID与本地存储的第二会话ID进行比较,进一歩判断第一设备是否发生过“闪断”等无法通过心跳超时时间判断出的故障。可选的,当第二设备判定第一设备发生故障后,可以向第二设备和/或管理员发出故障通告,这样第一设备和第二设备可以重新进行状态同歩。在第一设备与第二设备进行状态同步后,第一设备可以继续向第二设备发送心跳消息,而第二设备可以继续接收第一设备发送的心跳消息,该过程以及后续过程与本实施例提供的处理第一心跳消息的过程相同。本实施例通过使用心跳超时时间判断心跳消息是否发生丢失,以探测对端是否发生故障,进ー步与会话ID相结合可以提高探测灵敏度。图4为本发明又一实施例提供的对端状态检测方法的流程图。本实施例可基于图I所示实施例实现,如图4所示,本实施例的方法在步骤101之前包括步骤301、第二设备接收第一设备发送的第二心跳消息,第二心跳消息是第一设备上与第二设备上当前状态检测过程对应的状态检测过程中的第一个心跳消息,该第二心跳消息携帯有第二会话ID。步骤302、第二设备将第二会话ID存储在本地。在本实施例中,第二会话ID除了表征第二设备上当前状态检测过程之外,同时还表征第一设备上与第二设备上当前状态检测过程对应的状态检测过程。
具体的,第一设备在启动与第二设备上当前状态检测过程对应的状态检测过程吋,生成表征该状态检测过程的会话ID,即第二会话ID,一方面将第二会话ID存储在本地,另ー方面将第二会话ID携帯在该状态检测过程中的第一个心跳消息(即第二心跳消息)中发送给第二设备。第二设备接收第一设备发送的第二心跳消息,从中获取第二会话ID,由于第二心跳消息是在当前状态检测过程中接收到的第一个心跳消息,所以第二设备上尚未存在表征当前状态检测过程的会话ID,于是将第二会话ID存储在本地,用以表征当前状态检测过程。可选的,第一设备和第二设备可以临时存储第二会话ID。本实施例主要描述由被检测的设备(即第一设备)在每次启动状态检测过程时生成会话ID,并通过第一个心跳消息将会话ID提供给进行检测的设备(即第二设备),以供进行检测的设备在对应的状态检测过程中能够使用该会话ID。其中,第一设备在毎次启动状态检测过程时生成的会话ID不同,例如可以使用但不限于随机生成方法等生成会话ID。另夕卜,当一个状态检测过程结束后,第二设备会将对应的会话ID删除,相当于重新初始化,以便于在下ー个状态检测过程对第一设备进行状态检测。如果第一设备上当前状态检测过程是与第二设备上当前状态检测过程对应的状态检测过程,则第一设备发送的第一心跳消息中携帯的第一会话ID就是第二会话ID。在该情况下,第二设备会判断出第一会话ID与第二会话ID相同。如果第一设备上当前状态检测过程不是与第二设备上当前状态检测过程对应的状态检测过程,例如第一设备上当前状态检测过程是在第一设备发生“闪断”之后重新启动的状态检测过程,则第一设备发送的第一心跳消息中携帯的第一会话ID不是第二会话ID,其中,第二会话ID会因为第一设备发生“闪断”而丢失,而第一设备会重新为新的状态检测过程生成会话ID,即第一会话ID。在该情况下,第二设备会判断出第一会话ID与第二会话ID不相同。基于上述,如果第二设备判断出第一会话ID与第二会话ID不相同,则第二设备将第二会话ID删除,以重新存储新的状态检测过程对应的会话ID。在本实施例的一可选实施方式中,如图5所示,本实施例的方法在步骤101之前还包括步骤303、第二设备判断心跳超时时间是否到达,如果判断结果为是,即心跳超时时间到达,则执行步骤304;如果判断结果为否,即心跳超时时间未到达,则执行步骤101,并重新启动对心跳超时时间的计时。优选的,步骤303可以在步骤302之后执行。
步骤304、第二设备判定第一设备发生故障。该实施方式可參见图3所示实施例中相应步骤的描述,在此不再赘述。本实施例通过使用心跳超时时间判断心跳消息是否发生丢失,以探测对端是否发生故障,进ー步与会话ID相结合可以提高探测灵敏度。图6为本发明又一实施例提供的对端状态检测方法的流程图。如图6所示,本实施例的方法包括步骤601、第一设备生成第一心跳消息,该第一心跳消息携帯有第一会话ID,该第ー会话ID是对应于第一设备上当前状态检测过程的会话ID,其中,不同状态检测过程对应的会话ID不同。 步骤602、第一设备将第一心跳消息发送给对端的第二设备,以使第二设备根据第ー会话ID和第二设备本地存储的第二会话ID判断第一设备的状态,该第二会话ID是对应于第二设备上当前状态检测过程的会话ID。在本实施例中,第一设备与第二设备互为对端,本实施例以第二设备检测第一设备的状态为例进行说明,但不限于此。本实施例的方法同样适用于第一设备检测第二设备的状态。为了使第二设备能够成功检测到第一设备是否发生“闪断”等故障,第一设备与第ニ设备相配合,使用会话ID表征不同的状态检测过程,并在发送给第二设备的第一心跳消息中携帯表征第一设备上当前状态检测过程的第一会话ID。然后,第一设备将携帯第一会话ID的第一心跳消息发送给第二设备,这样第二设备就可以通过比较第一会话ID与本地存储的表征第二设备上当前状态检测过程的第二会话ID,来判断第一设备是否曾经发生过“闪断”等故障。关于第二设备比较第一会话ID与第二会话ID,来判断第一设备是否曾经发生过“闪断”等故障的详细过程可參见上述实施例中的描述,在此不再赘述。在本实施例中,第一设备与第二设备相配合,使用不同的会话ID表征不同的状态检测过程,使得第二设备可以成功检测到第一设备是否发生过“闪断”等故障,解决了现有心跳探測机制无法探测到对端“闪断”等故障的问题,为基于对对端状态检测结果的故障状态转移、主备状态选举、对端状态通告等操作提供了有利条件,为这些操作成功执行打下了基础。图7为本发明又一实施例提供的对端状态检测方法的流程图。本实施例可基于图6所示实施例实现,如图7所示,本实施例的方法在步骤601之前包括步骤701、第一设备接收第二设备发送的第二会话ID。步骤702、第一设备将第二会话ID作为第一设备上与第二设备上当前状态检测过程对应的状态检测过程对应的会话ID,并存储在本地。本实施例主要描述由进行检测的设备(即第二设备)负责为当前状态检测过程生成对应的会话ID,并将该会话ID提供给被检测的设备(即第一设备),以使被检测的设备在该状态检测过程中能够使用该会话ID。对第一设备来说,会在与第二设备上当前状态检测过程对应的状态检测过程中,接收第二设备提供的第二会话ID,并将第二会话ID存储在本地,用以表征与第二设备上当前状态检测过程对应的状态检测过程。这样,如果第一设备上当前状态检测过程就是对应于第二设备上当前状态检测过程的状态检测过程,则第一设备发送的第一心跳消息中携帯的第一会话ID就是第二会话ID。如果第一设备上当前状态检测过程不是对应于第二设备上当前状态检测过程的状态检测过程(例如是故障重启后重新启动的状态检测过程),则第一设备发送的第一心跳消息中携帯的第一会话ID不是第二会话ID0可选 的,由于不同的会话ID表征不同的状态检测过程,因此,第一设备和第二设备可以临时存储会话ID,一旦该会话ID表征的状态检测过程结束,该会话ID会被删除或丢失。在此说明,第一设备上预先设置有ー默认的会话ID (简称为预设的会话ID),当第ー设备上不存在第二设备发送的会话ID时,第一设备会将预设的会话ID作为当前状态检测过程对应的会话ID。该预设的会话ID与第二设备生成的各会话ID不相同。这样,第一设备因发生“闪断”而重启后,由于之前临时存储的会话ID丢失,所以会使用预设的会话ID作为第一会话ID,然后生成第一心跳消息,所以在发生“闪断”生成的第一心跳消息中的第ー会话ID与第二会话ID不相同。基于上述,步骤601的具体实施方式
包括第一设备判断本地是否存在存储的会话ID,如果判断结果为是,第一设备将存储的会话ID作为第一会话ID,然后生成第一心跳消息;如果判断结果为否,第一设备将预设的会话ID作为第一会话ID,然后生成第一心跳消息。可选的,第一设备可以单独设置用于存储会话ID的存储空间,通过判断设置的存储空间是否为空,如果为空,说明不存在存储的会话ID,如果不为空,则说明存在存储的会话ID,获取存储的会话ID作为第一会话ID。在本实施例的一可选实施方式中,如图8所示,本实施例的方法在步骤602之前包括步骤703、第一设备判断心跳周期是否到达,如果判断结果为是,执行步骤602,并重新启动对心跳周期的计时;如果判断结果为否,返回步骤703,继续判断心跳周期是否到达。在本实施例中,第一设备周期性的向第二设备发送第一心跳消息,只有在心跳周期到达时,才向第二设备发送第一心跳消息,如果心跳周期未到达,则继续等待直到心跳周期到达,这样可以减少第一设备向第二设备发送的第一心跳消息的数量,在保证能够探測到第一设备是否发生故障的情况下,有利于减轻第一设备和第二设备的处理负担。图9为本发明又一实施例提供的对端状态检测方法的流程图。本实施例基于图6所示实施例实现,如图9所示,本实施例的方法在步骤601之前包括步骤801、第一设备生成第二心跳消息,该第二心跳消息是第一设备上与第二设备上当前状态检测过程对应的状态检测过程中的第一个心跳消息,该第二心跳消息携帯有第ニ会话ID,以使第二设备将第二会话ID存储在本地。本实施例主要描述由被检测的设备(即第一设备)在毎次启动状态检测过程时生成会话ID,并通过第一个心跳消息将会话ID提供给进行检测的设备(即第二设备),以供进行检测的设备在对应的状态检测过程中能够使用该会话ID。其中,第一设备在毎次启动状态检测过程时生成的会话ID不同,例如可以使用但不限于随机生成方法等生成会话ID。另夕卜,当一个状态检测过程结束后,第二设备会将对应的会话ID删除,相当于重新初始化,以便于在下ー个状态检测过程对第一设备进行状态检测。同理,如果第一设备上当前状态检测过程是与第二设备上当前状态检测过程对应的状态检测过程,则第一设备发送的第一心跳消息中携帯的第一会话ID就是第二会话ID。在该情况下,第二设备会判断出第一会话ID与第二会话ID相同。如果第一设备上当前状态检测过程不是与第二设备上当前状态检测过程对应的状态检测过程,例如第一设备上当前状态检测过程是在第一设备发生“闪断”之后重新启动的状态检测过程,则第一设备发送的第一心跳消息中携帯的第一会话ID不是第二会话ID,其中,第二会话ID会因为第一设备发生“闪断”而丢失,而第一设备会重新为新的状态检测过程生成会话ID,即第一会话ID。在该情况下,第二设备会判断出第一会话ID与第二会话ID不相同。
·
在本实施例的一可选实施方式中,如图10所示,本实施例的方法在步骤602之前包括步骤802、第一设备判断心跳周期是否到达,如果判断结果为是,执行步骤602,并重新启动对心跳周期的计时;如果判断结果为否,返回步骤802,继续判断心跳周期是否到达。在本实施例中,第一设备周期性的向第二设备发送第一心跳消息,只有在心跳周期到达时,才向第二设备发送第一心跳消息,如果心跳周期未到达,则继续等待直到心跳周期到达,这样可以减少第一设备向第二设备发送的第一心跳消息的数量,在保证能够探測到第一设备是否发生故障的情况下,有利于减轻第一设备和第二设备的处理负担。图11为本发明一实施例提供的对端状态检测装置的结构示意图。本实施例的装置设置在第二设备中实现,但不限于此,例如本实施例的对端状态检测装置也可以作为第ニ设备实现。如图11所示,本实施例的装置包括第一接收模块111、第一判断模块112和判定模块113。第一接收模块111,用于接收对端的第一设备发送的第一心跳消息,该第一心跳消息携帯有第一会话ID,该第一会话ID是对应于第一设备上当前状态检测过程的会话ID,其中,不同状态检测过程对应的会话ID不同。第一设备与第二设备互为对端。第一判断模块112,与第一接收模块111连接,用于判断第一接收模块111接收到的第一会话ID与第二设备本地存储的第二会话ID是否相同,该第二会话ID是对应于第二设备上当前状态检测过程的会话ID。可选的,第一接收模块111向第一判断模块112发送第一会话ID,第一判断模块112接收第一接收模块111发送的第一会话ID。判定模块113,与第一判断模块112连接,用于在第一判断模块112判断出第一会话ID与第二会话ID不相同时,判定第一设备发生过故障。可选的,第一判断模块112向判定模块113发送判断结果,判定模块113接收第一判断模块112发送的判断結果。可选的,判定模块113还用于在第一判断模块112判断出第一会话ID与第二会话ID相同时,判定第一设备在第二设备上当前状态检测过程中未发生过故障。本实施例提供的对端状态检测装置的各功能模块可用于执行图I所示实施例提供的方法流程,其具体工作原理不再赘述,详见方法实施例的描述。
本实施例的对端状态检测装置,与对端的第一设备使用会话ID表征不同的状态检测过程,接收第一设备发送的携帯有表征第一设备上当前状态检测过程的第一会话ID,然后将第一会话ID和表征本地当前状态检测过程的第二会话ID进行比较,通过判断两端上当前的状态检测过程是否对应来判断第一设备是否发生过“闪断”等故障,如果两个会话ID不相同,说明两端当前的状态检测过程不相同,因此可以判定第一设备发生过“闪断”等故障并重启了,解决了现有心跳探測机制无法探测到对端“闪断”等故障的问题,为基于对对端状态检测结果的故障状态转移、主备状态选举、对端状态通告等操作提供了有利条件,为这些操作成功执行打下了基础。图12为本发明另ー实施例提供的对端状态检测装置的结构示意图。本实施例基于图11所示实施例实现,如图12所示,本实施例的装置除了包括第一接收模块111、第一判断模块112和判定模块113之外,还包括第一生成模块114和第一发送模块115。
第一生成模块114,用于在第一接收模块111接收第一心跳消息之前生成第二会话ID。可选的,第一生成模块114与第一接收模块111连接。第一发送模块115,与第一生成模块114连接,用于将第一生成模块114生成的第ニ会话ID发送给第一设备,以使第一设备将第二会话ID作为第一设备上与第二设备上当前状态检测过程对应的状态检测过程对应的会话ID并存储在本地。可选的,第一生成模块114向第一发送模块115发送第二会话ID,第一发送模块115接收第一生成模块114发送的第二会话ID。在本实施例的一可选实施方式中,第一接收模块111还用于在接收第一心跳消息之前,接收第一设备发送的第二心跳消息,该第二心跳消息是第一设备上与第二设备上当前状态检测过程对应的状态检测过程中的第一个心跳消息,该第二心跳消息携帯有第二会话ID。基于此,本实施例的对端状态检测装置还包括第一存储模块116。第一存储模块116,与第一接收模块111连接,用于存储第一接收模块111接收到的第二会话ID。可选的,第一接收模块111向第一存储模块116发送第二会话ID,第一存储模块116接收第一接收模块111发送的第二会话ID。基于上述第一存储模块116,本实施例的装置还包括删除模块117。该删除模块117与第一判断模块112连接,用于在第一判断模块112的判断结果为不相同时,将第一存储模块116存储的第二会话ID删除。可选的,删除模块117还与第一存储模块116连接。在本实施例的一可选实施方式中,第一判断模块112还用于在第一接收模块111接收第一心跳消息之前,判断心跳超时时间是否到达,并在判断出心跳超时时间未到达时,触发第一接收模块111接收第一心跳消息,并重新启动对所述心跳超时时间的计时。相应地,判定模块113还用于在第一判断模块112判断出心跳超时时间到达时,判定第一设备发生故障。本实施例提供的对端状态检测装置的各功能模块可用于执行图I-图5所示方法实施例中的相应流程,其具体工作原理不再赘述,详见方法实施例的描述。本实施例的对端状态检测装置,除了可以解决现有心跳探測机制无法探测到对端“闪断”等故障的问题之外,支持本端和对端生成表征状态检测过程的会话ID,灵活性较好,同时,使用心跳超时时间判断心跳消息是否发生丢失以探测对端是否发生故障,进ー步与会话ID相结合可以提高探测灵敏度。
图13为本发明又一实施例提供的对端状态检测装置的结构示意图。本实施例的装置可设置在第一设备中实现,但不限于此,例如本实施例的装置也可以作为第一设备实现。如图13所示,本实施例的装置包括第二生成模块131和第二发送模块132。第二生成模块131,用于生成第一心跳消息,该第一心跳消息携带有第一会话ID,该第一会话ID是对应于第一设备上当前状态检测过程的会话ID,其中,不同状态检测过程对应的会话ID不同。第二发送模块132,与第二生成模块131连接,用于将第一心跳消息发送给对端的第二设备,以使第二设备根据第一会话ID和第二设备本地存储的第二会话ID判断第一设备的状态,该第二会话ID是对应于第二设备上当前状态检测过程的会话ID。其中,第一设备和第二设备互为对端。在本实施例的一可选实施方式中,如图14所示,本实施例的装置还包括第二接收模块133和第二存储模块134。
第二接收模块133,用于在第二生成模块131生成第一心跳消息之前,接收第二设备发送的第二会话ID。可选的,第二接收模块133与第二生成模块131连接。第二存储模块134,与第二接收模块133连接,用于将第二接收模块133接收到的第二会话ID作为第一设备上与第二设备上当前状态检测过程对应的状态检测过程对应的会话ID,并存储第二会话ID。可选的,第二接收模块133向第二存储模块134发送第二会话ID,第二存储模块134接收第二接收模块133发送的第二会话ID。基于上述,第二生成模块131具体可用于判断第一设备本地是否存在存储的会话ID,如果判断结果为是,将存储的会话ID作为第一会话ID,然后生成第一心跳消息,如果判断结果为否,将预设的会话ID作为第一会话ID,然后生成第一心跳消息。在本实施例的一可选实施方式中,第二生成模块131还用于在生成第一心跳消息之前生成第二心跳消息,该第二心跳消息是第一设备上与第二设备上当前状态检测过程对应的状态检测过程中的第一个心跳消息,该第二心跳消息携帯有第二会话ID,以使第二设备将第二会话ID存储在本地。在本实施例的一可选实施方式中,如图14所示,本实施例的装置还包括第二判断模块135。第二判断模块135,与第二发送模块132连接,用于在第二发送模块132将第一心跳消息发送给第二设备之前,判断心跳周期是否到达,并在判断出心跳周期到达时触发第二发送模块132将第一心跳消息发送给第二设备,并重新启动对所述心跳周期的计时。本实施例提供的对端状态检测装置的各功能模块可用于执行图6-图10所示方法实施例中的相应流程,其具体工作原理不再赘述,详见方法实施例的描述。本实施例的对端状态检测装置,与第二设备相配合,使用不同的会话ID表征不同的状态检测过程,使得第二设备可以成功检测到本实施的对端状态检测装置所在一端是否发生过“闪断”等故障,解决了现有心跳探測机制无法探测到对端“闪断”等故障的问题,为基于对对端状态检测结果的故障状态转移、主备状态选举、对端状态通告等操作提供了有利条件,为这些操作成功执行打下了基础。本发明ー实施例提供一种设备,包括图11或图12所示实施例提供的对端状态检测装置。关于对端状态检测装置的结构和工作原理不再赘述,可參见上述相应的装置和方法实施例。本实施例提供的设备可以是各种具有对端且需要检测对端状态的设备,例如集群系统中的服务器、需要进行负载均衡的设备、热备系统中的主备设备等。本实施例的设备可用于执行图I-图5所示实施例提供的对端状态检测方法的流程,同样可以检测出对端是否发生“闪断”等故障问题。本发明另一实施例提供一种设备,包括图13或图14所示实施例提供的对端状态检测装置。关于对端状态检测装置的结构和工作原理不再赘述,可參见上述相应的装置和方法实施例。本实施例提供的设备可以是各种具有对端且需要检测对端状态的设备,例如集群系统中的服务器、需要进行负载均衡的设备、热备系统中的主备设备等。本实施例的设备可用于执行图6-图10所示实施例提供的对端状态检测方法的流程,同样可以检测出对端是否发生“闪断”等故障问题。本发明又一实施例提供一种设备,包括图11或图12所示实施例提供的对端状态检测装置,还包括图13或图14所示实施例提供的对端状态检测装置。关于对端状态检测装置的结构和工作原理不再赘述,可參见上述相应的装置和方法实施例。本实施例提供的 设备可以是各种具有对端且需要检测对端状态的设备,例如集群系统中的服务器、需要进行负载均衡的设备、热备系统中的主备设备等。本实施例的设备可用于执行上述实施例提供的对端状态检测方法的流程,同样可以检测出对端是否发生“闪断”等故障问题。本领域普通技术人员可以理解实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于ー计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。最后应说明的是以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管參照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
权利要求
1.一种对端状态检测方法,其特征在于,包括 第二设备接收对端的第一设备发送的第一心跳消息,所述第一心跳消息携带有第一会话标识ID,所述第一会话ID是对应于所述第一设备上当前状态检测过程的会话ID,其中,不同状态检测过程对应的会话ID不同; 所述第二设备判断所述第一会话ID与所述第二设备本地存储的第二会话ID是否相同,所述第二会话ID是对应于所述第二设备上当前状态检测过程的会话ID ; 如果判断结果为不相同,所述第二设备判定所述第一设备发生过故障。
2.根据权利要求I所述的对端状态检测方法,其特征在于,所述第二设备接收对端的第一设备发送的第一心跳消息之前包括 所述第二设备生成所述第二会话ID,并将所述第二会话ID发送给所述第一设备,以使所述第一设备将所述第二会话ID作为所述第一设备上与所述第二设备上当前状态检测过程对应的状态检测过程对应的会话ID并存储在本地;或者所述第二设备接收对端的第一设备发送的第一心跳消息之前包括 所述第二设备接收所述第一设备发送的第二心跳消息,所述第二心跳消息是所述第一设备上与所述第二设备上当前状态检测过程对应的状态检测过程中的第一个心跳消息,所述第二心跳消息携带有所述第二会话ID ; 所述第二设备将所述第二会话ID存储在本地。
3.根据权利要求2所述的对端状态检测方法,其特征在于,还包括 如果判断结果为不相同,所述第二设备将所述第二会话ID删除。
4.根据权利要求1-3任一项所述的对端状态检测方法,其特征在于,所述第二设备接收对端的第一设备发送的第一心跳消息之前包括 所述第二设备判断心跳超时时间是否到达; 如果判断结果为所述心跳超时时间未到达,所述第二设备执行接收对端的第一设备发送的第一心跳消息的操作,并重新启动对所述心跳超时时间的计时; 所述的对端状态检测方法还包括 如果判断结果为所述心跳超时时间到达,所述第二设备判定所述第一设备发生故障。
5.一种对端状态检测方法,其特征在于,包括 第一设备生成第一心跳消息,所述第一心跳消息携带有第一会话标识ID,所述第一会话ID是对应于所述第一设备上当前状态检测过程的会话ID,其中,不同状态检测过程对应的会话ID不同; 所述第一设备将所述第一心跳消息发送给对端的第二设备,以使所述第二设备根据所述第一会话ID和所述第二设备本地存储的第二会话ID判断所述第一设备的状态,所述第二会话ID是对应于所述第二设备上当前状态检测过程的会话ID。
6.根据权利要求5所述的对端状态检测方法,其特征在于,所述第一设备生成第一心跳消息之前包括 所述第一设备接收所述第二设备发送的所述第二会话ID ; 所述第一设备将所述第二会话ID作为所述第一设备上与所述第二设备上当前状态检测过程对应的状态检测过程对应的会话ID,并存储在本地;或者所述第一设备生成第一心跳消息之前包括所述第一设备生成第二心跳消息,所述第二心跳消息是所述第一设备上与所述第二设备上当前状态检测过程对应的状态检测过程中的第一个心跳消息,所述第二心跳消息携带有所述第二会话ID,以使所述第二设备将所述第二会话ID存储在本地。
7.根据权利要求6所述的对端状态检测方法,其特征在于,所述第一设备生成第一心跳消息包括 所述第一设备判断本地是否存在存储的会话ID ; 如果判断结果为是,所述第一设备将存储的会话ID作为所述第一会话ID,然后生成所述第一心跳消息; 如果判断结果为否,所述第一设备将预设的会话ID作为所述第一会话ID,然后生成所述第一心跳消息。
8.根据权利要求5-7任一项所述的对端状态检测方法,其特征在于,所述第一设备将所述第一心跳消息发送给对端的第二设备之前包括 所述第一设备判断心跳周期是否到达; 如果判断结果为所述心跳周期到达,所述第一设备执行将所述第一心跳消息发送给对端的第二设备的操作,并重新启动对所述心跳周期的计时。
9.一种对端状态检测装置,其特征在于,设置在第二设备中,所述装置包括 第一接收模块,用于接收对端的第一设备发送的第一心跳消息,所述第一心跳消息携带有第一会话标识ID,所述第一会话ID是对应于所述第一设备上当前状态检测过程的会话ID,其中,不同状态检测过程对应的会话ID不同; 第一判断模块,用于判断所述第一会话ID与所述第二设备本地存储的第二会话ID是否相同,所述第二会话ID是对应于所述第二设备上当前状态检测过程的会话ID ; 判定模块,用于在所述第一判断模块判断出所述第一会话ID与所述第二会话ID不相同时,判定所述第一设备发生过故障。
10.根据权利要求9所述的对端状态检测装置,其特征在于,还包括 第一生成模块,用于在所述第一接收模块接收所述第一心跳消息之前生成所述第二会话ID ; 第一发送模块,用于将所述第二会话ID发送给所述第一设备,以使所述第一设备将所述第二会话ID作为所述第一设备上与所述第二设备上当前状态检测过程对应的状态检测过程对应的会话ID并存储在本地。
11.根据权利要求9所述的对端状态检测装置,其特征在于,所述第一接收模块还用于在接收所述第一心跳消息之前,接收所述第一设备发送的第二心跳消息,所述第二心跳消息是所述第一设备上与所述第二设备上当前状态检测过程对应的状态检测过程中的第一个心跳消息,所述第二心跳消息携带有所述第二会话ID ; 所述对端状态检测装置还包括 第一存储模块,用于存储所述第二会话ID。
12.根据权利要求11所述的对端状态检测装置,其特征在于,还包括 删除模块,用于在所述第一判断模块的判断结果为不相同时,将所述第二会话ID删除。
13.根据权利要求9-12任一项所述的对端状态检测装置,其特征在于,所述第一判断模块还用于在所述第一接收模块接收所述第一心跳消息之前,判断心跳超时时间是否到达,并在判断出所述心跳超时时间未到达时,触发所述第一接收模块接收所述第一心跳消息,并重新启动对所述心跳超时时间的计时; 所述判定模块还用于在所述第一判断模块判断出所述心跳超时时间到达时,判定所述第一设备发生故障。
14.一种对端状态检测装置,其特征在于,设置在第一设备中,所述装置包括 第二生成模块,用于生成第一心跳消息,所述第一心跳消息携带有第一会话标识ID,所述第一会话ID是对应于所述第一设备上当前状态检测过程的会话ID,其中,不同状态检测过程对应的会话ID不同; 第二发送模块,用于将所述第一心跳消息发送给对端的第二设备,以使所述第二设备根据所述第一会话ID和所述第二设备本地存储的第二会话ID判断所述第一设备的状态,所述第二会话ID是对应于所述第二设备上当前状态检测过程的会话ID。
15.根据权利要求14所述的对端状态检测装置,其特征在于,还包括 第二接收模块,用于在所述第二生成模块生成所述第一心跳消息之前,接收所述第二设备发送的所述第二会话ID ; 第二存储模块,用于将所述第二会话ID作为所述第一设备上与所述第二设备上当前状态检测过程对应的状态检测过程对应的会话ID,并存储所述第二会话ID。
16.根据权利要求15所述的对端状态检测装置,其特征在于,所述第二生成模块具体用于判断本地是否存在存储的会话ID,如果判断结果为是,将存储的会话ID作为所述第一会话ID,然后生成所述第一心跳消息,如果判断结果为否,将预设的会话ID作为所述第一会话ID,然后生成所述第一心跳消息。
17.根据权利要求14所述的对端状态检测装置,其特征在于,所述第二生成模块还用于在生成所述第一心跳消息之前生成第二心跳消息,所述第二心跳消息是所述第一设备上与所述第二设备上当前状态检测过程对应的状态检测过程中的第一个心跳消息,所述第二心跳消息携带有所述第二会话ID,以使所述第二设备将所述第二会话ID存储在本地。
18.根据权利要求14-17任一项所述的对端状态检测装置,其特征在于,还包括 第二判断模块,用于在所述第二发送模块将所述第一心跳消息发送给所述第二设备之前,判断心跳周期是否到达,并在判断出所述心跳周期到达时触发所述第二发送模块将所述第一心跳消息发送给所述第二设备,并重新启动对所述心跳周期的计时。
19.一种设备,其特征在于,包括权利要求9-13任一项所述的对端状态检测装置,和/或,权利要求14-18任一项所述的对端状态检测装置。
全文摘要
本发明提供一种对端状态检测方法、装置及设备。一种方法包括第二设备接收对端的第一设备发送的第一心跳消息,第一心跳消息携带有第一会话标识ID,第一会话ID是对应于第一设备上当前状态检测过程的会话ID,其中,不同状态检测过程对应的会话ID不同;第二设备判断第一会话ID与第二设备本地存储的第二会话ID是否相同,第二会话ID是对应于第二设备上当前状态检测过程的会话ID;如果判断结果为不相同,第二设备判定第一设备发生过故障。本发明技术方案解决了现有心跳探测机制无法探测到对端“闪断”的问题。
文档编号H04L12/26GK102821011SQ20121031137
公开日2012年12月12日 申请日期2012年8月28日 优先权日2012年8月28日
发明者杨鑫伟 申请人:北京星网锐捷网络技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1