分布式系统仲裁主节点的方法及设备与流程

文档序号:14574546发布日期:2018-06-02 01:11阅读:497来源:国知局
分布式系统仲裁主节点的方法及设备与流程

本发明涉及网络技术领域,特别是涉及一种分布式系统仲裁主节点的方法及设备。



背景技术:

随着互联网、云计算、大数据技术的发展和普及,分布式系统是解决应用系统数据急剧增加的重要技术手段。业务系统部署到多个数据中心,需要在分布式系统中仲裁出主节点作为管理者进行统一协调,保证数据的一致性。

在N个节点的分布式系统中,通过现有技术仲裁出主节点,需要每个节点向其它节点发起N-1次仲裁主节点请求,才能判断是否通过仲裁。主节点任期内需要向N-1个节点发送心跳信息;当主节点发生异常时,又需要每个节点向其它节点发起N-1次仲裁主节点请求。

随着节点个数N的增加,需要仲裁交互的次数在增加,主节点发送心跳信息的个数也在增加,从而使分布式系统仲裁范围大、仲裁效率低、网络压力大、主节点任期内发送心跳信息压力大。



技术实现要素:

为了克服上述缺陷,本发明要解决的技术问题是提供一种分布式系统仲裁主节点的方法及设备,用以至少解决现有技术中分布式系统主节点的仲裁效率低的问题。

为解决上述技术问题,本发明中的一种分布式系统仲裁主节点的方法,包括:

在预先划分的每个组的节点中进行仲裁,得到多个组的组内主节点;

在多个组的组内主节点中进行仲裁,得到所述分布式系统的系统主节点。

为解决上述技术问题,本发明中的一种分布式系统仲裁主节点的设备,包括存储器和处理器;所述存储器存储有分布式系统仲裁主节点的计算机程序,所述处理器执行所述计算机程序,以实现如上所述方法的步骤。

本发明有益效果如下:

本发明通对分布式系统进行分组,首先在每个组中进行仲裁,仲裁出各个组的主节点,再对各个组的主节点进行仲裁,仲裁出整个分布式系统的主节点,有效提高了分布式系统主节点的仲裁效率。

附图说明

图1是本发明实施例中一种分布式系统仲裁主节点的方法流程图;

图2是本发明实施例中分布式系统的节点结构示意图;

图3是本发明实施例中分组示意图;

图4是本发明实施例中仲裁流程图;

图5是本发明实施例中主节点异常处理流程图;

图6是本发明实施例中一种分布式系统仲裁主节点的设备的结构示意图。

具体实施方式

为了解决现有技术的问题,本发明提供了一种分布式系统仲裁主节点的方法及设备,以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不限定本发明。

实施例一

本发明实施例提供一种分布式系统仲裁主节点的方法,如图1所示,所述方法包括:

S101,在预先划分的每个组的节点中进行仲裁,得到多个组的组内主节点;

S102,在多个组的组内主节点中进行仲裁,得到所述分布式系统的系统主节点。

本发明实施例中组内主节点表示组内的主节点,系统主节点表示分布式系统的主节点。

本发明实施例通对分布式系统进行分组,首先在每个组中进行仲裁,仲裁出各个组的主节点,再对各个组的主节点进行仲裁,仲裁出整个分布式系统的主节点,有效提高了分布式系统主节点的仲裁效率。

通过本发明实施例,在分布式系统中,当组内主节点发生异常时,首先在主节点所在的组内进行仲裁,重新仲裁出组的主节点,而不需要所有组都进行仲裁主节点,只需要异常的组发起仲裁请求,从而有效降低了仲裁范围,提高了仲裁效率,并降低了网络压力;同时当系统主节点发生异常时,对各个组内主节点进行仲裁,而不需要对所有节点发起仲裁请求,更加有效的降低了仲裁范围,提高了仲裁效率,并降低了网络压力。

例如,在N个节点的分布式系统中,如果将分布式系统平均分成G个组,及每个组有N/G个节点,仲裁组内主节点需要发起的仲裁次数是N/G-1,仲裁整个分布式系统的系统主节点需要发起的仲裁次数是G-1。

当系统主节点发生异常时,需要发起的仲裁次数为(N/G-1)+(G-1)。

当N>G,G>1时,则N-1>(N/G-1)+(G-1)。通过分组的方式有效的降低仲裁的范围,从而提高仲裁主节点效率。

在上述实施例的基础上,进一步提出上述实施例的变型。

在本发明实施例中,可选地,所述在预先划分的每个组的节点中进行仲裁,得到多个组的组内主节点之前,包括:

将所述分布式系统划分成多个组。

在本发明实施例中,可选地,根据如下一种或多种信息,将所述分布式系统划分成多个组:

节点位置信息、网络资源信息和计算能力信息。

在本发明实施例中,可选地,所述将所述分布式系统划分成多个组之后,包括:

将各个组的分组信息发送给所述分布式系统中各个节点,以使各个节点根据所述分组信息加入相应的组中。

例如,将分布式系统N个节点划分成若干个组,将分组信息发送到各个节点;

其中分组方式:可以根据节点的地理位置、网络资源、计算能力等情况,本实例只是其中一种分组策略,具体来说可以根据节点分布地域相近的节点划分到一个组内,或者根据节点网络所使用的相同运营商对节点进行划分,可以有效提高组内、组间的协动能力。

每个节点在收到分组信息后,查询本节点所属的分组信息;如果节点查询到分组信息,则根据分组信息查询本组的主节点;如果没有查询到本节点所属的组信息,则随机选择其它组的主节点作为主节点,或者不做任何处理,等待分组。

具体说,如图2所示,对有N个节点的分布式系统进行分组的模型:

设N为9,则分布式系统中9个节点,分别是节点G1-1、节点G1-2、节点G1-3、节点G2-1、节点G2-2、节点G2-3、节点G3-1、节点G3-2、节点G3-3;

将节点G1-1、节点G1-2、节点G1-3分为一组,成为组G1;

将节点G2-1、节点G2-2、节点G2-3分为一组,成为组G2;

将节点G3-1、节点G3-2、节点G3-3分为一组,成为组G3。

本模型只是举例说明,组G1、组G2、组G3中的节点可以数量相同,也可以不同;也可以根据节点的地理位置、网络资源、计算能力等情况,进行分组。

本模型组成员为节点,也可以对组进行再次分组,及组成员为组,如:将组G1、G2、G3划分成一个组,生成更多层级的组划分,只要符合逻辑,不影响分布式系统运行,不影响仲裁过程,可以使用任何方式划分组,可以划分成任何层数,但是都属于本模型。

在本发明实施例中,可选地,所述在预先划分的每个组的节点中进行仲裁,得到多个组的组内主节点,包括:

对于任一节点:当该节点加入到相应组后,查询该组中是否有组内主节点;

若无,发起组内仲裁主节点请求,以在组内进行仲裁,得到该组的组内主节点;

若有,查询该组的组内主节点是否在任期内,当不在时,发起组内仲裁主节点请求,以在组内进行仲裁,得到该组的组内主节点。

在本发明实施例中,可选地,所述在多个组的组内主节点中进行仲裁,得到所述分布式系统的系统主节点,包括:

对于任一组内主节点:当该组内主节点加入到所述分布式系统后,查询所述分布式系统中是否有系统主节点;

若无,发起系统仲裁主节点请求,以在各个组内主节点中进行仲裁,得到系统主节点;

若有,查询系统主节点是否在任期内,当不在时,发起系统仲裁主节点请求,以在各个组内主节点中进行仲裁,得到系统主节点。

在本发明实施例中,可选地,所述在多个组的组内主节点中进行仲裁,得到所述分布式系统的系统主节点之后,包括:

所述系统主节点将仲裁信息发送给各个组内主节点,开始所述分布式系统的系统主节点任期。

