CN115333983B - 心跳管理方法及节点 - Google Patents

心跳管理方法及节点 Download PDF

Info

Publication number
CN115333983B
CN115333983B CN202210980272.7A CN202210980272A CN115333983B CN 115333983 B CN115333983 B CN 115333983B CN 202210980272 A CN202210980272 A CN 202210980272A CN 115333983 B CN115333983 B CN 115333983B
Authority
CN
China
Prior art keywords
node
nodes
value
heartbeat
working
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202210980272.7A
Other languages
English (en)
Other versions
CN115333983A (zh
Inventor
黄焰
刘国霞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
XFusion Digital Technologies Co Ltd
Original Assignee
XFusion Digital Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by XFusion Digital Technologies Co Ltd filed Critical XFusion Digital Technologies Co Ltd
Priority to CN202210980272.7A priority Critical patent/CN115333983B/zh
Publication of CN115333983A publication Critical patent/CN115333983A/zh
Application granted granted Critical
Publication of CN115333983B publication Critical patent/CN115333983B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/06Generation of reports
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0817Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0852Delays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/16Threshold monitoring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Environmental & Geological Engineering (AREA)
  • Health & Medical Sciences (AREA)
  • Cardiology (AREA)
  • General Health & Medical Sciences (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

本发明提供了一种心跳管理方法及节点。该方法应用于与多个第二节点通信的第一节点,多个第二节点向第一节点发送心跳信息,包括:基于心跳接收时长的初始时长值,确定第二节点对应的当前状态为可用状态或不可用状态;基于多个第二节点各自对应的当前状态,确定多个第二节点的部分与第一节点之间出现通信延迟;增大初始时长值确定第一时长值;对于处于可用状态的第二节点,基于第一时长值,确定第二节点对应的当前状态为可用状态或不可用状态;其中,处于所述可用状态的第二节点可被分发业务任务。在开始出现通信延迟时,通过增大心跳接收时长的时长值,将业务任务分发到心跳接收时长增加的节点,确保节点的可用性。

Description

心跳管理方法及节点
技术领域
本发明涉及通信技术领域,尤其涉及一种心跳管理方法及节点。
背景技术
随着信息时代的到来,考虑到信息的安全性和可靠性,传统的集中存储系统(即,将所有的数据存储在一起的存储系统)将不能满足需求,这样,将数据分别存储在多台独立的存储服务器上的分布式存储系统就越来越广泛的被应用。分布式存储系统将数据分布在不同的节点上,节点间通过网络进行通信,如果其中某一个节点存在网络问题或者硬件故障,则其他正常节点无法和该问题节点进行正常通信,如果不及时将该有问题节点从系统中隔离,会影响整个分布式存储系统的业务。
分布式存储系统中具有管理节点和管理节点管理的工作节点,管理节点通过接收工作节点发送的心跳消息的方式进行故障监测,即,每个工作节点不断的向管理节点发送心跳消息,管理节点基于接收到心跳消息判断节点是否发送故障,只要超过特定的时长没有接收到某个工作节点的心跳消息,则可以确定该工作节点故障。
但是,在管理节点和工作节点出现网络延迟时,会阻塞心跳消息的发送,从而造成管理节点对大量的工作节点的误判,即,错误的认为该工作节点已发生故障,进而影响该分布式存储系统正常工作。
因此,为了提高分布式存储系统的准确性和可靠性,目前亟待提供一种可以避免心跳消息误判的心跳管理方法,从而提高该分布式存储系统的可用性。
公开于该背景技术部分的信息仅仅旨在增加对本发明的总体背景的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域一般技术人员所公知的现有技术。
发明内容
本发明实施例提供了一种心跳管理方法及节点,通过增加心跳的心跳接收时长阈值,从而在节点和节点所管理的节点之间出现通信延迟的情况下,可以将业务任务分发到心跳接收时长增加的节点,确保节点的可用性。
第一方面,本发明实施例提供了一种心跳管理方法,应用于第一节点,第一节点与多个第二节点通信,多个第二节点向第一节点发送心跳信息,方法包括:基于心跳接收时长的初始时长值和接收第二节点发送的心跳信息的时刻,确定第二节点对应的当前状态为可用状态或不可用状态;基于多个第二节点各自对应的当前状态,确定多个第二节点的至少一部分与第一节点之间出现通信延迟;增大初始时长值,确定第一时长值;对于处于可用状态的第二节点,基于第一时长值和接收第二节点发送的心跳信息的时刻,确定第二节点对应的当前状态为可用状态或不可用状态;其中,处于可用状态的第二节点可被分发业务任务,第一节点连续两次接收处于可用状态的第二节点发送的心跳信息的时刻之间的时长小于等于第一时长值。
本方案中,在第一节点和其管理的多个第二节点开始出现通信延迟的情况下,增加心跳接收时长的初始时长值,降低后续对第二节点的当前状态的误判,从而将业务任务分发到心跳接收时长增加的第二节点,提高第二节点的可用性。
在一种可能的实现方式中,第一节点通过至少一个第一转发设备连接多个第二节点,多个第二节点通过至少一个第一转发设备向第一节点发送心跳信息。
可选地,至少一个第一转发设备包括第一转发设备,第一节点通过第一转发设备和多个第二节点中的部分节点通信。
在一种可能的实现方式中,基于多个第二节点各自对应的当前状态,确定多个第二节点的至少一部分与第一节点之间出现通信延迟,包括:基于多个第二节点各自对应的当前状态,确定不可用的第二节点的数目;基于不可用的第二节点的数目,确定多个第二节点的至少一部分与第一节点之间出现通信延迟
本方案中,通过考虑第一节点评估的第二节点的当前状态,可以判断不可用的第二节点的数目,也即心跳异常的第二节点的数目,从而可较为准确度的分析出多个第二节点与第一节点之间是否开始出现通信延迟。
在一个例子中,基于多个第二节点各自对应的当前状态,确定不可用的第二节点的数目,包括:基于多个第二节点各自对应的当前状态和接收的多个第二节点中部分或全部发送的自检结果,确定不可用的第二节点的数目;其中,自检结果指示了第二节点进行自检后所得到的服务是否正常的结果。
本方案中,通过考虑第一节点评估的第二节点的当前状态以及第二节点自检后的自检结果,可以较为准确的判断真正不可用的第二节点的数目,也即服务正常心跳异常的第二节点的数目,从而可较为准确度的分析出多个第二节点与第一节点之间是否开始出现通信延迟。
在一种可能的实现方式中,方法还包括:在接收到第二节点的心跳信息后向第二节点发送心跳应答信息,以使第二节点在确定应答接收时长大于应答时长阈值时进行自检,确定自检结果并上报。
本方案中,第二节点基于应答接收时长的长短启动自检,并上报自检结果,从而便于第一节点了解其管理的第二节点的服务情况,进一步能够更好决定心跳接收时长的调整方向。
在一种可能的实现方式中,方法还包括:向处于不可用状态的第二节点发送自检命令,以使第二节点基于自检命令进行自检,确定自检结果并上报。
本方案中,第二节点基于管理自身的第一节点发送的自检命令进行自检,从而便于第一节点针对性的监管处于不可用状态的第二节点,进一步能够更好确定第二节点处于不可用状态的原因,从而决定心跳接收时长的调整方向。
在一种可能的实现方式中,第一节点通过至少一个第二转发设备连接多个第二节点,自检命令通过至少一个第二转发设备发送到处于不可用状态的第二节点。
本方案中,利用第一节点和第二节点之外的其他网络,确保第一节点可以快速将自检命令发送到第二节点。
根据一种可行的实现方式,方法还包括:对于处于不可用状态的第二节点,基于初始时长值和接收第二节点发送的心跳信息的时刻,在确定第二节点的心跳恢复正常时,将第二节点对应的当前状态从不可用状态更新为可用状态。
该方案中,采用初始时长值判断处于不可用状态的第二节点的心跳是否恢复正常,在心跳恢复正常时,将不可用状态变更为可用状态,确保第二节点的可用性。
在一种可能的实现方式中,方法还包括:对于处于不可用状态的第二节点,基于第一时长值和接收第二节点发送的心跳信息的时刻,在确定第二节点的心跳恢复正常时,将第二节点对应的当前状态从不可用状态更新为可用状态。
该方案中,采用第一时长值判断处于不可用状态的第二节点的心跳是否正常,在心跳正常时,将不可用状态变更为可用状态,确保第二节点的可用性。
在一种可能的实现方式中,增大初始时长值,确定第一时长值之后,方法还包括:基于初始时长值和接收到多个第二节点各自发送的心跳信息的时刻,判断多个第二节点的至少一部分与第一节点之间的通信是否恢复正常;这里多个第二节点的至少一部分与第一节点之间的通信恢复正常即说明多个第二节点的至少一部分与第一节点之间的通信不存在延迟情况。在多个第二节点的至少一部分与第一节点之间的通信恢复正常时,将第一时长值替换为初始时长值。
本方案中,在调大心跳接收时长阈值后,需要判断多个第二节点与第一节点之间的通信是否恢复正常,在通信恢复正常后,将心跳接收时长的时长值恢复为初始时长值,从而降低对第二节点的状态的误判的可能性。
在一种可能的实现方式中,增大初始时长值,确定第一时长值之前,方法还包括:基于多个第二节点各自对应的当前状态,确定延迟情况判定指标的第一指标值;在基于第一时长值和接收第二节点发送的心跳信息的时刻,确定第二节点对应的当前状态之后,方法还包括:在多个第二节点的至少一部分与第一节点之间的通信延迟未消除时,基于多个第二节点各自对应的当前状态,确定延迟情况判定指标的第二指标值;基于第一指标值和第二指标值之间的比较结果,确定多个第二节点的至少一部分与第一节点之间的通信延迟的情况,情况包括不变、增加或缓解。
本方案中,在判断多个第二节点与第一节点之间的通信没有恢复正常时,判断通信延迟的情况,从而不断调整心跳接收时长的时长值,降低对第二节点的状态的误判的可能性,确保第二节点的可用性。
第二方面,本发明实施例提供了一种心跳管理装置,心跳管理装置包括若干个模块,各个模块用于执行本发明实施例第一方面提供的显示方法中的各个步骤,关于模块的划分在此不做限制。该显示装置各个模块所执行的具体功能及达到的有益效果请参考本发明实施例第一方面提供的显示方法的各个步骤的功能,在此不再赘述。
示例地,心跳管理装置,与多个第二节点通信,多个第二节点向心跳管理装置发送心跳信息;装置包括:
第一状态确定模块,用于基于心跳接收时长的初始时长值和接收第二节点发送的心跳信息的时刻,确定第二节点对应的当前状态为可用状态或不可用状态;
延迟确定模块,用于基于多个第二节点各自对应的当前状态,确定多个第二节点的至少一部分与第一节点之间出现通信延迟;
调整模块,用于增大初始时长值,确定第一时长值;
第二状态确定模块,用于对于处于可用状态的第二节点,基于第一时长值和接收第二节点发送的心跳信息的时刻,确定第二节点对应的当前状态为可用状态或不可用状态;其中,处于可用状态的第二节点可被分发业务任务,第一节点接收处于可用状态的第二节点发送的心跳信息的相邻时刻之间的时长小于等于第一时长值。
第三方面,本发明实施例提供了一种分布式系统,该系统可以包括第一节点和多个第二节点,其中,第一节点用于执行第一方面中所提供的方法。
在一种可能的实现方式中,第二节点用于在在确定应答接收时长大于应答时长阈值时进行自检,确定自检后状态并上报至第一节点。或者,第二节点用于基于自检命令进行自检,确定自检后状态并上报至第一节点。
第四方面,本发明实施例提供了一种心跳管理装置或节点,包括:至少一个存储器,用于存储程序;至少一个处理器,用于执行存储器存储的程序,当存储器存储的程序被执行时,处理器用于执行第一方面中所提供的方法。
第五方面,本发明实施例提供了一种心跳管理装置或节点,其特征在于,装置运行计算机程序指令,以执行第一方面中所提供的方法。示例性的,该装置可以为芯片,或处理器。
在一个例子中,该装置可以包括处理器,该处理器可以与存储器耦合,读取存储器中的指令并根据该指令执行第一方面中所提供的方法。其中,该存储器可以集成在芯片或处理器中,也可以独立于芯片或处理器之外。
第六方面,本发明实施例提供了一种计算机存储介质,计算机存储介质中存储有指令,当指令在计算机上运行时,使得计算机执行第一方面中所提供的方法。
第七方面,本发明实施例提供了一种包含指令的计算机程序产品,当指令在计算机上运行时,使得计算机执行第一方面中所提供的方法。
附图说明
图1是本发明实施例提供的一种分布式系统的系统架构图;
图2a是图1示出的工作节点WNode和管理节点CNode之间的业务网络的示意图一;
图2b是图1示出的工作节点WNode和管理节点CNode之间的业务网络的示意图二;
图3是本发明实施例提供的电子设备的结构示意图;
图4是本发明实施例提供的当前状态确定方案的流程示意图;
图5是本发明实施例提供的第一种通信延迟确定方案的流程示意图;
图6是本发明实施例提供的第二种通信延迟确定方案的流程示意图;
图7是本发明实施例提供的第一种通信延迟情况判断方案的流程示意图;
图8是本发明实施例提供的第二种通信延迟情况判断方案的流程示意图;
图9是本发明实施例提供的一种心跳管理方法的流程示意图。
具体实施方式
为了使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图,对本发明实施例中的技术方案进行描述。
在本发明实施例的描述中,“示例性的”、“例如”或者“举例来说”等词用于表示作例子、例证或说明。本发明实施例中被描述为“示例性的”、“例如”或者“举例来说”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”、“例如”或者“举例来说”等词旨在以具体方式呈现相关概念。
在本发明实施例的描述中,术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,单独存在B,同时存在A和B这三种情况。另外,除非另有说明,术语“多个”的含义是指两个或两个以上。例如,多个系统是指两个或两个以上的系统,多个终端是指两个或两个以上的终端。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
本发明实施例提供了一种分布式集群。如图1所示,分布式集群包括管理节点CNode和管理节点CNode管理的多个工作节点WNode。图1示出了1个管理节点CNode1、n*m个工作节点WNode11、…、WNodenm。
工作节点WNode和管理节点CNode之间通过网络通信。其中,网络可以为有线网络或无线网络。示例地,有线网络可以为电缆网络、光纤网络、数字数据网(Digital DataNetwork,DDN)等,无线网络可以为电信网络、内部网络、互联网、局域网络(Local AreaNetwork,LAN)、广域网络(Wide Area Network,WAN)、无线局域网络(Wireless Local AreaNetwork,WLAN)、城域网(Metropolitan Area Network,MAN)、公共交换电话网络(PublicService Telephone Network,PSTN)、蓝牙网络、紫蜂网络(ZigBee)、移动电话(GlobalSystem for Mobile Communications,GSM)、CDMA(Code Division Multiple Access)网络、CPRS(GeneralPacketRadioService)网络等或其任意组合。
可以理解的是,网络可使用任何已知的网络通信协议来实现不同客户端层和网关之间的通信,上述网络通信协议可以是各种有线或无线通信协议,诸如以太网、通用串行总线(universal serial bus,USB)、火线(firewire)、全球移动通讯系统(global systemfor mobile communications,GSM)、通用分组无线服务(general packet radio service,GPRS)、码分多址接入(code division multiple access,CDMA)、宽带码分多址(widebandcode division multiple access,WCDMA),时分码分多址(time-division code divisionmultiple access,TD-SCDMA)、长期演进(long term evolution,LTE)、新空口(new radio,NR)、蓝牙(bluetooth)、无线保真(wireless fidelity,Wi-Fi)等通信协议。
如图1所示,n*m个工作节点WNode和管理节点CNode之间的网络可以有多个网络。图1示出了3个网络,分别为业务网络a、控制网络b和配置网络c。
其中,业务网络a、控制网络b和配置网络c是不同类型的网络。不同类型的网络之间传递的消息不同,不同消息的网络相分离,可以确保数据安全。业务网络a、控制网络b和配置网络c各自传递的消息分别为业务消息、控制消息和配置消息。其中,业务消息为业务相关的消息,比如业务任务、心跳信息等;控制消息用于实现管理节点CNode对工作节点WNode的控制操作,比如,控制工作节点WNode停止发送心跳信息,再比如,控制工作节点WNode停止服务;配置消息用于一些计算机程序配置参数和初始设置,比如配置处理业务任务的计算机程序和文件的集合。
对于业务网络a,业务网络a包括n*m个工作节点WNode连接的业务网络a1和管理节点CNode连接的业务网络a2,以及连接业务网络a1和业务网络a2的路由器组a。这里,路由器组a用于业务网络a1和业务网络a2之间的消息转发。这里,路由器组a表示若干个路由器组成的集合,路由器组a仅仅是为了便于描述和区别所起的命名,不具有特殊含义。值得注意的是,路由器为实现业务网络a1和业务网络a2之间的业务消息转发的转发设备,本发明实施例仅仅是以路由器作为转发设备的一个示例,并不构成具体限定,比如,转发设备还可以为网关。下文中将以路由器作为转发设备作为示例进行描述。这里,业务网络a1可以理解为n*m个工作节点WNode接入路由器组a的网络,通常为交换机、集线器、中继器形成的网络。业务网络a2类同不再赘述。
需要指出,如图2a所示,路由器组a可以由一个路由器ac组成。如图2b所示,路由器组a也可以由多个路由器组成。图2b示出了n+1个路由器。本发明实施例对路由器组a中路由器的数目不做具体限定,具体可结合实际情况确定,考虑到路由跳转次数越多,工作节点WNode和管理节点CNode之间的消息传递时长越大,因此需要尽可能减少路由器的数目。
值得注意的是,工作节点WNode设置在机房内,该机房内的所有工作节点WNode一般共用一个业务网络。若将n*m工作节点WNode设置在一个机房,则业务网络a1为一个业务网络。若将n*m个工作节点WNode设置在不同区域的机房内,每个机房设置一个业务网络,则业务网络a1可以包括多个业务网络。图2a和图2b所示,m个工作节点WNode设置在一个机房连接一个业务网络,n*m个工作节点WNode共设置n个机房,连接n个业务网络:a11、a12、…、a1n。
可选地,若n*m个工作节点WNode设置的n个机房距离较近,如图2a所示,n个业务网络连接到相同的路由器ac。
可选地,若n*m个工作节点WNode设置的n个机房距离较远,比如,一个在北京市,另一个在河南。如图2b所示,n个业务网络各自连接一个路由器,一共连接n个路由器:路由器a1、路由器a2、…、路由器an;进一步的,n个路由器通过路由器ac连接业务网络a2。
在相关技术中,工作节点WNode周期性比如按照时间间隔t,向管理节点CNode发送心跳信息;管理节点CNode通过业务网络a接收到心跳信息后,通过业务网络a向工作节点WNode发送心跳应答信息,同时,管理节点CNode基于心跳检测策略,判断是否正常接收工作节点WNode发送的心跳信息,若正常接收时,则认为工作节点WNode的心跳正常,反之认为工作节点WNode的心跳异常。
之后,管理节点CNode在处理业务请求得到多个业务任务后,将这些业务任务通过业务网络a分发给心跳正常的多个工作节点WNode;对应的,对于心跳正常的多个工作节点WNode的每个,该工作节点WNode通过业务网络a接收管理节点CNode分发的业务任务并处理。
另外,管理节点CNode在判定工作节点WNode的心跳异常时,会认为该工作节点WNode故障,不再将业务任务分发给该工作节点WNode,并控制工作节点WNode自杀,即控制工作节点WNode进行进程重启或设备重启进行故障修复;工作节点WNode自杀后会重新向管理节点CNode发送心跳信息,在管理节点CNodeo重新判定自杀后的工作节点WNode的心跳正常后,重新向其分发业务任务。
在相关技术中,作为一种可行的实现方式,心跳检测策略可以为固定心跳检测策略。固定心跳检测策略可以理解为采用是否超过心跳接收时长的上限值T来判断心跳是否正常,若超过,则心跳异常,否则心跳正常。考虑到心跳接收时长的上限值T的选择依赖当前网络状况、工作节点WNode的处理能力等很多不确定因素,因此在实际中往往会通过测试或估计的方式为心跳接收时长赋一个上限值T。上限值T设置过大,会导致判断“迟缓”,但会增加判断的正确性;过小,会提高判断效率,但会增加误判的可能性。在实际应用该策略时,管理节点CNode设置心跳接收时长的上限值T;由于存在网络闪断、丢包和网络拥塞等实际情况,管理节点CNode判断较长时间内没有接收到工作节点WNode的心跳信息,便认为该工作节点WNode的心跳异常,进一步认为该工作节点WNode故障,不再将业务任务分发给该工作节点WNode,控制该工作节点WNode自杀,即控制服务重启或设备重启;在该工作节点WNode的故障未解除之前,该工作节点WNode不会向管理节点CNode发送心跳信息。
在该相关技术中,随着网络负载的加大,管理节点CNode判定的工作节点WNode的心跳接收时长可能会大于心跳接收时长的上限值T,但当网络压力减少时,管理节点CNode判定的工作节点WNode的心跳接收时长又会小于T,如果用一成不变的T来反映心跳状况,则会造成判断误判。为了解决上述技术问题,心跳检测策略可以为φ值故障检测策略。φ值故障检测策略是基于心跳间隔符合正态分布的假设,通过对历史心跳数据采样来预测当前心跳是否超时。φ值故障检测策略可以较好的解决心跳间隔有规律不适用固定心跳检测策略的问题,适合心跳间隔符合比较平稳或符合规律的情况下,但对于具有突发情况或心跳间隔无规律的场景误判率比较高。
另外,业务网络a中的路由器组a接收并分发管理节点CNode和多个工作节点WNode之间的心跳信息、心跳应答信息和业务任务,在路由器组a负载过高时,可能会出现网络闪断、丢包、网络拥塞、网络风暴等情况,进而出现通信延迟(路由器组a的反应变慢)的情况时,进一步地,管理节点CNode会判断大量的工作节点WNode心跳异常,进一步判定大量的工作节点WNode故障,控制工作节点WNode自杀。这里,通信延迟可以理解为管理节点CNode和工作节点WNode之间的通信时长(即管理节点CNode收到工作节点WNode发送的消息的时长)增加。
上述描述的φ值故障检测策略和固定心跳检测策略,可以缓解单个工作节点WNode的网络波动引起的节点故障的误判。但在工作节点WNode出现大面积的系统网络风暴时,管理节点CNode可能出现对工作节点WNode是否故障的整体误判,引起大规模的工作节点WNode的自杀和不可用。
在本发明实施例中,若管理节点CNode针对多个工作节点WNode的心跳接收时长相似,则可采用相同的心跳接收时长的上限值T,对这些工作节点WNode进行心跳管理。基于此,若管理节点CNode针对n*m个工作节点WNode各自的心跳接收时长值(指示了管理节点CNode连续两次接收到工作节点WNode发送的心跳信息之间的时长)相似,则n*m个工作节点WNode归于一组(为了便于描述和区别称为节点组)。
若管理节点CNode针对n*m个工作节点WNode各自的心跳接收时长值中部分相差较大,则需要将心跳接收时长值相似的工作节点WNode归为一个节点组。示例地,连接到一个路由器的多个工作节点WNode作为一个节点组;示例地,连接到一个业务网络的多个工作节点WNode作为一个节点组;示例地,距离较近的多个机房内的多个工作节点WNode作为一个节点组。
这里,不同的节点组的心跳接收时长的上限值T不同,但是不同的节点组的心跳管理方案是相同的,本发明实施例以一个节点组的心跳管理方案为例进行描述,其他节点组类同,区别在于心跳接收时长阈值的上限值T不同。
这里,为了便于描述和区别,将节点组称为目标节点组。另外,在实际应用中,需要预先在管理节点CNode中配置节点组。
本发明实施例中,管理节点CNode在感知到目标节点组中的部分工作节点WNode与管理节点之间存在通信延迟时,为了避免后续对可用的工作节点WNode的故障误判,增大心跳接收时长的初始值(即上述上限值Tv,为了便于描述和区别,称为初始心跳接收时长值),得到心跳接收时长的当前值(考虑到该值是为了确定工作节点WNode的当前状态,为了便于描述和区别,称为当前状态判定值);后续,基于当前状态判定值,判断目标节点组中的每个工作节点WNode的心跳是否正常,在心跳正常时,当前状态为可用状态,心跳异常时,当前状态为不可用状态,可用状态的工作节点WNode可以被分发业务任务,从而避免对工作节点WNode的误判和误杀,使得心跳接收时长变长的工作节点WNode仍然可以被分发业务任务,确保工作节点WNode的可用性。
值得注意的是,这里的目标节点组中的部分工作节点WNode中的部分可以理解为目标节点组中的小部分,从而避免后续对大量可用的工作节点WNode的当前状态的误判。需要指出,小部分这一标准可以结合实际需求确定,比如,可以为目标节点组的节点总数目的10%,20%等。
可选地,具体可通过如下方式确定目标节点组中的每个工作节点WNode的心跳是否正常。
管理节点CNode对于目标节点组中的每个工作节点WNode,基于当前状态判定值,判断该工作节点WNode的超时判断结果(指示了当前的心跳接收时长和当前状态判定值之间的大小,为了便于描述和区别,称为目标超时判断结果),基于目标超时判断结果判断心跳是否正常。
这里,若目标超时判断结果反映当前的心跳接收时长值未超过当前状态判定值,则说明心跳信息接收正常,即未超时接收心跳信息,心跳正常,说明工作节点WNode的当前状态为可用状态;若标准超时判断结果反映当前的心跳接收时长值超过当前状态判定值,则说明超时接收心跳信息,心跳异常,说明工作节点WNode的当前状态为不可用状态。下面以此为例进行说明。在实际应用中,也可以认为若目标超时判断结果反映大于当前状态判定值,则说明心跳正常;反之说明心跳异常。
下面描述两种确定目标超时判断结果的实现方式。
实现方式1,管理节点CNode对于任一工作节点WNode,基于当前状态判定值,确定工作节点WNode的当前的心跳接收时长值,进一步地,将当前的心跳接收时长值与当前状态判定值进行比较,确定目标超时判断结果。
具体可通过如下方式确定当前的心跳接收时长:
管理节点CNode在接收到工作节点WNode发送的心跳信息,确定接收心跳信息的时刻(为了便于描述和区别,称为初始时刻),然后,确定下一次接收到工作节点WNode发送的心跳信息的时刻(为了便于描述和区别,称为下一时刻),基于初始时刻和下一时刻之间的时长,确定当前的心跳接收时长值;然后,以下一时刻作为初始时刻,按照上述方法,再次确定当前的心跳接收时长值,如此反复,不断的确定当前的心跳接收时长值。
在一些实施方式中,考虑到一段时间内的心跳接收时长值会出现波动,为了确保心跳接收时长值的准确性,通常会对当前的时段内所确定的多个心跳接收时长值进行平滑,从而得到当前的心跳接收时长值。这里,平滑可以理解为去除异常数据,比如,取均值实现平滑。
实现方式2,管理节点CNode对于任一工作节点WNode,基于当前状态判定值,确定是否超时接收工作节点WNode发送的心跳信息的判断结果,并将该判断结果作为目标超时判断结果。具体实现如下:
管理节点CNode在接收到工作节点WNode发送的心跳信息,确定接收心跳信息的时刻(为了便于描述和区别,称为初始时刻),然后,在初始时刻的基础上加上当前状态判定值,确定最迟接收该工作节点WNode发送的心跳信息的时刻(为了便于描述和区别,称为结束时刻);若在结束时刻前接收到该工作节点WNode发送的心跳信息,则判断没有超时接收心跳信息;然后,以接收到该工作节点WNode发送的心跳信息的时刻作为初始时刻,按照上述方法,再次判断是否超时接收心跳信息,如此反复,不断的判断是否超时接收心跳信息。若在结束时刻前没有接收到该工作节点WNode发送的心跳信息,则判断超时接收心跳信息;然后,以结束时刻作为初始时刻,按照上述方法,再次判断是否超时接收心跳信息,如此反复,不断的判断是否超时接收心跳信息。
一些实施方式中,考虑到一段时间内的是否超时接收心跳信息的判断结果可能会出现波动,为了确保可以较为准确的判断是否超时接收心跳信息,通常会对当前的时段内所确定的是否超时接收心跳信息的判断结果进行统计分析,从而得到目标超时判断结果。
其中,不可用状态的工作节点WNode被隔离不会分发业务任务,且继续向管理节点CNode发送心跳信息;可用状态的工作节点WNode可以被分发业务任务,保证整体业务可用性。可选地,后续,对于处于不可用状态的工作节点WNode,基于初始心跳接收时长值,判断该工作节点WNode的心跳是否恢复正常,在该工作节点WNode的心跳恢复正常时,将该工作节点WNode的当前状态从不可用状态更新为可用状态,否则,保持不可用状态不变。在实际应用中,可以周期性的对处于不可用状态的工作节点WNode的心跳是否恢复进行判断,更新处于不可用状态的工作节点WNode的当前状态。
可选地,可以通过如下实现方式判断不可用状态的工作节点WNode的心跳是否恢复正常。
管理节点CNode对于目标节点组中的每个工作节点WNode,基于初始心跳接收时长值,确定工作节点WNode对应的超时判断结果(为了便于描述和区别,称为标准超时判断结果,用于反映工作节点WNode当前的心跳接收时长值和初始心跳接收时长值之间的大小关系),基于该标准超时判断结果,判断该工作节点WNode的心跳是否正常。这里,标准超时判断结果的相关内容参见上文对目标超时判断结果的相关描述,区别仅仅为当前状态判定值替换为初始心跳接收时长值进行描述。
示例地,若标准超时判断结果反映当前的心跳接收时长未超过初始心跳接收时长值,则说明心跳信息接收正常,即心跳恢复正常;若标准超时判断结果反映当前的心跳接收时长值超过初始心跳接收时长值,则说明说明心跳信息接收异常,即心跳异常,心跳没有恢复正常。
应当理解的是,管理节点CNode实际是以初始心跳接收时长值作为参考,不断的调整当前状态判定值,进一步,调整工作节点WNode的当前状态。具体可以通过心跳时长调整策略,调整当前状态判定值。考虑到本发明实施例提出了动态调整当前状态判定值的方案,而当前状态判定值不可过大也不可过小,需要在一定的区间内波动;基于此,在实际应用中,当前状态判定值具有上限值(为了便于描述,可以称为目标心跳接收时长阈值)和下限值(上述初始心跳接收时长阈值)。基于此,本发明实施例示出了2种心跳时长调整策略。
心跳时长调整策略1:当前状态判定值在初始心跳接收时长值和目标心跳接收时长值这两个值之间反复,即当前状态判定值要么是初始心跳接收时长值,要么是目标心跳接收时长值。
心跳时长调整策略2:当前状态判定值在初始心跳接收时长值和目标心跳接收时长值之间的区间内波动,即当前状态判定值要么是初始心跳接收时长值,要么是目标心跳接收时长值。
后续,可以基于目标节点组中各工作节点WNode对应的标准超时判断结果,判断目标节点组与管理节点CNode之间是否存在通信延迟,在判断不存在通信延迟也即通信延迟消除,将当前状态判定值恢复为初始心跳接收时长值;在判断存在通信延迟,继续判断目标节点组与管理节点之间的通信延迟的情况。若该情况为通信延迟增加,则可以继续增大当前状态判定值;若该情况为通信延迟保持不变,则保持当前状态判定值不变;若若该情况为通信延迟缓解,则可以减小初始心跳接收时长值。
这里,通信延迟增加可以理解为不可用的工作节点WNode的数目增加,或者,不可用的工作节点WNode的当前的心跳接收时长值增加。
通信延迟缓解可以理解为不可用的工作节点WNode的数目减少,或者,不可用的工作节点WNode的当前的心跳接收时长值减小。
其中,不可用的工作节点WNode的标准超时判断结果表示心跳正常,同时该工作节点WNode是正常服务的。
值得注意的是,考虑到本发明实施例提出了动态调整当前状态判定值的方案,因此,需要周期性的调整当前状态判定值,下面对周期性调整当前状态判定值的具体过程进行描述。值得注意的是,无论在哪个周期,目标节点组中的工作节点WNode各自周期性向管理节点CNode发送心跳信息。
在第1个周期,管理节点CNode基于初始心跳接收时长值,得到目标节点组中的每个工作节点WNode对应的标准超时判断结果,据此判断目标节点组与管理节点之间的通信延迟的情况。
可选地,若判断部分出现通信延迟的情况,为了避免后续对可用的工作节点WNode的故障误判,则调大初始心跳接收时长值,确定大于初始心跳时长阈值的当前状态判定值。后续,管理节点CNode基于当前状态判定值,判断目标节点组中的工作节点WNode对应的目标超时判断结果,从而评估目标节点组中的工作节点WNode的当前状态为可用状态或不可用状态,不可用状态的工作节点WNode被隔离不会分发业务任务,可用状态的工作节点WNode可以被分发业务任务,保证整体业务可用性。
基于该设计,在感知到目标节点组和管理节点CNode之间的负载上升导致业务网络压力增加所带来的心跳接收时长变长的情况下,可以避免后续对工作节点WNode的误判和误杀,使得心跳接收时长值变长的工作节点WNode仍然可以被分发业务任务。
可选地,若判断没有出现通信延迟的情况,则确定当前状态判定值等于初始心跳接收时长值。
另外,对于目标节点组中的每个工作节点WNode,该工作节点WNode在确定需要自检时进行自检,确定自检结果并上报至管理节点CNode。自检结果指示了工作节点WNode进行自检后所得到的服务是否正常的结果。
在一些可行的实现方式,自检结果可以为服务正常或服务异常。另外,工作节点WNode在确定服务异常时,需要进行自我修复,自我修复的方式可以为进程重启或者设备重启。另外,工作节点WNode可以通过业务网络a或控制网络b上报自检结果至管理节点CNode。需要指出,工作节点WNode自检的服务至少包括向管理节点CNode发送心跳信息的服务、处理业务任务的服务。
工作节点WNode具体可通过如下两种自检方式确定需要进行自检。
自检方式1:工作节点WNode发送心跳信息后,会接收到管理节点CNode发送的心跳应答信息,进一步确定应答接收时长,在应答接收时长大于应答时长阈值时,确定需要进行自检。
自检方式2:工作节点WNode可以接收管理节点CNode发送的自检命令,在接收到自检命令后,确定需要进行自检。该实现方式中,自检命令为控制消息,管理节点CNode可以通过控制网络b向工作节点WNode发送自检命令。这里,管理节点CNode可以向处于不可用状态的工作节点WNode发送自检命令,或者,向标准超时判断结果指示心跳异常的工作节点WNode发送自检命令。
上述两种实现方式仅仅作为示例,并不构成具体限定,具体可结合实际需求设计工作节点WNode自检的启动方式,比如,可以周期性进行自检并上报至管理节点CNode。值得注意的是,自检可以判断工作节点WNode的服务是否正常。
在目标节点组中的工作节点WNode进行自检的情况下,对应的,管理节点CNode可以接收目标节点组中的部分或全部工作节点WNode上报的自检结果。考虑到管理节点CNode并不知道工作节点WNode的真实情况,而通信迟延产生的原因可以为管理节点CNode和工作节点WNode之间的业务网络a出现问题,也可以为工作节点WNode自身出现问题。为了更好的判断产生通信迟延的原因,管理节点CNode基于目标节点组中的每个工作节点WNode的标准超时判断结果和接收到的目标节点组中的工作节点WNode的自检结果,判断目标节点组与管理节点之间通信延迟的情况。
之后,在第2个周期,管理节点CNode基于目标节点组中的每个工作节点WNode对应的标准超时判断结果,判断目标节点组与管理节点之间是否存在通信延迟。若不存在,将当前状态判定值恢复为初始心跳接收时长值,应当理解,若当前状态判定值由大变为初始心跳接收时长值,实际上说明目标节点组与管理节点之间的通信恢复正常,通信延迟消除。
若目标节点组与管理节点之间存在通信延迟,则基于目标节点组中的每个工作节点WNode的当前周期和上一周期的当前状态的变化,判断目标节点组与管理节点之间的通信延迟的情况。
另外,若工作节点WNode上报了自检结果。进一步地,这里,管理节点CNode可以基于目标节点组中的每个工作节点WNode的当前周期和上一周期的当前状态的变化,以及,目标节点组中的部分获全部工作节点WNode上报的自检结果,判断目标节点组与管理节点之间的通信延迟的情况,该情况为增加、不变或缓解。
在一种可能的情况,若认为目标节点组与管理节点之间的通信延迟增加,在当前状态判定值小于目标心跳接收时长值时,则增加当前状态判定值。在当前状态判定值等于目标心跳接收时长值,则保持当前状态判定值不变。在当前状态判定值大于目标心跳接收时长值,则将当前状态判定值替换为目标心跳接收时长值。这里,通信延迟增加可以理解为不可用的工作节点WNode的数目增加,或者,不可用的工作节点WNode的当前的心跳接收时长值增加。
在另一种可能的情况,若目标节点组与管理节点之间的通信延迟保持不变,则保持当前状态判定值不变。通信延迟不变可以理解为不可用的工作节点WNode的数目不变,和,不可用的工作节点WNode的当前的心跳接收时长值不变。
在再一种可能的情况,若目标节点组与管理节点之间的通信延迟在缓解,这里,通信延迟缓解可以理解为不可用的工作节点WNode的数目减少,或者,不可用的工作节点WNode的当前的心跳接收时长值减小。考虑到减少当前状态判定值会增加工作节点WNode误判的可能性,因此需要进一步验证通信延迟是否真正的缓解,这里,可以基于当前周期的未超过初始心跳接收时长值的工作节点WNode的数目(为了便于描述和区别,称为标准可用节点数目),和上一周期的标准可用节点数目之间的差异,验证通信延迟是否真正的缓解,若当前周期相对于上一周期的标准可用节点数目有较大增加,可认为通信延迟真正的缓解;否则没有真正缓解,保持当前状态判定值不变即可。可选地,在通信延迟真正缓解时,可以选择减小当前状态判定值适配实际情况,则调小当前状态判定值以更新当前状态判定值。这里,更新后的当前状态判定值大于初始心跳接收时长值。值得注意的是,若当前状态判定值由大变小,说明目标节点组与管理节点之间虽然存在通信迟延,但是通信迟延已经在缓解了。
在第2个周期之后的每个周期,均需要按照前述第2周期描述的方式实现当前状态判定值的调整。
需要说明的是,若采用上述心跳时长调整策略1,则当前状态判定值要么为目标心跳接收时长值,要么为初始心跳接收时长值,此时,在前述对第2个周期的描述过程中,判断目标节点组与管理节点之间不存在通信迟延时,将当前状态判定值更新为初始心跳接收时长值;否则,保持当前状态判定值不变。
综上,本方案中,管理节点通过工作节点和管理节点之间的通信延迟的情况,在管理节点和其管理的多个工作节点开始出现通信延迟的情况下,增大心跳接收时长的当前值,降低后续大规模的工作节点的状态的误判,从而将业务任务分发到心跳接收时长增加的工作节点,提高工作节点的可用性。
以上即是对本方案中涉及的分布式系统的介绍。接下来对上述分布式系统中的各个组成部分进行介绍。
首先,介绍工作节点。本方案中,工作节点通常表示为一个电子设备。图3示出了本发明实施例中的电子设备300的结构示例图。电子设备300可以为服务器、计算机、电脑等具有数据处理能力的设备。如图3所示,电子设备300包括处理器301,存储器302、网络接口303。其中,处理器301,存储器302、网络接口303可通过总线或其他方式连接。
其中,处理器301是电子设备300的计算核心及控制核心。比如,处理器301处理业务任务。再比如,处理器301周期性的产生心跳信息。处理器301可以是中央处理单元(central processing unit,CPU),还可以是其他通用处理器、数字信号处理器(digitalsignal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件,硬件部件或者其任意组合。通用处理器可以是微处理器,也可以是任何常规的处理器。
其中,存储器302(memory)用于存放程序和数据。例如存放业务任务的处理程序、心跳机制的处理程序,同时,还用于存储操作系统,操作系统包括但不限于:YindoYs系统(一种操作系统),Linux系统(一种操作系统),鸿蒙系统(一种操作系统)等等,在此不做限定。存储器303包括主存储器和辅助存储器,主存储器又称内存储器(简称内存),辅助存储器又称外存储器(简称外存)。外存可以长期保存信息并且不依赖于电来保存信息,但是由机械部件带动,速度与中央处理器301相比就显得慢的多,通常为非易失性存储器(non-volatile memory),例如至少1个硬盘,软盘,磁带,CD等,用于存储数据集、全局索引列表、迭代器的程序和操作系统。内存指的就是主板上的存储部件,直接与中央处理器301直接与之沟通,并用其存储数据的部件,存放当前正在使用的(即执行中)的数据和程序,它的物理实质就是一组或多组具备数据输入输出和数据存储功能的集成电路,内存只用于暂时存放程序和数据,一旦关闭电源或发生断电,其中的程序和数据就会丢失。内存通常为易失性存储器,例如高速随机存取存储器(Random-Access Memory,RAM)。在实际应用中,本发明实施例将硬盘存储的程序加载到内存中,处理器301从内存中读取程序以周期性向管理节点CNode发送心跳信息,进行自检并上报自检结果至管理节点CNode。
其中,网络接口303用于收发数据,例如,将处理器301处理后的心跳信息、自检结果发送至管理节点CNode,或者,接收管理节点CNode发送的心跳应答信息等;网络接口303可以包括标准的有线接口和无线接口(如YI-FI,移动通信接口等),具体需要结合实际需求确定。
可以理解的是,本发明实施例中的处理器至少包括中央处理单元(centralprocessing unit,CPU),还可以包括其他通用处理器、数字信号处理器(digital signalprocessor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件,硬件部件或者其任意组合。通用处理器可以是微处理器,也可以是任何常规的处理器。
另外,管理节点CNode可以为若干个计算机组成。这些计算机的结构参见上述计算机300,区别在于管理节点CNode的网络接口303接受工作节点WNode发送的心跳信息,发送心跳应答信息,自检命令,处理器301实现基于接收到的工作节点WNode发送的心跳信息实现心跳管理的技术方案,详细内容参见上文,不再赘述。
以上即是对本方案中涉及的分布式系统,以及该分布式系统中各个组成部分的介绍。接下来对上述图1中描述的管理节点针对目标节点组的心跳管理方案进行详细描述。值得注意的,每个周期的心跳管理是相似的,本发明实施例仅以第1个周期之后的第i个周期为例进行说明。这里,第i个周期也可以理解为当前周期,第i-1个周期可以理解为上一周期。
在第i个周期(也即当前周期),首先,确定目标节点组中的每个工作节点各自的当前状态。
图4示出了本发明实施例中提供的当前状态确定方案。图4所示,该方案具体包括以下步骤。
步骤401.目标节点组中的每个工作节点WNode周期性向管理节点CNode发送心跳信息
步骤402.管理节点CNode确定目标节点组的初始心跳接收时长值、第i-1个周期的当前状态判定值和目标节点组中每个工作节点的当前状态。
在实际应用中,初始心跳接收时长值是人为综合考虑工作节点WNode的处理能力,工作节点WNode和管理节点CNode之间的业务网络a中的路由器数目设置的。
当前状态判定值是第i-1个周期确定的。第1个周期到第i-1个周期的具体实现可以参见上文,不再赘述。目标节点组中每个工作节点的当前状态表示第i-1个周期之后的当前状态,可以为可用状态,也可以为不可用状态。
步骤403.管理节点CNode对于目标节点组中的处于可用状态的每个工作节点,基于当前状态判定值,确定的该工作节点对应的目标超时判断结果,基于目标超时判断结果确定该工作节点的当前状态为不可用状态或可用状态。
具体地,若目标超时判断结果指示了超时,则当前状态为不可用状态,反之为可用状态。
步骤404.管理节点CNode对于目标节点组中的处于不可用状态的每个工作节点,基于初始心跳接收时长阈值,确定的该工作节点的标准超时判断结果,基于标准超时判断结果在判断心跳恢复正常时,将该工作节点的当前状态由不可用状态更新为可用状态。
需要说明的是,本发明实施例中,不可用状态的工作节点的当前的心跳接收时长值通常超过初始心跳接收时长值。
对于上述方案,对于可用状态的工作节点采用当前状态判定值判断当前状态,对于不可用状态的工作节点,采用初始心跳接收时长值判断是否恢复可用状态,从而确保对工作节点的当前状态判断的精准性。
上述确定工作节点的当前状态的方案仅仅作为一种示例,并不构成具体限定。作为另一种示例,对于不可用状态的工作节点,可以采用当前状态判定值判断是否恢复可用状态。
接着,判断目标节点组与管理节点之间是否出现通信延迟,在没有出现通信延迟时,将当前判定值替换为初始心跳接收时长阈值,在出现通信延迟时,判断目标节点组与管理节点之间的通信延保持不变、增加或缓解。
图5示出了本发明实施例中提供的第一种通信延迟确定方案。图5所示,该方案具体包括以下步骤。
步骤501.管理节点CNode对于目标节点组中的每个工作节点,基于初始心跳接收时长值,确定该工作节点对应的标准超时判断结果。
步骤502.管理节点CNode基于目标节点组中的每个工作节点各自对应的标准超时判断结果,确定第一延迟判断指标的指标值。
在该例子中,确定第一延迟判断指标时,可以考虑如下因素:不超过初始心跳接收时长值的工作节点WNode的数目(为了便于描述和区别,称为标准可用节点数目)、超过初始心跳接收时长值的工作节点WNode的数目(为了便于描述和区别,称为标准不可用节点数目)、目标工作组的节点总数目。
可选地,第一延迟判断指标的指标值和通信时长为正比关系。
示例地,第一延迟判断指标可以为目标节点组的标准不可用节点数目。
示例地,第一延迟判断指标可以为目标节点组的标准不可用节点数目和节点总数目的比值。
可选地,第一延迟判断指标的指标值和通信时长为反比关系。
示例地,第一延迟判断指标可以为目标节点组中标准可用节点数目。
示例地,第一延迟判断指标可以为目标节点组中标准可用节点数目和节点总数目的比值。
步骤503.管理节点CNode基于第一延迟判断指标的指标值和预设的第一阈值的判断结果,判断目标节点组与管理节点之间是否出现通信延迟,如果否,执行步骤504,如果是,执行步骤507。
示例地,若标准判断指标的指标值和通信时长为正比关系,若判断结果为第一延迟判断指标的指标值超过第一阈值,则说明目标节点组与管理节点之间出现通信延迟;否则,没有出现通信延迟。
示例地,若标准判断指标的指标值和通信时长为反比关系,若判断结果为第一延迟判断指标的指标值超过第一阈值,则说明目标节点组与管理节点之间没有出现通信延迟;否则,出现通信延迟。
这里,第一阈值可以结合实际情况进行合理的设计,本发明实施例对此不做具体限定,比如,可以将标准阈值替换为区间。
步骤504.管理节点CNode判断当前状态判定值大于、等于或小于初始心跳接收时长值,如果大于或小于,执行步骤505,如果等于执行步骤506。
步骤505.管理节点CNode将当前状态判定值替换为初始心跳接收时长值。
需要说明的是,在实际应用中,只要经过合理的设置,一般不太可能会出现当前状态判定值小于初始心跳接收时长值的情况。
步骤506.管理节点CNode保持当前状态判定值不变。
步骤507.管理节点CNode判断目标节点组与管理节点之间的通信延迟保持不变、增加或缓解。
对于上述方案,通过目标工作组中超过初始接收时长值的工作节点的数量,分析网络延迟所导致的不可用的节点的情况,从而可以较为准确的判断目标工作组和管理节点之间是否存在通信延迟,进而降低后续对工作节点的当前状态误判的可能性。
图6示出了本发明实施例中提供的第二种通信延迟确定方案。图6所示,该方案具体包括以下步骤。
步骤601.管理节点CNode在接收到工作节点的心跳信息后,向工作节点发送心跳应答信息。
步骤602.目标节点组中的每个工作节点WNode在确定应答接收时长大于预设的应答时长阈值时进行自检,确定自检结果。
本发明实施例中,工作节点在应答接收时长大于预设的应答时长阈值时进行自检,得到自检后状态后上报至管理节点。
值得注意的是,在实际应用中,工作节点WNode运行业务和心跳相关的进程,因此,工作节点的自检可以理解为对业务和心跳相关的进程的检查。
应答时长阈值可以结合实际情况进行合理设置,本发明实施例对此不做具体限定。
步骤603.目标节点组中进行自检的每个工作节点WNode向管理节点CNode发送自检结果。
步骤604.管理节点CNode向目标节点组中处于不可用状态的工作节点WNode发送自检命令。
步骤605.目标节点组中接收自检命令的工作节点WNode基于自检命令时进行自检确定自检结果。
步骤606.目标节点组中接收自检命令的工作节点WNode向管理节点CNode发送自检结果。
步骤607.管理节点CNode对于目标节点组中的每个工作节点,基于初始心跳接收时长值,确定该工作节点对应的标准超时判断结果。
步骤608.管理节点CNode基于目标节点组中的每个工作节点各自对应的标准超时判断结果和接收到的自检结果,确定第二延迟判断指标的指标值。
这里,自检结果可以为服务正常或服务异常。
在该例子中,确定第二延迟判断指标时,除了考虑上述标准可用节点数目、标准不可用节点数目、节点总数目,还可以考虑如下因素:标准超时判断结果指示心跳异常且服务异常的工作节点WNode的数目(为了便于描述和区别,称为服务异常节点数目)、标准超时判断结果指示心跳异常且服务正常的工作节点WNode的数目(为了便于描述和区别,称为不可用服务节点数目)。
可选地,第二延迟判断指标的指标值和通信时长为正比关系。
示例地,第二延迟判断指标可以为不可用服务节点数目。
示例地,延迟判断指标可以为不可用服务节点数目和节点总数目的比值。
示例地,第二延迟判断指标可以为标准不可用节点数目和服务异常节点数目之间的差值。
示例地,第二延迟判断指标可以为标准不可用节点数目和服务异常节点数目之间的差值和节点总数目的比值。
当然,在其他实施例中,管理节点CNode还可以基于目标节点组中的每个工作节点各自对应的标准超时判断结果,确定第二延迟判断指标的指标值。
步骤609.管理节点CNode基于第二延迟判断指标的指标值和预设的第二阈值的判断结果,判断目标节点组与管理节点之间是否出现通信延迟,如果否,执行步骤610,如果是,执行步骤613。
示例地,标准判断指标的指标值和通信时长为正比关系,若判断结果为第二延迟判断指标的指标值超过第二阈值,则说明目标节点组与管理节点之间出现通信延迟;否则,没有出现通信延迟。
这里,第二阈值可以结合实际情况进行合理的设计,本发明实施例对此不做具体限定,比如,可以将第二阈值替换为区间。
步骤610.管理节点CNode判断当前状态判定值大于、等于或小于初始心跳接收时长值,如果大于或小于,执行步骤611,如果等于执行步骤612。
步骤611.管理节点CNode将当前状态判定值替换为初始心跳接收时长值。
需要说明的是,在实际应用中,只要经过合理的设置,一般不太可能会出现当前状态判定值小于初始心跳接收时长值的情况。
步骤612.管理节点CNode保持当前状态判定值不变。
步骤613.管理节点CNode判断目标节点组与管理节点之间的通信延迟保持不变、增加或缓解。
对于上述方案,通过目标工作组中超过初始接收时长值的工作节点的数量,以及,超过初始接收时长值的工作节点的服务情况,分析服务正常的节点中由于网络延迟导致的不可用的节点情况,从而可以较为准确的判断目标工作组和管理节点之间是否存在通信延迟,进而降低后续对工作节点的当前状态误判的可能性。
接着,判断目标节点组与管理节点之间的通信延迟保持不变、增加或缓解。
图7示出了本发明实施例中提供的第一种通信延迟情况判断方案。图7所示,该方案具体包括以下步骤。
步骤701.管理节点CNode基于目标节点组中的处于不可用状态的工作节点的数目,确定第一数目指标的第一指标值。
这里,第一数目指标指示了不可用的工作节点WNode的数目情况。
可选地,第一数目指标可以为处于不可用状态的工作节点的数目。
可选地,第一数目指标可以为处于不可用状态的工作节点的数目和目标节点组的总数目的比值。
步骤702.管理节点CNode基于第一指标值和上一周期的第一数目指标的第二指标值之间的差值,判断目标节点组与管理节点之间的通信延迟的节点数目增加、不变还是减少,如果增加,执行步骤705,如果不变,执行步骤703,如果减少,则执行步骤709。
示例地,若第一指标值和第二指标值之间的差值较小,可以认为目标节点组与管理节点之间的通信延迟的节点数目不变。
示例地,第一指标值和第二指标值之间的差值较大,第一指标值大于第二指标值,则可以认为目标节点组与管理节点之间的通信延迟的节点数目减少。
示例地,第一指标值和第二指标值之间的差值较大,第一指标值小于第二指标值,则可以认为目标节点组与管理节点之间的通信延迟的节点数目增加。
举例来说,可以预先设置阈值,若第一指标值和第二指标值之间的差值小于该阈值,则说明第一指标值和第二指标值之间的差值较小,反之,较大。
步骤703、管理节点CNode基于处于不可用状态的各工作节点对应的当前的心跳接收时长值,确定当前周期的第一时长指标的第三指标值。
这里,第一时长指标指示了不可用节点的心跳接收时长值的大小。
可选地,去除不可用状态的各工作节点对应的当前的心跳接收时长值中的异常值,之后,基于处于不可用状态的各工作节点对应的当前的心跳接收时长值,确定当前周期的第一时长指标的第三指标值。
可选地,第一时长指标可以为处于不可用状态的工作节点的当前的心跳接收时长值的均值。
步骤704、管理节点CNode基于第三指标值和上一周期的第一时长指标的第四指标值之间的差值,判断目标节点组与管理节点之间的通信延迟的时长增加、不变或减少,如果增加,执行步骤705,如果不变,执行步骤708,如果减少,执行步骤709。
示例地,若第三指标值和第四指标值之间的差值较小,可以认为目标节点组与管理节点之间的通信延迟的时长不变。
示例地,第一指标值和第二指标值之间的差值较大,第一指标值大于第二指标值,则可以认为目标节点组与管理节点之间的通信延迟的时长减少。
示例地,第一指标值和第二指标值之间的差值较大,第一指标值小于第二指标值,则可以认为目标节点组与管理节点之间的通信延迟的时长增加。
举例来说,可以预先设置阈值,若第三指标值和第四指标值之间的差值小于该阈值,则说明第三指标值和第四指标值之间的差值较小,反之,较大。
步骤705.管理节点CNode判断当前状态判定值小于、等于还是大于目标心跳接收时长值,如果小于,执行步骤706,如果大于,执行步骤707,如果等于,执行步骤708。
步骤706.管理节点CNode增加当前状态判定值以更新当前状态判定值。
若采用上述心跳时长调整策略2,可以通过如下3种实现方式增加当前状态判定值。
时长增加方式11:按照预设增量值对当前状态判定值进行增加。
可选地,预设增量值可以为初始心跳接收时长值和目标心跳接收时长值之间的差值和预设数目的比值。
可选地,预设增量值可以为人为根据实际情况设置的;若按照预设增量值对当前状态判定值增加后的阈值大于目标心跳接收时长阈值时,将更新后的当前状态判定值替换为目标心跳接收时长阈值。
时长增加方式12:管理节点CNode预先设置目标指标的多个指标值区间,并预先为多个指标值区间中的每个区间设置一个心跳接收时长值,该心跳接收时长值位于初始心跳接收时长值和目标心跳接收时长值之间;在具体实现时,管理节点CNode确定目标指标的指标值所在的指标值区间,将该指标值区间对应的心跳接收时长阈值作为当前状态判定值。这里,目标指标可以为上述第一数目指标和第一时长指标的加权平均。
时长增加方式13:当前状态判断值可以为第一时长指标的第三指标值。
步骤707.管理节点CNode将当前状态判定值替换为目标心跳接收时长值。
需要说明的是,在实际应用中,只要经过合理的设置,一般不太可能会出现当前状态判定值大于目标心跳接收时长值的情况。
步骤708.管理节点CNode保持当前状态判定值不变。
步骤709.管理节点CNode基于目标节点组中各工作节点对应的标准超时判断结果,确定标准可用节点数目。
标准可用节点数目为步骤502中描述的不超过初始心跳接收时长值的工作节点WNode的数目。
步骤710.管理节点CNode基于标准可用节点数目和上一周期的标准可用节点数目之间的差值,判断目标节点组与管理节点之间的通信延迟是否缓解,如果是,执行步骤710,如果否,执行步骤713。
示例地,当前周期和上一周期的标准可用节点数目较小,可以认为目标节点组与管理节点之间的通信延迟没有缓解。
示例地,若当前周期和上一周期的标准可用节点数目较大,则可以认为目标节点组与管理节点之间的通信延迟缓解。
举例来说,可以预先设置阈值,若标准可用节点数目的差值小于该阈值,则说明没有缓解,反之,缓解。
这里,标准可用节点的数目仅仅作为示例,并不构成具体限定,还可以采用当前周期和上一周期的标准可用节点数据和目标节点组的总数目的比值的差异,判断目标节点组与管理节点之间的通信延迟是否缓解。
步骤711.管理节点CNode判断当前状态判定值大于、等于或小于初始心跳接收时长值,如果大于,执行步骤712,如果小于,执行步骤713,如果等于,执行步骤708。
步骤712.管理节点CNode减小当前状态判定值以更新当前状态判定值。
若采用上述心跳时长调整策略2,可以通过如下3种实现方式减小当前心跳接收时长阈值。
时长减少方式21:可以按照预设减少值对当前状态判定值进行减少。预设减少量可以和预设增加量相同,也可以不同,具体可结合实际需求进行合理的设计,本发明实施例对此不做具体限定。预设减少值的内容可以参加上文对预设增加值的描述。
时长减少方式22:管理节点CNode管理节点CNode可以预先设置目标指标的多个指标值区间,并预先为多个指标值区间中的每个区间设置一个心跳接收时长值,该心跳接收时长阈值位于初始心跳接收时长值和目标心跳接收时长阈之间;在具体实现时,管理节点CNode确定目标指标的指标值所在的指标值区间,将该指标值区间的心跳接收时长值作为当前状态判定值。这里,目标指标可以为上述第一数目指标和第一时长指标的指标值的加权平均。
时长减少方式23:当前状态判断值可以为第一时长指标的第三指标值。
步骤713.管理节点CNode将当前状态判定值替换为初始心跳接收时长值。
需要说明的是,在实际应用中,只要经过合理的设置,一般不太可能会出现当前状态判定值小于初始心跳接收时长值的情况。
对于上述方案,通过目标工作组中超过当前状态判断值的工作节点的数量,以及,超过当前状态判断值的工作节点的心跳接收时长值的大小,可较为准确的判断网络延迟的情况,在判断网路延迟在缓解时,为了进一步验证网络延迟是否真的缓解,可以基于目标工作组中未超过初始心跳接收时长值的工作节点的数量,验证通信延迟是否真正在缓解,从而可以较为准确的判断目标工作组和管理节点的通信延迟是否缓解。后续,基于不同的通信延迟的情况,适配性的调整当前状态判定值,进而降低工作节点的状态的误判,确保工作节点的可用性。
图8示出了本发明实施例中提供的第二种通信延迟情况判断方案,如图8所示,该方案具体包括以下步骤。
步骤801.管理节点CNode基于针对目标节点组中工作节点的当前状态和接收到的目标节点组中工作节点上报的自检结果,确定不可用服务节点数目。
这里,不可用服务节点数目指示了当前状态为不可用状态同时服务正常的工作节点WNode的数目。
步骤802.管理节点CNode基于不可用服务节点数目,确定第二数目指标的第一指标值。
可选地,第二数目指标可以为不可用服务节点数目。
可选地,第二数目指标可以为不可用服务节点数目和节点总数目的比值。
步骤803.管理节点CNode基于第一指标值和上一周期的第二指标的第二指标值之间的差值,判断目标节点组与管理节点之间的通信延迟的节点数目增加、不变还是减少,如果增加,执行步骤806,如果不变,执行步骤804,如果减少,执行步骤810。
详细内容可参见上文对步骤702的描述。区别仅仅在于将第一数目指标替换为第二数目指标。
步骤804、管理节点CNode基于处于不可用状态和服务正常的各工作节点对应的当前的心跳接收时长值,确定当前周期的第二时长指标的第三指标值。
详细内容可参见上文对步骤703的描述。区别仅仅在于将处于不可用状态的工作节点的当前的心跳接收时长值,替换为,处于不可用状态同时服务正常的工作节点的当前的心跳接收时长值。
步骤805、管理节点CNode基于第三指标值和上一周期的第二时长指标的第四指标值之间的差值,判断目标节点组与管理节点之间的通信延迟的时长增加、不变或减少,如果增加,执行步骤806,如果不变,执行步骤809,如果减少,执行步骤810。
步骤806.管理节点CNode判断当前状态判定值小于、等于、大于目标心跳接收时长阈值,如果小于,执行步骤807,如果大于,执行步骤808,如果等于,执行步骤809。
步骤807.管理节点CNode增加当前状态判定值以更新当前状态判定值。
具体地,按照上述步骤706中描述的时长增加方式11和时长增加方式13的方式更新当前状态判定值。区别仅仅在于,时长增加方式12中的目标指标为上述第二数目指标和第二时长指标的加权平均。时长增加方式13中的第一时长指标替换为第二时长指标。
步骤808.管理节点CNode将当前状态判定值替换为目标心跳接收时长值。
步骤809.管理节点CNode保持当前状态判定值不变。
步骤810.管理节点CNode基于目标节点组中各工作节点对应的标准超时判断结果,确定标准可用节点数目。
步骤811.管理节点CNode基于标准可用节点数目和上一周期的标准可用节点数目之间的差值,判断判断目标节点组与管理节点之间的通信延迟是否缓解,如果是,执行步骤812,如果否,执行步骤809。
根据一种可行的实现方式,管理节点CNode基于上述第一延迟判断指标的指标值和预设的第三阈值的判断结果,判断目标节点组与管理节点之间的通信延迟是否缓解。
根据一种可行的实现方式,管理节点CNode基于上述第二延迟判断指标的指标值和预设的第四阈值的判断结果,判断目标节点组与管理节点之间的通信延迟是否缓解。
步骤812.管理节点CNode判断当前状态判定值大于、等于或小于初始心跳接收时长值,如果大于,执行步骤813,如果小于,执行步骤814,如果等于,执行步骤809。
步骤813.管理节点CNode减小当前状态判定值以更新当前状态判定值。
具体地,按照上述步骤711中描述的时长减少方式21和时长减少方式23的方式更新当前状态判定值。区别仅仅在于,时长减少方式22中的目标指标为上述第二数目指标和第二时长指标的加权平均。时长减少方式23中的第一时长指标替换为第二时长指标。
步骤814.管理节点CNode将当前状态判定值替换为初始心跳接收时长值。
综上,在图7和图8示出的方案中,综合不可用的工作节点的数目和不可用的工作节点的当前心跳接收时长,综合判断管理节点和其管理的多个工作节点的通信延迟的情况。
情况1:在不可用的工作节点的数目增加或不可用的工作节点的当前心跳接收时长变长的情况下,可以认为管理节点和其管理的多个工作节点之间的通信延迟增大,则可以增加当前状态判定值,从而将业务任务分发到心跳接收时长增加的工作节点,提高工作节点的可用性。
情况2:在不可用的工作节点的数目或不可用的工作节点的当前心跳接收时长均没有较大变化时下,可以认为管理节点和其管理的多个工作节点之间的通信延迟不变,则可以维持当前状态判定值。
情况3:在不可用的工作节点的数目减少或不可用的工作节点的当前心跳接收时长减小的情况下,可以认为管理节点和其管理的多个工作节点之间的通信延迟可能缓解,之后,基于初始心跳接收时长值下的工作节点的标准超时判断结果,真正判断管理节点和其管理的多个工作节点之间的通信延迟是否缓解,在缓解时,可以减小当前心跳接收时长,否则,保持不变。
对于上述方案,通过目标工作组中超过当前状态判断值的工作节点的数量,以及,超过初始接收时长值的工作节点的服务情况,分析服务正常的节点中由于网络延迟导致的不可用的节点情况,结合超过当前状态判定值、且服务正常的工作节点的心跳接收时长值的大小,可较为准确的判断网络延迟的情况,在判断网路延迟在缓解时,为了进一步验证网络延迟是否真的缓解,可以基于目标工作组中未超过初始心跳接收时长值的工作节点的数量,验证通信延迟是否真正在缓解,从而可以较为准确的判断目标工作组和管理节点的通信延迟是否缓解。后续,基于不同的通信延迟的情况,适配性的调整当前状态判定值,进而降低工作节点的状态的误判,确保工作节点的可用性。
接下来,基于上文所描述的心跳管理方案,对本发明实施例提供的一种心跳管理方法进行介绍。可以理解的是,该方法是上文所描述的心跳管理方案的另一种表达方式,两者是相结合的。该方法是基于上文所描述的心跳管理方案提出,该方法中的部分或全部内容可以参见上文对心跳管理方案的描述。
请参阅图9,图9是本发明实施例提供的一种心跳管理方法的流程示意图。可以理解,该方法可以通过第一节点来执行,第一节点可以为任何具有计算、处理能力的装置、设备、平台、设备集群。第一节点通过若干个转发设备和多个第二节点通信,第一节点用于将处理业务请求得到的多个业务任务通过若干个转发设备分发给多个第二节点处理,多个第二节点周期性的通过若干个转发设备向第一节点发送心跳信息。如图9所示,该心跳管理方法包括:
步骤901、基于初始时长值和接收第二节点发送的心跳信息的时刻,确定第二节点对应的当前状态为可用状态或不可用状态。
步骤902、基于多个第二节点各自对应的当前状态,确定多个第二节点的至少一部分与第一节点之间出现通信延迟。
步骤903、增大初始时长值,确定第一时长值。
步骤904、对于处于可用状态的第二节点,基于第一时长值和接收第二节点发送的心跳信息的时刻,确定第二节点对应的当前状态为可用状态或不可用状态;其中,处于可用状态的第二节点可被分发业务任务,第一节点连续两次接收处于可用状态的第二节点发送的心跳信息的时刻之间的时长小于等于第一时长值。
需要指出,第一节点对应上述管理节点CNode,第二节点对应上述工作节点WNode。在正常情况下,第一节点对于多个第二节点的心跳接收时长是相近的,因此可以使用相同的初始时长值;此时,多个第二节点对应上述目标节点组。初始时长值对应上述初始心跳接收时长值。第一时长值对应上述当前状态判定值。
在步骤901中,对于多个第二节点中每个第二节点,基于初始时长值,确定该第二节点对应的标准超时判断结果,在该结果表示未超时时,说明心跳正常,此时将该第二节点的当前状态标记为可用状态,反之标记为不可用状态。确定标准超时判断结果和基于该结果判断心跳是否正常的详细内容参见上文描述,不再赘述。
然后,在步骤902中,基于多个第二节点中每个第二节点各自对应的当前状态,确定不可用的第二节点的数目,基于不可用的第二节点的数目,判断多个第二节点中的部分与第一节点之间是否出现通信延迟。这里,不可用的第二节点的数目可以为处于不可用状态的第二节点的数目,对应上述标准不可用节点数目。详细内容参见上文步骤501至步骤503的描述,不再赘述。
进一步地,在步骤903中,在判断多个第二节点中的部分与第一节点之间出现通信延迟时,为了降低后续对可用的多个第二节点的当前状态的误判的可能性,增加初始时长值,得到大于初始时长值的第一时长值。
可选地,可以基于步骤706描述的3种时长增加方式11、12和13实现,其中,在采用上述时长增加方式12时,此时,目标指标可以为第一延迟判断指标。
后续,在步骤904中,对于多个第二节点中处于可用状态的每个第二节点,基于第一时长值,确定该第二节点对应的目标超时判断结果。确定目标超时判断结果的详细内容参见上文描述,不再赘述。这里,通过增大后得到的第一时长值,判断可用状态的第二节点的当前状态,可以降低对第二节点的当前状态的误判,使得服务正常的第二节点在通信延迟下仍然可以被分发业务任务,确保第二节点的可用性。
可选地,在目标超时判断结果指示对于该第二节点的心跳接收时长未超过第一时长值时,标记该第二节点的当前状态为可用状态。
可选地,目标超时判断结果指示对于该第二节点的心跳接收时长超过第一时长值时,标记该第二节点的目标状态为不可用状态。这里,处于不可用状态的第二节点会被分发业务任务,且继续向第一节点发送心跳信息。
另外,对于不可用状态的每个第二节点,基于初始时长值,确定该第二节点对应的标准超时判断结果,在该结果表示未超时时,说明心跳正常,此时将该第二节点的当前状态从不可用状态更新为可用状态。这里,考虑不能较为准确的判断导致第二节点心跳异常的原因,为了确保不可用状态的第二节点真的可用,则通过初始时长值,判断不可用状态的第二节点的心跳是否恢复,可以降低对第二节点的当前状态的误判,使得心跳恢复正常的第二节点可以被分发业务任务,确保第二节点的可用性。
值得注意的是,在一些可能的情况,对于不可用状态的每个第二节点,也可以直接通过第一时长值,判断第二节点心跳是否恢复正常。该方法虽然可能会出现误判的情况,但是也是一种可行的实现方式。
进一步地,第一节点将业务任务分发到处于可用状态的第二节点,从而出现通信延迟的情况下,可以将业务任务分发到心跳接收时长增加的节点,确保节点的可用性。
在确定第一时长值之后,还需要监控多个第二节点中的部分与第一节点之间的通信是否恢复正常和通信没有恢复正常时,通信延迟的情况。
首先,需要判断多个第二节点中的部分与第一节点之间的通信是否恢复正常。考虑到第一节点可以实时更新第二节点对应的标准超时判断结果,进一步更新多个第二节点与第一节点之间是否出现通信延迟的结果。则可继续执行与步骤902相似的内容,即基于初始时长值,判断多个第二节点与第一节点之间是否出现通信延迟。详细内容参见上述对步骤902的描述。
在多个第二节点与第一节点之间没有出现通信延迟,即可认为通信延迟消失,通信恢复正常,则调整第一时长值为初始时长值。否则,认为多个第二节点与第一节点之间存在通信延迟,通信没有恢复正常;进一步地,需要判断通信延迟的情况,比如,增加,不变或缓解。考虑到通信延迟增加、减少、不变需要对比才能知道,对应的,在步骤903之前,可以基于多个第二节点的当前状态,确定延迟判断指标的第一指标值;在步骤904之后,基于多个第二节点的当前状态,确定延迟判断指标的第二指标值,基于第一指标值和第二指标值之间的比较结果,判断多个第二节点与第一节点之间的通信延迟的情况。
若通信延迟增加、缓解、不变理解为处于不可用状态的第二节点的数目的增加、减少、不变,对应的,延迟判断指标可以为上述步骤701中描述的第一数目指标,判断多个第二节点与第一节点之间的通信延迟的情况的详细内容参见步骤701、步骤702的描述。
若通信延迟增加、缓解、不变理解为处于不可用状态的第二节点的心跳接收时长值的增加、减少、不变,对应的,延迟判断指标可以为上述步骤703中描述的第一时长指标,判断多个第二节点与第一节点之间的通信延迟的情况的详细内容参见步骤703、步骤704的描述。
在一种可能的情况,在判断多个第二节点与第一节点之间通信延迟不变时,则保持第一时长值不变。这里,通信延迟不变可以理解为处于不可用状态的第二节点的数目没有增加,以及,处于不可用状态的第二节点的心跳接收时长值没有增加。
在一种可能的情况,在判断多个第二节点与第一节点之间的通信延迟增加时,则调大第一时长值。增加方式可以参见步骤903的描述。这里,通信延迟增加可以理解为处于不可用状态的第二节点的数目增加,和/或,处于不可用状态的第二节点的心跳接收时长值增加。
在一种可能的情况,在判断多个第二节点与第一节点之间的通信延迟缓解时,这里,通信延迟减小可以理解为处于不可用状态的第二节点的数目减少,和/或,处于不可用状态的第二节点的心跳接收时长值减小。
可选地,调小第一时长值,调小的第一时长值大于初始时长值。调小的方式可以参见步骤711描述的3种时长减少方式21、22和23实现,其中,在采用上述时长增少方式22时,此时,目标指标可以为第一时长指标。
可选地,为了确定调小第一时长值不会影响对第二节点的当前状态的误判,在步骤902之后,还可以确定可用状态的第二节点的数目(对应上述标准可用节点数目,为了便于和区别,称为第一数目);在步骤904之后,可以确定不超过初始时长值的第二节点的数目(对应上述标准可用节点数目,为了便于和区别,称为第二数目),基于第一数目和第二数目之间的差值,或者,第一数目和第二数目之间的差值和多个第二节点的总数目的比值,进一步验证多个第二节点与第一节点之间的通信延迟是否真正在缓解。详细内容参见上文对步骤710的描述。在验证多个第二节点与第一节点之间的通信延迟缓解时,可以调小第一时长值。
以上描述了基于多个第二节点的当前状态、初始时长值实现心跳管理的过程。在一些可能的实现方式中,还可以结合多个第二节点中部分或全部第二节点的自检结果实现心跳管理,从而可较为准确的分析多个第二节点全部或大部分与第一节点之间通信延迟的情况。
这里,自检结果指示了第二节点进行自检后所得到的服务是否正常的结果。第二节点具体可通过上述基于应答接收时长的自检方式1和基于自检命令的自检方式2确定是否需要进行自检。这里,在自检方式2中,考虑到第一节点并不知道第二节点的真实情况,因此,可以在确定第二节点的标准超时判断结果指示超时时,控制该第二节点进行自检。
具体来说,在步骤902中,基于多个第二节点各自对应的当前状态和接收的多个第二节点中部分或全部发送的自检结果,确定不可用的第二节点的数目。这里,不可用的第二节点的数目可以为服务正常且处于不可用状态的第二节点的数目,对应上述不可用服务节点数目,详细内容参见上文步骤607至步骤608的描述。
值得注意的是,在步骤904之后,对于不可用状态且服务正常的每个第二节点,基于第一时长值,确定该第二节点对应的目标超时判断结果,在该结果表示未超时时,说明心跳正常,此时将该第二节点的当前状态从不可用状态更新为可用状态。对于不可用状态且服务异常的每个第二节点,基于初始时长值,确定该第二节点对应的标准超时判断结果,在该结果表示未超时时,说明心跳正常,此时将该第二节点的当前状态从不可用状态更新为可用状态。
具体来说,在步骤904之后,判断多个第二节点与第一节点之间的通信延迟的情况这一过程,上述第一数目指标和第一时长指标为第二数目指标和第二时长指标,详细内容参见上文步骤801至步骤802、步骤804至步骤805的描述。
由此,本方案中,通过多个第二节点和第一节点之间的通信延迟的情况,在开始出现通信延迟时,增大心跳接收时长的值,降低工作节点的状态的误判,从而将业务任务分发到心跳接收时长值增加的工作节点,从而有效的降低了节点误杀,提高节点的可用性。
基于与本发明方法实施例相同的构思,本发明实施例还提供了一种心跳管理装置。
根据一种可行的实现方式,心跳管理装置包括若干个模块,各个模块用于执行本发明实施例提供的心跳管理方法中的各个步骤,关于模块的划分在此不做限制。所属领域的技术人员可以清楚地了解到,实际应用中,可以根据需要而将本发明实施例提供的心跳管理方法中的各个步骤分配由不同的模块完成,即将装置的内部结构划分成不同的模块,以完成以上描述的全部或者部分功能。实施例中的各模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上模块集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各模块的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。上述装置中模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
根据一种可行的实现方式,心跳管理装置可以包括上述图3描述的电子设备中的部件。这里,处理器301执行存储器302中程序实现本发明实施例提供的心跳管理方法的实施例中的各个步骤,例如图9示出的步骤901至904。另外,图9示出的步骤901可以简单表述为基于初始时长值,确定第二节点对应的当前状态为可用状态或不可用状态。步骤904可以简单表述为对于处于可用状态的第二节点,基于第一时长值,确定第二节点对应的当前状态为可用状态或不可用状态;其中,处于可用状态的第二节点可被分发业务任务。
综上,本发明的实施例中的方法步骤可以通过硬件的方式来实现,也可以由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(random access memory,RAM)、闪存、只读存储器(read-onlymemory,ROM)、可编程只读存储器(programmable rom,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)、寄存器、硬盘、移动硬盘、CD-ROM或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本申请实施例操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。其中,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者通过所述计算机可读存储介质进行传输。所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
以上结合具体实施例描述了本发明的基本原理,但是,需要指出的是,在本发明中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本发明的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本发明为必须采用上述具体的细节来实现。
还需要指出的是,在本发明的系统、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本发明的等效方案。
为了例示和描述的目的给出了以上描述。此外,此描述不意图将本发明的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。
可以理解的是,在本发明的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本发明的实施例的范围。

Claims (10)

1.一种心跳管理方法,其特征在于,应用于第一节点,所述第一节点与多个第二节点通信,所述多个第二节点向第一节点发送心跳信息,所述方法包括:
基于心跳接收时长的初始时长值和接收所述第二节点发送的心跳信息的时刻,确定所述第二节点对应的当前状态为可用状态或不可用状态;
基于所述多个第二节点各自对应的当前状态,确定所述多个第二节点的至少一部分与所述第一节点之间出现通信延迟;
增大所述初始时长值,确定第一时长值;
对于处于可用状态的第二节点,基于所述第一时长值和接收所述第二节点发送的心跳信息的时刻,确定所述第二节点对应的当前状态为可用状态或不可用状态;其中,处于所述可用状态的第二节点可被分发业务任务,第一节点连续两次接收处于可用状态的第二节点发送的心跳信息的时刻之间的时长小于等于第一时长值。
2.根据权利要求1所示的方法,其特征在于,所述方法还包括:
对于处于不可用状态的第二节点,基于所述初始时长值和接收所述第二节点发送的心跳信息的时刻,在确定所述第二节点的心跳恢复正常时,将所述第二节点对应的当前状态从不可用状态更新为可用状态。
3.根据权利要求1所示的方法,其特征在于,所述基于所述多个第二节点各自对应的当前状态,确定所述多个第二节点的至少一部分与所述第一节点之间出现通信延迟,包括:
基于所述多个第二节点各自对应的当前状态,确定不可用的第二节点的数目;
基于所述不可用的第二节点的数目,确定所述多个第二节点的至少一部分与所述第一节点之间出现通信延迟。
4.根据权利要求3所示的方法,其特征在于,所述基于所述多个第二节点各自对应的当前状态,确定不可用的第二节点的数目,包括:
基于所述多个第二节点各自对应的当前状态和接收的所述多个第二节点中部分或全部发送的自检结果,确定不可用的第二节点的数目;其中,所述自检结果指示了所述第二节点进行自检后所得到的服务是否正常的结果。
5.根据权利要求4所示的方法,其特征在于,所述方法还包括:
在接收到所述第二节点的心跳信息后向所述第二节点发送心跳应答信息,以使所述第二节点在确定应答接收时长大于应答时长阈值时进行自检,确定所述自检结果并上报。
6.根据权利要求4所示的方法,其特征在于,所述方法还包括:
向处于所述不可用状态的第二节点发送自检命令,以使所述第二节点基于所述自检命令进行自检,确定所述自检结果并上报。
7.根据权利要求1所示的方法,其特征在于,所述方法还包括:
对于处于不可用状态的第二节点,基于所述初始时长值和接收所述第二节点发送的心跳信息的时刻,在确定所述第二节点的心跳恢复正常时,将所述第二节点对应的当前状态从不可用状态更新为可用状态。
8.根据权利要求1至7任一项所示的方法,其特征在于,所述增大所述初始时长值,确定第一时长值之后,所述方法还包括:
基于所述初始时长值和接收到所述多个第二节点各自发送的心跳信息的时刻,判断所述多个第二节点的至少一部分与所述第一节点之间的通信是否恢复正常;
在所述多个第二节点的至少一部分与所述第一节点之间的通信恢复正常时,将所述第一时长值替换为所述初始时长值。
9.根据权利要求8所示的方法,其特征在于,所述增大所述初始时长值,确定第一时长值之前,所述方法还包括:
基于所述多个第二节点各自对应的当前状态,确定延迟情况判定指标的第一指标值;
在基于所述第一时长值和接收所述第二节点发送的心跳信息的时刻,确定所述第二节点对应的当前状态之后,所述方法还包括:
在所述多个第二节点的至少一部分与所述第一节点之间的通信未恢复正常时,基于所述多个第二节点各自对应的当前状态,确定延迟情况判定指标的第二指标值;
基于所述第一指标值和所述第二指标值之间的比较结果,确定所述多个第二节点的至少一部分与所述第一节点之间的通信延迟的情况,所述情况包括不变、增加或缓解。
10.一种第一节点,其特征在于,所示第一节点与多个第二节点通信,包括处理器和存储器;其中,
所述存储器用于存储程序;
所示处理器用于执行所述存储器存储的程序,当所述存储器存储的程序被执行时,执行基于心跳接收时长的初始时长值,确定所述第二节点对应的当前状态为可用状态或不可用状态;基于所述多个第二节点各自对应的当前状态,确定所述多个第二节点的至少一部分与所述第一节点之间出现通信延迟;增大所述初始时长值,确定第一时长值;对于处于可用状态的第二节点,基于所述第一时长值,确定所述第二节点对应的当前状态为可用状态或不可用状态;其中,处于所述可用状态的第二节点可被分发业务任务。
CN202210980272.7A 2022-08-16 2022-08-16 心跳管理方法及节点 Active CN115333983B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210980272.7A CN115333983B (zh) 2022-08-16 2022-08-16 心跳管理方法及节点

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210980272.7A CN115333983B (zh) 2022-08-16 2022-08-16 心跳管理方法及节点

Publications (2)

Publication Number Publication Date
CN115333983A CN115333983A (zh) 2022-11-11
CN115333983B true CN115333983B (zh) 2023-10-10

Family

ID=83923114

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210980272.7A Active CN115333983B (zh) 2022-08-16 2022-08-16 心跳管理方法及节点

Country Status (1)

Country Link
CN (1) CN115333983B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117221377B (zh) * 2023-08-25 2024-05-24 重庆澳太通信科技有限公司 一种数据通信方法以及终端设备

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104918267A (zh) * 2014-03-12 2015-09-16 国家电网公司 一种无线传感器网络的心跳检测方法和装置
WO2017114397A1 (zh) * 2015-12-31 2017-07-06 华为技术有限公司 一种实现心跳机制的方法、装置及系统
WO2017157459A1 (en) * 2016-03-18 2017-09-21 Telefonaktiebolaget Lm Ericsson (Publ) Configuration management in a communication network
CN109088794A (zh) * 2018-08-20 2018-12-25 郑州云海信息技术有限公司 一种节点的故障监测方法和装置
CN109803024A (zh) * 2019-01-28 2019-05-24 北京中科晶上科技股份有限公司 一种用于集群节点网络的方法
CN112235151A (zh) * 2020-08-27 2021-01-15 北京计算机技术及应用研究所 一种基于时间序列预测的自适应心跳检测方法
CN113821414A (zh) * 2021-11-22 2021-12-21 成都新希望金融信息有限公司 一种服务器保护方法、装置、电子设备及存储介质
CN114448843A (zh) * 2021-12-23 2022-05-06 天翼云科技有限公司 一种自适应的心跳检测方法及装置、电子设备
WO2022105612A1 (zh) * 2020-11-19 2022-05-27 北京智芯微电子科技有限公司 检测心跳的通信方法、系统、设备及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8667126B2 (en) * 2010-12-03 2014-03-04 International Business Machines Corporation Dynamic rate heartbeating for inter-node status updating

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104918267A (zh) * 2014-03-12 2015-09-16 国家电网公司 一种无线传感器网络的心跳检测方法和装置
WO2017114397A1 (zh) * 2015-12-31 2017-07-06 华为技术有限公司 一种实现心跳机制的方法、装置及系统
CN106936662A (zh) * 2015-12-31 2017-07-07 杭州华为数字技术有限公司 一种实现心跳机制的方法、装置及系统
WO2017157459A1 (en) * 2016-03-18 2017-09-21 Telefonaktiebolaget Lm Ericsson (Publ) Configuration management in a communication network
CN109088794A (zh) * 2018-08-20 2018-12-25 郑州云海信息技术有限公司 一种节点的故障监测方法和装置
CN109803024A (zh) * 2019-01-28 2019-05-24 北京中科晶上科技股份有限公司 一种用于集群节点网络的方法
CN112235151A (zh) * 2020-08-27 2021-01-15 北京计算机技术及应用研究所 一种基于时间序列预测的自适应心跳检测方法
WO2022105612A1 (zh) * 2020-11-19 2022-05-27 北京智芯微电子科技有限公司 检测心跳的通信方法、系统、设备及存储介质
CN113821414A (zh) * 2021-11-22 2021-12-21 成都新希望金融信息有限公司 一种服务器保护方法、装置、电子设备及存储介质
CN114448843A (zh) * 2021-12-23 2022-05-06 天翼云科技有限公司 一种自适应的心跳检测方法及装置、电子设备

Also Published As

Publication number Publication date
CN115333983A (zh) 2022-11-11

Similar Documents

Publication Publication Date Title
CN111818159B (zh) 数据处理节点的管理方法、装置、设备及存储介质
US8782211B1 (en) Dynamically scheduling tasks to manage system load
RU2517373C2 (ru) Способ переключения основного/резервного контроллеров узла на основе сети доставки контента и соответствующая сеть доставки контента
CN109344014B (zh) 一种主备切换方法、装置及通信设备
CN112491700B (zh) 网络路径调整方法、系统、装置、电子设备及存储介质
WO2019128670A1 (zh) 用于在分布式系统中使管理能力自恢复的方法和装置
US7450568B2 (en) System and method for managing a VolP network
CN115333983B (zh) 心跳管理方法及节点
CN109560835B (zh) 电力通信多通道监测方法、装置、计算机设备和存储介质
CN113364618B (zh) 基于惩罚系数规则的电网监控系统主从设备防误切换方法
CN108600100B (zh) 成员端口选取方法和装置
US7127484B2 (en) Server decision method and device thereof
CN112948128A (zh) Target端的选择方法、系统及计算机可读介质
CN111371625A (zh) 一种双机热备的实现方法
CN112003721A (zh) 一种大数据平台管理节点高可用的实现方法及装置
KR20100020253A (ko) 차량 네트워크에서의 메시지 전송 상태 진단 장치
CN101645897A (zh) 一种实现竞争机制的方法及系统
EP3105890A1 (en) Methods and systems for providing failover and failback in a multi-network router
CN113765690B (zh) 集群切换方法、系统、装置、终端、服务器及存储介质
CN115208822B (zh) 一种报文转发方法、装置、设备及计算机可读存储介质
CN110213364B (zh) 快递柜监控方法、系统、存储介质和设备
CN115408199A (zh) 一种边缘计算节点的容灾处理方法及装置
CN111193760A (zh) 一种信息发送方法、装置及存储介质
US11956287B2 (en) Method and system for automated switchover timers tuning on network systems or next generation emergency systems
WO2022254662A1 (ja) 対象情報収集装置、方法およびプログラム

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant