CN115801626A - 大规模广域分布式集群成员失效检测方法及*** - Google Patents

大规模广域分布式集群成员失效检测方法及*** Download PDF

Info

Publication number
CN115801626A
CN115801626A CN202310079050.2A CN202310079050A CN115801626A CN 115801626 A CN115801626 A CN 115801626A CN 202310079050 A CN202310079050 A CN 202310079050A CN 115801626 A CN115801626 A CN 115801626A
Authority
CN
China
Prior art keywords
detection
members
failure
area
heartbeat
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.)
Granted
Application number
CN202310079050.2A
Other languages
English (en)
Other versions
CN115801626B (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.)
South China Normal University
Original Assignee
South China Normal University
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 South China Normal University filed Critical South China Normal University
Priority to CN202310079050.2A priority Critical patent/CN115801626B/zh
Publication of CN115801626A publication Critical patent/CN115801626A/zh
Application granted granted Critical
Publication of CN115801626B publication Critical patent/CN115801626B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/70Reducing energy consumption in communication networks in wireless communication networks

Landscapes

  • Debugging And Monitoring (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种大规模广域分布式集群成员失效检测方法及***,首先根据网络通信延迟将集群划分为若干个检测区域,保证各个检测区域内部的成员之间为低延时通信,检测区域内的成员周期性地检测该成员所属检测区域的其他成员的存活状态,使得对每个检测区域内的成员进行失效检测时,能够快速、准确。然后在每个检测区域选定领导者来记录各检测区域内所有成员的存活状态,并定期与其他检测区域的领导者同步所有集群成员的存活状态,保证集群成员存活状态的完备性。与现有技术相比,适用于大规模广域分布式集群的成员失效检测,检测结果准确,检测效率高。

Description

大规模广域分布式集群成员失效检测方法及***
技术领域
本发明涉及计算机网络与分布式***技术领域,尤其涉及的是一种大规模广域分布式集群成员失效检测方法及***。
背景技术
分布式集群是实现高可用、高性能服务的一种主要方式,在云计算、大数据和人工智能领域尤其常见。分布式集群通常是由TCP/IP协议网络连接的多个计算节点组成,其成员来源多样,包括公有云、私有云、自建机房或者数据中心等。由于分布式集群存在硬件故障、软件缺陷、配置错误或者人为操作失误等因素,不可避免地会出现部分成员的意外失效。分布式集群管理必须及时检出意外失效的成员,重新调度因为该成员意外失效而未完成的计算任务,保证集群正常工作。
通常采用心跳机制对集群成员是否失效进行检测,即定期向被检测成员发送一个心跳信号,如果能在规定时间期限内收到该成员的响应,则被检测成员视为工作正常,否则判断为意外失效。
失效检测方法通常分为集中式和完全分布式(点对点)两类,集中式的特点是集群中只包含一个集中的检测组件,它定期向每个成员发送心跳信号;后者的特点是每个成员都定期向其他成员发送心跳信号。
然而在广域分布式集群中,并非所有成员之间都是低延迟高速网络连接,存在部分延迟相对较高的广域网连接。广域分布式集群极有可能出现网络包延误、乱序、重复或者丢失的情况,甚至存在网络分区,即整个集群分成互不连通的两个独立分区,导致很可能因为没有及时收到心跳响应而误判被检成员已经失效,造成集群资源的浪费。其次,如果分布式集群规模较大,包含上万甚至几十万成员,它存在成员意外失效的可能更高,所需的心跳通信量非常大。因此,对于大规模广域分布式集群,现有的失效检测方法的检测结果不准确、效率较低。
发明内容
本发明的主要目的在于提供一种大规模广域分布式集群成员失效检测方法、***、智能终端及计算机可读存储介质,旨在解决现有技术中的失效检测方法应用在大规模广域分布式集群上时检测结果不准确、效率较低的问题。
为了实现上述目的,本发明第一方面提供一种大规模广域分布式集群成员失效检测方法,包括:
检测分布式集群各成员之间的网络通信延迟,根据网络通信延迟将分布式集群划分为若干个检测区域;
基于设定规则,在每个检测区域选定一个成员作为领导者,所述领导者用于记录该领导者所属检测区域的所有成员的存活状态;
每个检测区域的每一个成员周期性地检测该成员所属检测区域的其他成员的存活状态,并将检测结果传输至该成员所属检测区域的领导者;
所有检测区域的领导者定期同步集群成员的存活状态,获得集群成员的失效检测结果。
可选的,所述每个检测区域的每一个成员周期性检测该成员所属检测区域的其他成员的存活状态,包括:
获取所述成员对应的其他成员列表;
对所述其他成员列表中的每个成员依次进行心跳检测;
当对所述其他成员列表中所有成员均完成心跳检测时,对所述其他成员列表进行随机重排序;
对更新后的其他成员列表进行下一周期的心跳检测。
可选的,所述对所述其他成员列表中的每个成员依次进行心跳检测,包括:
当在网络包往返最坏情况耗时内收到所述其他成员列表中被检测成员的心跳响应包时,则设定所述被检测成员的存活状态为有效;
当检测周期结束仍未收到所述被检测成员的心跳响应包时,则发送协助检测心跳检测包至协助失效检测群组以对所述被检测成员进行心跳检测,所述协助失效检测群组由所述其他成员列表中的成员组成;
当在网络包往返最坏情况耗时内还未收到所述协助失效检测群组的心跳响应包时,设定所述被检测成员的存活状态为失效;否则,设定所述被检测成员的存活状态为有效。
可选的,根据误报概率、成员失效概率、所属检测区域的网络丢包概率确定协助失效检测群组的大小,具体表达式为:
Figure SMS_1
Figure SMS_2
Figure SMS_3
其中,
Figure SMS_4
为误报概率,
Figure SMS_5
为成员失效概率,
Figure SMS_6
为所属检测区域的网络丢包概率。
可选的,根据允许检测过程最大耗时的期望值、成员失效概率确定检测周期的时长,具体表达式为:
Figure SMS_7
Figure SMS_8
,其中,
Figure SMS_9
为成员失效概率,
Figure SMS_10
为允许检测过程最大耗时的期望值。
可选的,所述所有检测区域的领导者定期同步集群成员的存活状态,包括:
从所有的领导者中随机选取预设数量的领导者;
基于谣传路由协议,在已选取的领导者之间同步集群成员的存活状态。
本发明第二方面提供一种大规模广域分布式集群成员失效检测***,其中,上述***包括:
若干个检测区域,每个检测区域设有一个领导者和若干成员,每个检测区域内为低延时通信网络;
所述领导者用于管理领导者所属检测区域的成员状态,定期与其他检测区域的领导者同步集群成员状态;
所述成员上设有失效检测组件,所述失效检测组件用于周期性地检测其他成员的存活状态,响应其他成员的心跳检测请求以及协助其他成员检测第三方成员的存活状态;
所述成员上还设有成员队列管理组件,所述成员队列管理组件用于监听领导者广播的成员变化消息并更新所述成员上的其他成员列表。
可选的,所述成员上还设有协助失效检测群组,所述协助失效检测群组用于在所述成员检测其他成员的存活状态时,若超时未获得心跳响应包,所述成员发送协助检测心跳检测包至所述协助失效检测群组以协助对所述其他成员进行心跳检测。
本发明第三方面提供一种智能终端,上述智能终端包括存储器、处理器以及存储在上述存储器上并可在上述处理器上运行的大规模广域分布式集群成员失效检测程序,上述大规模广域分布式集群成员失效检测程序被上述处理器执行时实现任意一项上述大规模广域分布式集群成员失效检测方法的步骤。
本发明第四方面提供一种计算机可读存储介质,上述计算机可读存储介质上存储有大规模广域分布式集群成员失效检测程序,上述大规模广域分布式集群成员失效检测程序被处理器执行时实现任意一项上述大规模广域分布式集群成员失效检测方法的步骤。
由上可见,本发明首先根据网络通信延迟将集群划分为若干个检测区域,保证各个检测区域内部的成员之间为低延时通信,检测区域内的成员周期性地检测该成员所属检测区域的其他成员的存活状态,使得对每个检测区域内的成员进行失效检测时,能够快速、准确。然后在每个检测区域选定领导者来记录各检测区域内所有成员的存活状态,并定期与其他检测区域的领导者同步所有集群成员的存活状态,保证集群成员存活状态的完备性。与现有技术相比,适用于大规模广域分布式集群的成员失效检测,检测结果准确,检测效率高。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例提供的大规模广域分布式集群成员失效检测方法流程示意图;
图2为图1实施例的大规模广域分布式集群的检测区域划分示意图;
图3为图1实施例的步骤S300的具体流程示意图;
图4为图1实施例的轮转随机化失效检测方法示意图;
图5为图3实施例的步骤S320的具体流程示意图;
图6为本发明实施例提供的大规模广域分布式集群成员失效检测***的结构示意图;
图7为图6实施例的队列管理组件的功能框图;
图8是本发明实施例提供的一种智能终端的内部结构原理框图。
实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定***结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况下,省略对众所周知的***、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当…时”或“一旦”或“响应于确定”或“响应于检测到”。类似的,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述的条件或事件]”或“响应于检测到[所描述条件或事件]”。
下面结合本发明实施例的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其它不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施例的限制。
在广域分布式集群中,极有可能出现网络包延误、乱序、重复或者丢失的情况,甚至整个集群分成互不连通的两个独立分区;并且,分布式集群规模较大,所需的心跳通信量非常大。因此广域分布式集群的失效检测方法必须同时具备快速、准确和完备的特点。而现有的集中式失效检测方法存在性能瓶颈和单点失效的问题,完全分布式失效检测方法存在收敛速度慢,准确性低的问题,因此,现有的失效检测方法应用在广域分布式集群时,存在检测结果不准确、效率较低的问题。
针对上述技术问题,本发明提供了一种用于大规模广域分布式集群的成员失效检测方法,扩展性强、检测过程收敛速度快、结果误报或失效漏检比例低。
示例性方法
本发明实施例提供一种用于大规模广域分布式集群的成员失效检测方法,部署于电脑、服务器等电子设备上。具体的,如图1所示,上述方法包括如下步骤:
步骤S100:检测分布式集群各成员之间的网络通信延迟,根据网络通信延迟将分布式集群划分为若干个检测区域;
具体地,对分布式集群各成员之间的网络通信进行测试,根据测试获得的网络通信延迟数据按照设定的规则将分布式集群划分为若干个检测区域。如将互相之间网络通信延迟小于10毫秒的成员聚在一起,划分为一个检测区域。
参考图2所示的大规模广域分布式集群的区域划分,本实施例根据属于同一个检测区域的不同成员彼此之间的网络通信延迟不能超过10毫秒的设定规则,将分布式集群划分为两个检测区域,每个检测区域内的成员之间都为低延时通信,不同检测区域之间为高延时通信(当然,也可以为低延时通信)。
位于同一个数据中心或者地理位置相邻数据中心的计算节点之间的网络连接一般能够满足低延时通信的要求,通常可以将这些计算节点划为同一个检测区域。
步骤S200:基于设定规则,在每个检测区域选定一个成员作为领导者,所述领导者用于记录该领导者所属检测区域的所有成员的存活状态;
具体地,设定规则为对领导者的性能要求,如CPU至少包含2核、内存容量至少有8GB、磁盘容量超过100GB等。从每一个检测区域中符合性能要求的成员中选出一个高性能的节点作为领导者。领导者默认为各个检测区域的第一个成员。领导者能够记录本检测区域所有成员的存活状态,存活状态分为有效和失效。导致失效的原因可能有:主动退出、意外等。领导者还对所属检测区域的成员进行管理,当有成员加入或者离开本区域时,都要通过领导者完成,并通过领导者通知领导者所在检测区域内的其他成员以更新成员列表。
优选如本实施例所示,领导者的CPU在8核以上,内存容量高于32GB,硬盘为容量高于100GB的固态硬盘。
步骤S300:每个检测区域的每一个成员周期性地检测该成员所属检测区域的其他成员的存活状态,并将检测结果传输至该成员所属检测区域的领导者;
具体地,属于同一个检测区域的所有成员周期性地对所属检测区域的其他成员进行心跳检测,判断本检测区域是否存在失效的成员,并将失效的成员发送至本检测区域的领导者,以实时记录本检测区域的成员的存活状态。
如图3所示,本实施例中采用轮转随机化检测方法周期性检测所属检测区域的其他成员的存活状态,具体步骤包括:
步骤S310:获取成员对应的其他成员列表;
具体地,确定每个检测区域的领导者后以及新成员加入一个检测区域时,领导者会将本检测区域的成员列表发送至每个成员,每个成员收到该成员列表后将自己从中删除,就获得与每个成员相对应的其他成员列表,并将其他成员列表存储在成员节点上或保存在成员节点的内存中以随时获取。后期接收到领导者广播的成员变化消息时,将新成员添加到其他成员列表的随机位置或者从其他成员列表中删除失效的成员,以对其他成员列表进行更新。
步骤S320:对其他成员列表中的每个成员依次进行心跳检测;
步骤S330:当对其他成员列表中所有成员均完成心跳检测时,对其他成员列表进行随机重排序;
步骤S340:对更新后的其他成员列表进行下一周期的心跳检测。
具体地,属于同一个检测区域的每一个成员,按照该成员对应的其他成员列表中的成员顺序,依次对其他成员进行心跳检测。每次检测一个成员,耗时一个检测周期。每检测完一轮,随机重排其他成员列表中的成员位置,再从头开始进行下一轮的成员状态检测。
轮转随机化方法检测方法的前提条件是每一个成员都有稳定的本地时钟,也就是这一秒和下一秒的时长应该几乎不差。与现有技术不同的是,并没有要求存在全局时钟,即没有要求所有检测区域成员的时钟是同步的。
如图4所示,以区域1的成员1为例,第一轮时成员1 的其他成员列表是成员2,成员3, …, 成员m。成员1按照队列顺序每个检测周期心跳检测一个成员,当其他成员列表中所有的成员均检测完毕,完成一轮心跳检测。第一轮完成后,随机重排其他成员列表,变成成员6, 成员m, …, 成员3。成员1按照重新排列后的顺序每个检测周期心跳检测一个成员,完成下一轮心跳检测。如此往复循环进行成员检测。
步骤S400:所有检测区域的领导者定期同步集群成员的存活状态,获得集群成员的失效检测结果。
具体地,同一个集群中所有检测区域的领导者共同组成一个群组,每一个领导者每隔500毫秒从群组中随机选择4个其他领导者,向它们发送本周期内该领导者新收到的成员失效消息。使得每个领导者都保存集群所有成员存活状态的一份副本,并且基于谣传路由协议保证了多副本的一致性,这种多副本机制保证了集群管理服务的高可用性。其中,谣传周期(本实施例为500毫秒)、谣传节点个数(本实施例为4个)可以根据广域分布式集群的通信状况、节点个数作相应的设定,具体不做限制。通过随机选择4个领导者与当前领导者同步集群成员的存活状态,采用小范围同步集群成员的存活状态,而不是一个领导者与其余所有领导者同步集群成员的存活状态,不仅可以保证集群成员的失效检测结果的完备性和准确性,而且能够减少同步的通信量。
由上所述,本实施例首先根据网络通信延迟将集群划分为若干个检测区域,保证各个检测区域内部的成员之间为低延时通信,检测区域内的成员周期性地检测该成员所属检测区域的其他成员的存活状态,使得对每个检测区域内的成员进行失效检测时,能够快速、准确。然后在每个检测区域选定领导者来记录各检测区域内所有成员的存活状态,并定期与其他检测区域的领导者同步所有集群成员的存活状态,保证集群成员存活状态的完备性。因此,适用于大规模广域分布式集群的成员失效检测,扩展性强、检测过程收敛速度快、结果误报或失效漏检比例低。
如图5所示,在一些实施例中,对其他成员列表中的每个成员依次进行心跳检测,具体包括如下步骤:
步骤S321:当在网络包往返最坏情况耗时内收到其他成员列表中被检测成员的心跳响应包时,则设定被检测成员的存活状态为有效;
具体地,网络包往返最坏情况耗时根据检测区域的网络实际情况、经验和实验数据来确定。网络包往返最坏情况耗时比图4中的检测周期长。当在网络包往返最坏情况耗时内或者检测周期时长内收到被检测成员的心跳响应包时,则表明该被检测成员的存活状态为有效。
本实施例中,为了使得检测的效率更高,根据允许检测过程最大耗时的期望值、成员失效概率确定检测周期的时长,具体表达式为:
Figure SMS_13
Figure SMS_14
,其中,
Figure SMS_17
为成员失效概率;
Figure SMS_12
为允许检测过程最大耗时的期望值。允许检测过程最大耗时期望值可以依据经验或检测需求确定,也可以采用计算公式:
Figure SMS_15
来准确量化计算,其中
Figure SMS_18
表示的是成员
Figure SMS_19
从开始失效到它被检出的耗时的上限,
Figure SMS_11
代表本检测区域的所有成员,
Figure SMS_16
代表本检测区域的成员总数。
上述成员失效概率
Figure SMS_20
、网络包往返最坏情况耗时
Figure SMS_21
均可以根据检测需求、经验数据或者实验数据确定。
步骤S322:当检测周期结束仍未收到被检测成员的心跳响应包时,则发送协助检测心跳检测包至协助失效检测群组以对被检测成员进行心跳检测,所述协助失效检测群组由其他成员列表中的成员组成。
步骤S323:当在网络包往返最坏情况耗时内还未收到协助失效检测群组的心跳响应包时,设定被检测成员的存活状态为失效;否则,设定被检测成员的存活状态为有效。
具体地,如图4所示,成员1向被检测成员2发送心跳检测包后,等待一个检测周期,当检测周期结束仍未收到被检测成员2的心跳响应包时,为了保证检测的准确性,本实施例并没有直接判定被检测成员2失效,而是发送协助检测心跳检测包至协助失效检测群组,通过协助失效检测群组中的成员来对被检测成员2进行心跳检测,若在网络包往返最坏情况耗时内收到协助失效检测群组中的成员的心跳响应包时,则设定被检测成员2的存活状态为有效,否则才设定被检测成员2的存活状态为失效,并向领导者汇报。上述协助失效检测群组中的成员从成员1的其他成员列表中随机选取,如成员3、成员5、成员6等。
进一步地,根据误报概率、成员失效概率、检测区域的网络丢包概率确定协助失效检测群组的大小,具体表达式为:
Figure SMS_22
Figure SMS_23
Figure SMS_24
其中,
Figure SMS_25
为误报概率,
Figure SMS_26
为成员失效概率,
Figure SMS_27
为所属检测区域的网络丢包概率。误报概率
Figure SMS_28
、成员失效概率
Figure SMS_29
、检测区域网络丢包概率
Figure SMS_30
根据检测需求、经验数据或者实验数据确定。
由上所述,每个成员在检测一个目标成员是否失效时,如果没有及时收到心跳响应,将会通过协助失效检测群组的成员再次从不同的通信线路检测目标成员,仍然没有及时收到心跳响应时才会判定目标成员已经失效。从而确保目标成员失效状态判定的准确性。
示例性***
如图6所示,对应于上述大规模广域分布式集群成员失效检测方法,本发明实施例还提供一种大规模广域分布式集群成员失效检测***,上述大规模广域分布式集群成员失效检测***包括:
若干个检测区域,每个检测区域设有一个领导者和若干成员,每个检测区域内为低延时通信网络;
所述领导者用于管理领导者所属检测区域的成员状态,定期与其他检测区域的领导者同步集群成员状态;
所述成员上设有失效检测组件,所述失效检测组件用于周期性地检测其他成员的存活状态,响应其他成员的心跳检测请求以及协助其他成员检测第三方成员的存活状态;
所述成员上还设有成员队列管理组件,所述成员队列管理组件用于监听领导者广播的成员变化消息并更新所述成员上的其他成员列表。
可选的,所述成员上还设有协助失效检测群组,所述协助失效检测群组用于在所述成员检测其他成员的存活状态时,若超时未获得心跳响应包,所述成员发送协助检测心跳检测包至所述协助失效检测群组以协助对所述其他成员进行心跳检测。
具体地,领导者负责管理本检测区域的成员状态,定期与其他领导者同步集群成员状态。当本检测区域有新成员加入、已有成员主动离开时,分别修改对应的成员状态为有效或者失效,并向本检测区域其他成员广播成员新增和离开消息;当接受到本检测区域其他成员报告的被检成员失效消息,标记被检成员的状态为失效,并向本区域其他成员广播该成员已经失效的消息。领导者使用了一个缓冲队列记录所有上述类型的成员状态变化,成员状态同步时,定期向其他检测区域的领导者发送缓冲队列记录的所有成员状态变化消息,清空缓冲队列。
每个检测区域的每一个成员上均设有失效检测组件和成员队列管理组件。失效检测组件定期检测其他成员是否失效,向领导者汇报失效的成员;响应其他成员对自己的失效检测请求,并返回检测结果;帮助其他成员检测第三方成员是否失效,并返回检测结果。以成员
Figure SMS_31
为例,其失效检测组件处理检测消息的逻辑步骤:如果检测目标是
Figure SMS_32
自己,则直接返回一个确认消息;如果检测目标是另一个成员
Figure SMS_33
,则先检测
Figure SMS_34
,收到
Figure SMS_35
的确认后,再通知检测的发起者,确认
Figure SMS_36
正常工作。成员队列管理组件负责监听领导者广播的成员变化消息并做相应处理:将新成员添加到成员队列的随机位置、从成员队列中删除主动离开或者意外失效的成员以维护每个成员对应的其他成员列表。
大规模广域分布式集群成员失效检测***具体工作过程如下:
假定
Figure SMS_38
代表本检测区域的所有成员,
Figure SMS_40
代表本检测区域的成员总数;
Figure SMS_43
代表一个成员,其中
Figure SMS_39
Figure SMS_41
代表本检测区域的领导者;
Figure SMS_44
代表成员
Figure SMS_46
的其他成员列表。其他成员列表的初始值是在
Figure SMS_37
加入本检测区域时,由领导者
Figure SMS_42
返回给
Figure SMS_45
的。对于本检测区域每一个成员
Figure SMS_47
,执行轮转随机化失效检测。
首先对变量初始化:设定检测周期序号
Figure SMS_48
;计算检测周期时长
Figure SMS_49
,具体计算公式为:
Figure SMS_50
Figure SMS_51
;其中,
Figure SMS_52
为允许检测过程最大耗时的期望值,
Figure SMS_53
为成员失效概率;计算协助失效检测群组的大小为
Figure SMS_54
,具体计算公式为:
Figure SMS_55
Figure SMS_56
Figure SMS_57
其中,
Figure SMS_58
为误报概率,
Figure SMS_59
为成员失效概率,
Figure SMS_60
为本检测区域网络丢包概率。
在当前成员
Figure SMS_61
上启动一个长时间运行的服务进程,负责处理本检测区域领导者广播的本检测区域成员变化消息。具体地,如图7所示,有新成员加入时,将新成员加入到其他成员列表
Figure SMS_62
的随机位置;已有成员由于主动离开、意外失效等原因导致失效时,从成员队列
Figure SMS_63
中删除该成员,不再作为失效检测目标。
在当前成员
Figure SMS_64
上启动另一个长时间运行的服务进程,负责响应来自其他成员对当前成员
Figure SMS_65
的心跳检测包以及请
Figure SMS_66
协助检测第三方成员的心跳检测包。心跳检测包及心跳响应包的规范如:
当前成员
Figure SMS_67
收到消息
Figure SMS_68
:这表明成员
Figure SMS_69
正在检测当前成员
Figure SMS_70
是否失效,因此服务进程返回一个确认消息
Figure SMS_71
,代表当前成员
Figure SMS_72
工作正常;
当前成员
Figure SMS_73
收到消息
Figure SMS_74
:这表明成员
Figure SMS_75
请另外一个成员
Figure SMS_76
帮忙检测当前成员
Figure SMS_77
是否已经失效,因此服务进程返回一个确认消息
Figure SMS_78
,代表当前成员
Figure SMS_79
工作正常;
当前成员
Figure SMS_83
收到消息
Figure SMS_85
:这表明成员
Figure SMS_88
请求当前成员
Figure SMS_82
帮忙检测另外一个成员
Figure SMS_84
是否失效。服务进程的处理逻辑是向成员
Figure SMS_87
发送消息
Figure SMS_90
,等待
Figure SMS_80
返回的确认消息,最多等待网络包往返最坏情况耗时
Figure SMS_86
。如果服务进程在时限内收到
Figure SMS_89
的确认消息,则向
Figure SMS_91
返回确认消息
Figure SMS_81
然后检测周期序号
Figure SMS_102
,选择其他成员列表
Figure SMS_93
的当前成员
Figure SMS_98
(变量
Figure SMS_105
代表其他成员列表
Figure SMS_109
当前元素的索引号,取值范围为
Figure SMS_108
,初始值为1)作为检测目标,向它发送检测请求
Figure SMS_111
并等待被检测成员
Figure SMS_101
返回的确认消息,最多等待
Figure SMS_106
。如果
Figure SMS_92
在时限内收到
Figure SMS_97
的确认消息
Figure SMS_95
,则认定
Figure SMS_96
工作正常,继续检测下一个成员直到一轮检测结束;如果超时也没收到
Figure SMS_100
的确认消息,则进行协助检测处理:首先从
Figure SMS_104
中随机选取
Figure SMS_99
位成员,分别发送协助检测的请求
Figure SMS_103
,等待返回的确认消息,直到一轮检测周期结束
Figure SMS_107
都没有收到任何协助检测的成员返回的确认消息
Figure SMS_110
,则认定
Figure SMS_94
已经失效,向本检测区域的领导者汇报。
每次检测结束时,检查
Figure SMS_112
是否等于成员队列的长度
Figure SMS_113
。如果是,则随机重排队列
Figure SMS_114
的成员顺序,重新赋值
Figure SMS_115
,进行下一轮检测;否则,赋值
Figure SMS_116
具体的,本实施例中,上述大规模广域分布式集群成员失效检测***的具体功能还可以参照上述大规模广域分布式集群成员失效检测方法中的对应描述,在此不再赘述。
基于上述实施例,本发明还提供了一种智能终端,其原理框图可以如图8所示。上述智能终端包括通过***总线连接的处理器、存储器、网络接口以及显示屏。其中,该智能终端的处理器用于提供计算和控制能力。该智能终端的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***和大规模广域分布式集群成员失效检测程序。该内存储器为非易失性存储介质中的操作***和大规模广域分布式集群成员失效检测程序的运行提供环境。该智能终端的网络接口用于与外部的终端通过网络连接通信。该大规模广域分布式集群成员失效检测程序被处理器执行时实现上述任意一种大规模广域分布式集群成员失效检测方法的步骤。该智能终端的显示屏可以是液晶显示屏或者电子墨水显示屏。
本领域技术人员可以理解,图8中示出的原理框图,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的智能终端的限定,具体的智能终端可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种智能终端,上述智能终端包括存储器、处理器以及存储在上述存储器上并可在上述处理器上运行的大规模广域分布式集群成员失效检测程序,上述大规模广域分布式集群成员失效检测程序被上述处理器执行时进行以下操作指令:
检测分布式集群各成员之间的网络通信延迟,根据网络通信延迟将分布式集群划分为若干个检测区域;
基于设定规则,在每个检测区域选定一个成员作为领导者,所述领导者用于记录该领导者所属检测区域的所有成员的存活状态;
每个检测区域的每一个成员周期性地检测该成员所属检测区域的其他成员的存活状态,并将检测结果传输至该成员所属检测区域的领导者;
所有检测区域的领导者定期同步集群成员的存活状态,获得集群成员的失效检测结果。
可选的,所述每个检测区域的每一个成员周期性检测该成员所属检测区域的其他成员的存活状态,包括:
获取所述成员对应的其他成员列表;
对所述其他成员列表中的每个成员依次进行心跳检测;
当对所述其他成员列表中所有成员均完成心跳检测时,对所述其他成员列表进行随机重排序;
对更新后的其他成员列表进行下一周期的心跳检测。
可选的,所述对所述其他成员列表中的每个成员依次进行心跳检测,包括:
当在网络包往返最坏情况耗时内收到所述其他成员列表中被检测成员的心跳响应包时,则设定所述被检测成员的存活状态为有效;
当检测周期结束仍未收到所述被检测成员的心跳响应包时,则发送协助检测心跳检测包至协助失效检测群组以对所述被检测成员进行心跳检测,所述协助失效检测群组由所述其他成员列表中的成员组成;
当在网络包往返最坏情况耗时内还未收到所述协助失效检测群组的心跳响应包时,设定所述被检测成员的存活状态为失效;否则,设定所述被检测成员的存活状态为有效。
可选的,根据误报概率、成员失效概率、所属检测区域的网络丢包概率确定协助失效检测群组的大小,具体表达式为:
Figure SMS_117
Figure SMS_118
Figure SMS_119
其中,
Figure SMS_120
为误报概率,
Figure SMS_121
为成员失效概率,
Figure SMS_122
为所属检测区域的网络丢包概率。
可选的,根据允许检测过程最大耗时的期望值、成员失效概率确定检测周期的时长,具体表达式为:
Figure SMS_123
Figure SMS_124
,其中,
Figure SMS_125
为成员失效概率,
Figure SMS_126
为允许检测过程最大耗时的期望值。
可选的,所述所有检测区域的领导者定期同步集群成员的存活状态,包括:
从所有的领导者中随机选取预设数量的领导者;
基于谣传路由协议,在已选取的领导者之间同步集群成员的存活状态。
本发明实施例还提供一种计算机可读存储介质,上述计算机可读存储介质上存储有大规模广域分布式集群成员失效检测程序,上述大规模广域分布式集群成员失效检测程序被处理器执行时实现本发明实施例提供的任意一种大规模广域分布式集群成员失效检测方法的步骤。
应理解,上述实施例中各步骤的序号大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将上述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。上述***中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各实例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟是以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,上述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以由另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。
上述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,上述计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,上述计算机程序包括计算机程序代码,上述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。上述计算机可读介质可以包括:能够携带上述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,上述计算机可读存储介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解;其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不是相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

Claims (10)

1.大规模广域分布式集群成员失效检测方法,其特征在于,包括:
检测分布式集群各成员之间的网络通信延迟,根据网络通信延迟将分布式集群划分为若干个检测区域;
基于设定规则,在每个检测区域选定一个成员作为领导者,所述领导者用于记录该领导者所属检测区域的所有成员的存活状态;
每个检测区域的每一个成员周期性地检测该成员所属检测区域的其他成员的存活状态,并将检测结果传输至该成员所属检测区域的领导者;
所有检测区域的领导者定期同步集群成员的存活状态,获得集群成员的失效检测结果。
2.如权利要求1所述的大规模广域分布式集群成员失效检测方法,其特征在于,所述每个检测区域的每一个成员周期性检测该成员所属检测区域的其他成员的存活状态,包括:
获取所述成员对应的其他成员列表;
对所述其他成员列表中的每个成员依次进行心跳检测;
当对所述其他成员列表中所有成员均完成心跳检测时,对所述其他成员列表进行随机重排序;
对更新后的其他成员列表进行下一周期的心跳检测。
3.如权利要求2所述的大规模广域分布式集群成员失效检测方法,其特征在于,所述对所述其他成员列表中的每个成员依次进行心跳检测,包括:
当在网络包往返最坏情况耗时内收到所述其他成员列表中被检测成员的心跳响应包时,则设定所述被检测成员的存活状态为有效;
当检测周期结束仍未收到所述被检测成员的心跳响应包时,则发送协助检测心跳检测包至协助失效检测群组以对所述被检测成员进行心跳检测,所述协助失效检测群组由所述其他成员列表中的成员组成;
当在网络包往返最坏情况耗时内还未收到所述协助失效检测群组的心跳响应包时,设定所述被检测成员的存活状态为失效;否则,设定所述被检测成员的存活状态为有效。
4.如权利要求3所述的大规模广域分布式集群成员失效检测方法,其特征在于,根据误报概率、成员失效概率、所属检测区域的网络丢包概率确定协助失效检测群组的大小,具体表达式为:
Figure QLYQS_1
Figure QLYQS_2
Figure QLYQS_3
其中,
Figure QLYQS_4
为误报概率,
Figure QLYQS_5
为成员失效概率,
Figure QLYQS_6
为所属检测区域的网络丢包概率。
5.如权利要求3所述的大规模广域分布式集群成员失效检测方法,其特征在于,根据允许检测过程最大耗时的期望值、成员失效概率确定检测周期的时长,具体表达式为:
Figure QLYQS_7
Figure QLYQS_8
其中,
Figure QLYQS_9
为成员失效概率,
Figure QLYQS_10
为允许检测过程最大耗时的期望值。
6.如权利要求1所述的大规模广域分布式集群成员失效检测方法,其特征在于,所述所有检测区域的领导者定期同步集群成员的存活状态,包括:
从所有的领导者中随机选取预设数量的领导者;
基于谣传路由协议,在已选取的领导者之间同步集群成员的存活状态。
7.大规模广域分布式集群成员失效检测***,其特征在于,所述***包括:
若干个检测区域,每个检测区域设有一个领导者和若干成员,每个检测区域内为低延时通信网络;
所述领导者用于管理领导者所属检测区域的成员状态,定期与其他检测区域的领导者同步集群成员状态;
所述成员上设有失效检测组件,所述失效检测组件用于周期性地检测其他成员的存活状态,响应其他成员的心跳检测请求以及协助其他成员检测第三方成员的存活状态;
所述成员上还设有成员队列管理组件,所述成员队列管理组件用于监听领导者广播的成员变化消息并更新所述成员上的其他成员列表。
8.如权利要求7所述的大规模广域分布式集群成员失效检测***,其特征在于,所述成员上还设有协助失效检测群组,所述协助失效检测群组用于在所述成员检测其他成员的存活状态时,若超时未获得心跳响应包,所述成员发送协助检测心跳检测包至所述协助失效检测群组以协助对所述其他成员进行心跳检测。
9.智能终端,其特征在于,所述智能终端包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的大规模广域分布式集群成员失效检测程序,所述大规模广域分布式集群成员失效检测程序被所述处理器执行时实现如权利要求1-6任意一项所述大规模广域分布式集群成员失效检测方法的步骤。
10.计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有大规模广域分布式集群成员失效检测程序,所述大规模广域分布式集群成员失效检测程序被处理器执行时实现如权利要求1-6任意一项所述大规模广域分布式集群成员失效检测方法的步骤。
CN202310079050.2A 2023-02-08 2023-02-08 大规模广域分布式集群成员失效检测方法及*** Active CN115801626B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310079050.2A CN115801626B (zh) 2023-02-08 2023-02-08 大规模广域分布式集群成员失效检测方法及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310079050.2A CN115801626B (zh) 2023-02-08 2023-02-08 大规模广域分布式集群成员失效检测方法及***

Publications (2)

Publication Number Publication Date
CN115801626A true CN115801626A (zh) 2023-03-14
CN115801626B CN115801626B (zh) 2023-05-09

Family

ID=85430422

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310079050.2A Active CN115801626B (zh) 2023-02-08 2023-02-08 大规模广域分布式集群成员失效检测方法及***

Country Status (1)

Country Link
CN (1) CN115801626B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060268742A1 (en) * 2005-05-31 2006-11-30 Lingkun Chu Topology-centric resource management for large scale service clusters
CN102769673A (zh) * 2012-07-25 2012-11-07 楚云汉智武汉网络存储***有限公司 一种适应于大规模存储集群的失效检测方法
CN110445682A (zh) * 2019-08-05 2019-11-12 深圳市大拿科技有限公司 监测联网节点存活状态的方法、服务器、设备及***
CN112445809A (zh) * 2020-11-25 2021-03-05 浪潮云信息技术股份公司 一种分布式数据库节点存活状态检测模块及方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060268742A1 (en) * 2005-05-31 2006-11-30 Lingkun Chu Topology-centric resource management for large scale service clusters
CN102769673A (zh) * 2012-07-25 2012-11-07 楚云汉智武汉网络存储***有限公司 一种适应于大规模存储集群的失效检测方法
CN110445682A (zh) * 2019-08-05 2019-11-12 深圳市大拿科技有限公司 监测联网节点存活状态的方法、服务器、设备及***
CN112445809A (zh) * 2020-11-25 2021-03-05 浪潮云信息技术股份公司 一种分布式数据库节点存活状态检测模块及方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
曹渠江;武彦林;: "分布式***中失效检测方法的研究与分析" *
梁毅;邸瑞华;王磊;詹剑锋;: "面向机群检查点的组管理协议" *