例如,如果本组无组内主节点,则向本组的其它节点发起仲裁主节点请求,仲裁出本组的组内主节点;如果本组有组内主节点,通过仲裁模块查询组内主节点是否在任期内,若在则无需发起仲裁主节点请求;否则发起仲裁主节点请求。

组内主节点将仲裁信息发送给分布式系统中的其它节点;组内主节点查询整个分布式系统的系统主节点,如果已有则获取系统主节点信息,不向其它组中的组内主节点发起仲裁主节点请求;如果没有,则每组中的组内主节点发起系统的仲裁主节点请求,通过G-1次仲裁(假设分布式系统共G个组)而成为整个分布式系统的系统主节点。

具体说,如图4所示,仲裁主节点流程图:

步骤1:将分布式系统N个节点划分成若干个组,将分组信息发送到各个节点;

步骤2:每个节点在收到分组信息后,查询本节点所属的分组信息;

步骤3:是否为本节点的分组信息;若是,执行步骤4;若否,执行步骤12;

步骤4:如果属于本节点分组信息,则根据分组信息查询本组是否有组内主节点;若否,执行步骤5;若是,执行步骤7;

步骤5:如果本组无组内主节点,则向本组的其它节点发起组内的仲裁主节点请求;

步骤6:通过仲裁模块仲裁出本组的主节点;执行步骤8;

步骤7:如果本组有组内主节点,则无需发起仲裁主节点请求;

步骤8:查询整个分布式系统是否有效系统主节点,若有,执行步骤9;若没有,执行步骤10;

步骤9:如果已有则获取系统主节点信息,不向其它组中的主节点发起仲裁主节点请求;

步骤10:查询整个分布式系统的系统主节点,如果没有则各个组内主节点发起系统的仲裁主节点请求;

步骤11:仲裁出整个分布式系统的主节点;

步骤12:如果不属于本节点分组信息,则随机选择其它组的主节点作为主节点,或者不做任何处理,等待分组。

在本发明实施例中,可选地,所述在预先划分的每个组的节点中进行仲裁,得到多个组的组内主节点之后,包括:

对于每个组:通过该组的组内主节点向该组的非组内主节点发送第一心跳信息;

当所述非组内主节点接收不到所述第一心跳信息时,在该组的节点中重新进行仲裁,得到该组的组内主节点。

在本发明实施例中,可选地,所述在多个组的组内主节点中进行仲裁,得到所述分布式系统的系统主节点之后,包括:

通过所述系统主节点向各个组内主节点发送第二心跳信息;

当各个组内主节点接收不到所述第二心跳信息时,在各个组内主节点中重新进行仲裁,得到所述分布式系统的系统主节点。

例如,系统主节点在任期内,只需要周期性的向各组内主节点发送心跳信息,而无需向分布式系统中的每个节点发送;每个组的组内主节点向该组内的非组内主节点发送心跳信息,而无需向其他组的节点发送心跳信息。

如果组中的非组内主节点收不到组内主节点心跳信息而超时,则非组内主节点在本组内发起仲裁主节点请求,重新仲裁本组的组内主节点。

如果各个组内主节点收不到分布式系统的系统主节点的心跳信息,而超时,则其它组内主节点发起系统的仲裁主节点请求(只向每个组内主节点发送请求),重新仲裁整个分布式系统的主节点。

具体说,如图5所示,主节点异常流程图:

步骤1:某个节点收不到心跳信息而超时,发现主节点异常;

步骤2:判断主节点是否为系统主节点;若是执行步骤3,若否执行步骤5;

步骤3:如果异常的主节点是整个分布式系统的系统主节点,则向各个组内主节点发起仲裁主节点请求;

步骤4:各个组内主节点,通过仲裁模块仲裁出整个分布式系统的系统主节点;

步骤5:如果异常的主节点是组内主节点,则向本组的其它节点发起仲裁主节点请求(如果本组中的组内主节点不是分布式系统的系统主节点,则不需要仲裁分布式系统的系统主节点);

步骤6:本组内的各个节点,通过仲裁模块仲裁出本组的组内主节点;