Also Published As

Publication number Publication date
CN115801626B (zh) 2023-05-09

Similar Documents

Publication Publication Date Title
CN108616566B (zh) raft分布式***选主方法、相关设备及***
CN107295080B (zh) 应用于分布式服务器集群的数据存储方法和服务器
CN113014634B (zh) 集群选举处理方法、装置、设备及存储介质
US8756343B2 (en) Data management method and node apparatus
CN107453929B (zh) 集群***自构建方法、装置及集群***
CN109218349A (zh) 一种管理服务器集群的方法及装置
CN109213792A (zh) 数据处理的方法、服务端、客户端、装置及可读存储介质
WO2021223464A1 (zh) 一种分布式仿真的时间一致性同步方法
CN112333249A (zh) 一种业务服务***及方法
CN113760468A (zh) 分布式选举方法、装置、***和介质
CN114265753A (zh) 消息队列的管理方法、管理***和电子设备
CN110324262A (zh) 一种资源抢占的方法及装置
CN109560903A (zh) 一种完全容灾的车载指挥通信***
JP2010092395A (ja) サーバ管理システム,サーバ管理方法及びサーバ管理用プログラム
CN105892957B (zh) 一种基于动态分片的分布式事务执行方法
CN111835809B (zh) 工单消息分配方法、装置、服务器及存储介质
CN115801626A (zh) 大规模广域分布式集群成员失效检测方法及***
CN114598593B (zh) 消息处理方法、***、计算设备及计算机存储介质
CN110752972A (zh) 一种网卡状态监控方法、装置、设备及介质
CN112256461B (zh) 一种基于多云环境的分布式消息***及管理方法
TWI767427B (zh) 監控伺服器及其設備資源監控方法
JP2004260244A (ja) 情報通信方法、プログラム及びシステム
CN112541038A (zh) 时序数据管理方法、***、计算设备及存储介质
CN108683533B (zh) 配置更新方法、配置更新的响应方法及服务器、***
Lu et al. A fault tolerant election-based deadlock detection algorithm in distributed systems

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