步骤7:步骤6中仲裁出的组内主节点,查询整个分布式系统是否有系统主节点;如果无整个分布式系统的系统主节点,则进入步骤2,如果有执行步骤8;

步骤8:如果有整个分布式系统的系统主节点,则无需发起仲裁主节点请求。

本发明实施例中当需要从分布式系统中进行仲裁系统主节点时,首先对分布式系统进行分组,在每个组中进行仲裁,仲裁出各个组的组内主节点;其次对各个组的组内主节点进行仲裁,仲裁出整个分布式系统的系统主节点。

当整个分布式系统的系统主节点发生异常情况时,首先需要在组内主节点所在的组内发起仲裁主节点请求,而不需要向分布式系统中的所有节点发起仲裁主节点请求,其次再与各个组的组内主节点进行仲裁重新仲裁出系统主节点,从而有效的降低仲裁范围,提高仲裁效率。

实施例二

本发明实施例提供一种分布式系统仲裁主节点的设备,如图6所示,所述设备包括存储器20和处理器22;所述存储器20存储有分布式系统仲裁主节点的计算机程序,所述处理器22执行所述计算机程序,以实现如实施例一中任意一项所述方法的步骤。

详细说,以实现如下步骤:

在预先划分的每个组的节点中进行仲裁,得到多个组的组内主节点;

在多个组的组内主节点中进行仲裁,得到所述分布式系统的系统主节点。

在本发明实施例中,可选地,所述在预先划分的每个组的节点中进行仲裁,得到多个组的组内主节点之前,包括:

将所述分布式系统划分成多个组。

在本发明实施例中,可选地,根据如下一种或多种信息,将所述分布式系统划分成多个组:

节点位置信息、网络资源信息和计算能力信息。

在本发明实施例中,可选地,所述将所述分布式系统划分成多个组之后,包括:

将各个组的分组信息发送给所述分布式系统中各个节点,以使各个节点根据所述分组信息加入相应的组中。

在本发明实施例中,可选地,所述在预先划分的每个组的节点中进行仲裁,得到多个组的组内主节点,包括:

对于任一节点:当该节点加入到相应组后,查询该组中是否有组内主节点;

若无,发起组内的仲裁主节点请求,以在组内进行仲裁,得到该组的组内主节点;

若有,查询该组的组内主节点是否在任期内,当不在时,发起组内仲裁主节点请求,以在组内进行仲裁,得到该组的组内主节点。

在本发明实施例中,可选地,所述在多个组的组内主节点中进行仲裁,得到所述分布式系统的系统主节点,包括:

对于任一组内主节点:当该组内主节点加入到所述分布式系统后,查询所述分布式系统中是否有系统主节点;

若无,发起系统的仲裁主节点请求,以在各个组内主节点中进行仲裁,得到系统主节点;

若有,查询系统主节点是否在任期内,当不在时,发起系统仲裁主节点请求,以在各个组内主节点中进行仲裁,得到系统主节点。

在本发明实施例中,可选地,所述在多个组的组内主节点中进行仲裁,得到所述分布式系统的系统主节点之后,包括:

所述系统主节点将仲裁信息发送给各个组内主节点,开始所述分布式系统的系统主节点任期。

在本发明实施例中,可选地,所述在预先划分的每个组的节点中进行仲裁,得到多个组的组内主节点之后,包括:

对于每个组:通过该组的组内主节点向该组的非组内主节点发送第一心跳信息;

当所述非组内主节点接收不到所述第一心跳信息时,在该组的节点中重新进行仲裁。

在本发明实施例中,可选地,所述在多个组的组内主节点中进行仲裁,得到所述分布式系统的系统主节点之后,包括:

通过所述系统主节点向各个组内主节点发送第二心跳信息;

当各个组内主节点接收不到所述第二心跳信息时,在各个组内主节点中重新进行仲裁。

当然,本发明实施例在具体实现时,也可以参阅实施例一,具有相应的技术效果。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有1条留言
  • 访客 来自[中国] 2022年10月28日 15:28
    为国家安全加油
    0
1