分布式集群中主节点确定方法、装置、设备及存储介质转让专利

申请号 : CN202010176897.9

文献号 : CN111416739B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 赵鹏

申请人 : 苏州浪潮智能科技有限公司

摘要 :

本申请公开了一种分布式集群中主节点确定方法,该方法包括:每个节点生成自身的初始网络拓扑视图;向自身的初始网络拓扑视图中的每个节点发表第一相关信息;每个节点生成自身的总成网络拓扑视图;针对每个节点,如果该节点为准主节点,则向自身的总成网络拓扑视图中的每个节点发表第二相关信息;每个节点确定基准网络拓扑视图;每个节点基于自身的总成网络拓扑视图和基准网络拓扑视图,确定自身所在的最终网络拓扑视图及该最终网络拓扑视图中的主节点。应用本申请实施例所提供的技术方案,可以使得集群能够持续运行,提升分布式集群的稳定性。本申请还公开了一种分布式集群中主节点确定装置、设备及存储介质,具有相应技术效果。

权利要求 :

1.一种分布式集群中主节点确定方法,其特征在于,包括:每个节点根据自身的可见节点,生成自身的初始网络拓扑视图;

每个节点向自身的初始网络拓扑视图中的每个节点发表第一相关信息,所述第一相关信息包括自身的初始网络拓扑视图的信息和在自身的初始网络拓扑视图中选择的主节点的信息;

每个节点根据接收到的第一相关信息,生成自身的总成网络拓扑视图;

针对每个节点,如果该节点确定在自身的总成网络拓扑视图中自身为准主节点,则向自身的总成网络拓扑视图中的每个节点发表第二相关信息,所述第二相关信息包括自身的总成网络拓扑视图的信息;

每个节点在获得的总成网络拓扑视图中确定基准网络拓扑视图;

每个节点基于自身的总成网络拓扑视图和基准网络拓扑视图,确定自身所在的最终网络拓扑视图及该最终网络拓扑视图中的主节点;

所述每个节点在获得的总成网络拓扑视图中确定基准网络拓扑视图,包括:针对每个节点,如果该节点获得的总成网络拓扑视图只有一个,则将该总成网络拓扑视图确定为基准网络拓扑视图;

所述第二相关信息还包括准主节点被选择为主节点的次数信息,所述每个节点在获得的总成网络拓扑视图中确定基准网络拓扑视图,包括:针对每个节点,如果该节点获得的总成网络拓扑视图有多个,则确定获得的每个总成网络拓扑视图的准主节点被选择为主节点的次数;

如果被选择为主节点的次数最多的准主节点只有一个,则将被选择为主节点的次数最多的准主节点的总成网络拓扑视图确定为基准网络拓扑视图。

2.根据权利要求1所述的方法,其特征在于,所述每个节点基于自身的总成网络拓扑视图和基准网络拓扑视图,确定自身所在的最终网络拓扑视图及该最终网络拓扑视图中的主节点,包括:针对每个节点,该节点在自身的总成网络拓扑视图中重新选择主节点;

如果重新选择的主节点与基准网络拓扑视图的准主节点相同,则将基准网络拓扑视图与自身的总成网络拓扑视图进行比较;

根据比较结果,通知该准主节点剔除在基准网络拓扑视图中但不在自身的总成网络拓扑视图中的节点,以断开被剔除节点与基准网络拓扑视图中其他节点的连接;

将剔除节点后的基准网络拓扑视图确定为自身所在的最终网络拓扑视图,将该准主节点确定为该最终网络拓扑视图中的主节点。

3.根据权利要求1所述的方法,其特征在于,还包括:

如果被选择为主节点的次数最多的准主节点有多个,则在多个被选择为主节点的次数最多的准主节点中,将曾作为仲裁节点的次数最多的准主节点的总成网络拓扑视图确定为基准网络拓扑视图。

4.根据权利要求1所述的方法,其特征在于,还包括:

如果被选择为主节点的次数最多的准主节点有多个,则在多个被选择为主节点的次数最多的准主节点中,将节点标识号最小的准主节点的总成网络拓扑视图确定为基准网络拓扑视图。

5.根据权利要求1至4之中任选一项所述的方法,其特征在于,在所述每个节点向自身的初始网络拓扑视图中的每个节点发表第一相关信息之前,还包括:基于以下原则确定是否执行发表操作:

如果因为网络或节点变动,导致新生成的初始网络拓扑视图是连接状态协议中保存的初始网络拓扑视图的子集,则可以发表新的初始网络拓扑视图;

如果新的初始网络拓扑视图与连接状态协议中保存的初始网络拓扑视图相同,但节点间通信出现了临时或不可恢复的丢失,则可以发表新的初始网络拓扑视图;

如果新的初始网络拓扑视图与连接状态协议中保存的初始网络拓扑视图相同,且初始网络拓扑视图中没有出现断连或重连,则不执行发表操作;

如果新的初始网络拓扑视图是连接状态协议中保存的初始网络拓扑视图的超集,则等待一个租约周期后执行发表操作。

6.一种分布式集群中主节点确定装置,其特征在于,包括:初始视图生成模块,用于每个节点根据自身的可见节点,生成自身的初始网络拓扑视图;

第一信息发表模块,用于每个节点向自身的初始网络拓扑视图中的每个节点发表第一相关信息,所述第一相关信息包括自身的初始网络拓扑视图的信息和在自身的初始网络拓扑视图中选择的主节点的信息;

总成视图生成模块,用于每个节点根据接收到的第一相关信息,生成自身的总成网络拓扑视图;

第二信息发表模块,用于针对每个节点,如果该节点确定在自身的总成网络拓扑视图中自身为准主节点,则向自身的总成网络拓扑视图中的每个节点发表第二相关信息,所述第二相关信息包括自身的总成网络拓扑视图的信息;

基准视图确定模块,用于每个节点在获得的总成网络拓扑视图中确定基准网络拓扑视图;

主节点确定模块,用于每个节点基于自身的总成网络拓扑视图和基准网络拓扑视图,确定自身所在的最终网络拓扑视图及该最终网络拓扑视图中的主节点;

所述每个节点在获得的总成网络拓扑视图中确定基准网络拓扑视图,包括:针对每个节点,如果该节点获得的总成网络拓扑视图只有一个,则将该总成网络拓扑视图确定为基准网络拓扑视图;

所述第二相关信息还包括准主节点被选择为主节点的次数信息,所述每个节点在获得的总成网络拓扑视图中确定基准网络拓扑视图,包括:针对每个节点,如果该节点获得的总成网络拓扑视图有多个,则确定获得的每个总成网络拓扑视图的准主节点被选择为主节点的次数;

如果被选择为主节点的次数最多的准主节点只有一个,则将被选择为主节点的次数最多的准主节点的总成网络拓扑视图确定为基准网络拓扑视图。

7.一种分布式集群中主节点确定设备,其特征在于,包括:存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如权利要求1至5任一项所述分布式集群中主节点确定方法的步骤。

8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述分布式集群中主节点确定方法的步骤。

说明书 :

分布式集群中主节点确定方法、装置、设备及存储介质

技术领域

[0001] 本申请涉及计算机应用技术领域,特别是涉及一种分布式集群中主节点确定方法、装置、设备及存储介质。

背景技术

[0002] 随着计算机技术的快速发展,分布式集群的应用越来越广泛。分布式集群通常使用Multi Paxos算法实现集群节点间的状态数据一致性。为了维持 Multi Paxos算法的运行,需要在集群所有节点中选择唯一的主节点,由主节点作为状态变更的唯一提案者向集群发起状态变更请求,请求得到集群中的仲裁节点集认可后即成为集群共识。通常主节点会被选为集群中节点标识号即 ID最小的节点。但是如果该节点宕机,就需要进行重选。
[0003] 在现有技术中,开源分布式集群系统Zookeeper提供了以上问题的一个解决方案。该方案实现了自己的上层通信协议。在主节点宕机时,集群中其他节点会通过该协议发起投票以选举新的主节点。
[0004] 但是,这个通信协议构建在TCP/IP协议的基础上,无法适用于拥有多协议通信链路的分布式集群中。所以,如何进行分布式集群中主节点确定,是目前本领域技术人员急需解决的技术问题。

发明内容

[0005] 本申请的目的是提供一种分布式集群中主节点确定方法、装置、设备及存储介质,以适应更多场景的分布式集群的主节点的选择。
[0006] 为解决上述技术问题,本申请提供如下技术方案:
[0007] 一种分布式集群中主节点确定方法,包括:
[0008] 每个节点根据自身的可见节点,生成自身的初始网络拓扑视图;
[0009] 每个节点向自身的初始网络拓扑视图中的每个节点发表第一相关信息,所述第一相关信息包括自身的初始网络拓扑视图的信息和在自身的初始网络拓扑视图中选择的主节点的信息;
[0010] 每个节点根据接收到的第一相关信息,生成自身的总成网络拓扑视图;
[0011] 针对每个节点,如果该节点确定在自身的总成网络拓扑视图中自身为准主节点,则向自身的总成网络拓扑视图中的每个节点发表第二相关信息,所述第二相关信息包括自身的总成网络拓扑视图的信息;
[0012] 每个节点在获得的总成网络拓扑视图中确定基准网络拓扑视图;
[0013] 每个节点基于自身的总成网络拓扑视图和基准网络拓扑视图,确定自身所在的最终网络拓扑视图及该最终网络拓扑视图中的主节点。
[0014] 在本申请的一种具体实施方式中,所述每个节点基于自身的总成网络拓扑视图和基准网络拓扑视图,确定自身所在的最终网络拓扑视图及该最终网络拓扑视图中的主节点,包括:
[0015] 针对每个节点,该节点在自身的总成网络拓扑视图中重新选择主节点;
[0016] 如果重新选择的主节点与基准网络拓扑视图的准主节点相同,则将基准网络拓扑视图与自身的总成网络拓扑视图进行比较;
[0017] 根据比较结果,通知该准主节点剔除在基准网络拓扑视图中但不在自身的总成网络拓扑视图中的节点,以断开被剔除节点与基准网络拓扑视图中其他节点的连接;
[0018] 将剔除节点后的基准网络拓扑视图确定为自身所在的最终网络拓扑视图,将该准主节点确定为该最终网络拓扑视图中的主节点。
[0019] 在本申请的一种具体实施方式中,所述每个节点在获得的总成网络拓扑视图中确定基准网络拓扑视图,包括:
[0020] 针对每个节点,如果该节点获得的总成网络拓扑视图只有一个,则将该总成网络拓扑视图确定为基准网络拓扑视图。
[0021] 在本申请的一种具体实施方式中,所述第二相关信息还包括准主节点被选择为主节点的次数信息,所述每个节点在获得的总成网络拓扑视图中确定基准网络拓扑视图,包括:
[0022] 针对每个节点,如果该节点获得的总成网络拓扑视图有多个,则确定获得的每个总成网络拓扑视图的准主节点被选择为主节点的次数;
[0023] 如果被选择为主节点的次数最多的准主节点只有一个,则将被选择为主节点的次数最多的准主节点的总成网络拓扑视图确定为基准网络拓扑视图。
[0024] 在本申请的一种具体实施方式中,还包括:
[0025] 如果被选择为主节点的次数最多的准主节点有多个,则在多个被选择为主节点的次数最多的准主节点中,将曾作为仲裁节点的次数最多的准主节点的总成网络拓扑视图确定为基准网络拓扑视图。
[0026] 在本申请的一种具体实施方式中,还包括:
[0027] 如果被选择为主节点的次数最多的准主节点有多个,则在多个被选择为主节点的次数最多的准主节点中,将节点标识号最小的准主节点的总成网络拓扑视图确定为基准网络拓扑视图。
[0028] 在本申请的一种具体实施方式中,在所述每个节点向自身的初始网络拓扑视图中的每个节点发表第一相关信息之前,还包括:
[0029] 基于以下原则确定是否执行发表操作:
[0030] 如果因为网络或节点变动,导致新生成的初始网络拓扑视图是连接状态协议中保存的初始网络拓扑视图的子集,则可以发表新的初始网络拓扑视图;
[0031] 如果新的初始网络拓扑视图与连接状态协议中保存的初始网络拓扑视图相同,但节点间通信出现了临时或不可恢复的丢失,则可以发表新的初始网络拓扑视图;
[0032] 如果新的初始网络拓扑视图与连接状态协议中保存的初始网络拓扑视图相同,且初始网络拓扑视图中没有出现断连或重连,则不执行发表操作;
[0033] 如果新的初始网络拓扑视图是连接状态协议中保存的初始网络拓扑视图的超集,则等待一个租约周期后执行发表操作。
[0034] 一种分布式集群中主节点确定装置,包括:
[0035] 初始视图生成模块,用于每个节点根据自身的可见节点,生成自身的初始网络拓扑视图;
[0036] 第一信息发表模块,用于每个节点向自身的初始网络拓扑视图中的每个节点发表第一相关信息,所述第一相关信息包括自身的初始网络拓扑视图的信息和在自身的初始网络拓扑视图中选择的主节点的信息;
[0037] 总成视图生成模块,用于每个节点根据接收到的第一相关信息,生成自身的总成网络拓扑视图;
[0038] 第二信息发表模块,用于针对每个节点,如果该节点确定在自身的总成网络拓扑视图中自身为准主节点,则向自身的总成网络拓扑视图中的每个节点发表第二相关信息,所述第二相关信息包括自身的总成网络拓扑视图的信息;
[0039] 基准视图确定模块,用于每个节点在获得的总成网络拓扑视图中确定基准网络拓扑视图;
[0040] 主节点确定模块,用于每个节点基于自身的总成网络拓扑视图和基准网络拓扑视图,确定自身所在的最终网络拓扑视图及该最终网络拓扑视图中的主节点。
[0041] 一种分布式集群中主节点确定设备,包括:
[0042] 存储器,用于存储计算机程序;
[0043] 处理器,用于执行所述计算机程序时实现上述任一项所述分布式集群中主节点确定方法的步骤。
[0044] 一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述分布式集群中主节点确定方法的步骤。
[0045] 应用本申请实施例所提供的技术方案,每个节点在生成初始网络拓扑视图后,向其他节点发表第一相关信息,每个节点根据接收到的第一相关信息,生成自身的总成网络拓扑视图,准主节点发表第二相关信息,每个节点确定出基准网络拓扑视图后,基于自身的总成网络拓扑视图和基准网络拓扑视图,确定最终的网络拓扑视图和主节点。不需要受限于分布式集群所使用的通信链路的协议,适用于更多场景下的分布式集群的主节点的确定,在分布式集群的网络环境变化或节点失败时能够将集群迁移到稳定的网络子环境中,并在子环境的所有成员节点上选出相同的主节点,从而使得集群能够持续运行,而且每个网络子环境中节点之间最多为两跳连接,可以提升分布式集群的稳定性。

附图说明

[0046] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0047] 图1为本申请实施例中一种分布式集群中主节点确定方法的实施流程图;
[0048] 图2为本申请实施例中一种分布式集群的结构示意图;
[0049] 图3为本申请实施例中一种分布式集群中主节点确定装置的结构示意图;
[0050] 图4为本申请实施例中一种分布式集群中主节点确定设备的结构示意图。

具体实施方式

[0051] 为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0052] 参见图1所示,为本申请实施例所提供的一种分布式集群中主节点确定方法的实施流程图,该方法可以包括以下步骤:
[0053] S110:每个节点根据自身的可见节点,生成自身的初始网络拓扑视图。
[0054] 分布式集群可以包括多个节点,不同节点之间可以通过直接或者间接连接方式通信连接。如图2所示,为一个分布式集群的结构示意图,该分布式集群包括节点1、节点2、节点3和节点4,其中,节点1分别与节点2和节点3 直接连接,节点3还与节点4直接连接,节点1、节点2、节点3、节点4的节点标识号依次从小到大。
[0055] 分布式集群在运行过程中,可能会因为通信链路发生变化或者节点发生变化,而使得每个节点的初始网络拓扑视图发生变化。每个节点可以按照设定时间间隔,或者在监测到存在节点间通信的丢失时,根据自身的可见节点,生成自身的初始网络拓扑视图。
[0056] 针对每个节点而言,该节点的可见节点是指与该节点直接连接的节点,该节点的初始网络拓扑视图包括该节点和该节点的可见节点。
[0057] S120:每个节点向自身的初始网络拓扑视图中的每个节点发表第一相关信息。
[0058] 第一相关信息包括自身的初始网络拓扑视图的信息和在自身的初始网络拓扑视图中选择的主节点的信息。
[0059] 在本申请实施例中,每个节点根据自身的可见节点,生成自身的初始网络拓扑视图之后,可以在自身的初始网络拓扑视图中选择主节点。具体的,可以根据节点的节点标识号进行选择,如将节点标识号最小的节点作为主节点。
[0060] 然后向自身的初始网络拓扑视图中的每个节点发表第一相关信息。该第一相关信息包括自身的初始网络拓扑视图的信息和在自身的初始网络拓扑视图中选择的主节点的信息。
[0061] 以图2所示的分布式集群为例,每个节点根据自身的可见节点,生成自身的初始网络拓扑视图及在初始网络拓扑视图中选择的主节点的信息分别为:
[0062] 节点1
[0063] 节点1:1;节点2:0;节点3:0;节点4:‑;表示节点1的初始网络拓扑视图中包括节点1、节点2和节点3,在该初始网络拓扑视图中选择的主节点为节点1;
[0064] 节点2
[0065] 节点1:1;节点2:0;节点3:‑;节点4:‑;表示节点2的初始网络拓扑视图中包括节点1和节点2,在该初始网络拓扑视图中选择的主节点为节点 1;
[0066] 节点3
[0067] 节点1:1;节点2:‑;节点3:0;节点4:0;表示节点3的初始网络拓扑视图中包括节点1、节点3和节点4,在该初始网络拓扑视图中选择的主节点为节点1;
[0068] 节点4
[0069] 节点1:‑;节点2:‑;节点3:1;节点4:0;表示节点4的初始网络拓扑视图中包括节点3和节点4,在该初始网络拓扑视图中选择的主节点为节点 3。
[0070] 其中,‑表示不在相应节点的初始网络拓扑视图中。
[0071] S130:每个节点根据接收到的第一相关信息,生成自身的总成网络拓扑视图。
[0072] 每个节点发表的第一相关信息中包含自身的初始网络拓扑视图的信息和在自身的初始网络拓扑视图中选择的主节点的信息。每个节点向自身的初始网络拓扑视图中的每个节点发表第一相关信息后,每个节点即可以获得自身的可见节点发表的第一相关信息。每个节点根据接收到的第一相关信息和自身的第一相关信息,可以生成自身的总成网络拓扑视图。
[0073] 针对每个节点而言,该节点生成的自身的总成网络拓扑视图中可以包含两跳之内能够到达的节点。
[0074] 仍以图2所示的分布式集群为例,节点1、节点2、节点3、节点4分别发表第一相关信息后,节点1可以接收到节点2和节点3发表的第一相关信息,节点2可以接收到节点1发表的相关信息,节点3可以接收到节点1和节点4 发表的第一相关信息,节点4可以接收到节点3发表的第一相关信息。每个节点在自身的第一相关信息基础上加上接收到的第一相关信息,可以得到自身的总成网络拓扑视图。
[0075] 节点1、节点2、节点3、节点4的总成网络拓扑视图及被选择为主节点次数的信息如下:
[0076] 节点1
[0077] 节点1:3;节点2:0;节点3:0;节点4:0;表示节点1的总成网络拓扑视图中包括节点1、节点2、节点3和节点4,节点1被选择为主节点的次数为3;
[0078] 节点2
[0079] 节点1:2;节点2:0;节点3:0;节点4:‑;表示节点2的总成网络拓扑视图中包括节点1、节点2和节点3,节点1被选择为主节点的次数为2;
[0080] 节点3
[0081] 节点1:2;节点2:0;节点3:1;节点4:0;表示节点3的总成网络拓扑视图中包括节点1、节点2、节点3和节点4,节点1被选择为主节点的次数为2,节点3被选择为主节点的次数为
1;
[0082] 节点4
[0083] 节点1:1;节点2:‑;节点3:1;节点4:0;表示节点4的总成网络拓扑视图中包括节点1、节点3和节点4,节点1被选择为主节点的次数为1,节点3被选择为主节点的次数为1。
[0084] S140:针对每个节点,如果该节点确定在自身的总成网络拓扑视图中自身为准主节点,则向自身的总成网络拓扑视图中的每个节点发表第二相关信息。
[0085] 第二相关信息包括自身的总成网络拓扑视图的信息。
[0086] 每个节点根据接收到的第一相关信息,生成自身的总成网络拓扑视图之后,可以在自身的总成网络拓扑视图中确定自身是否为准主节点。具体的,可以根据被选择为主节点的次数进行确定。
[0087] 如上例中,节点1在自身的总成网络拓扑视图中可以确定自身为准主节点,因为节点1被选择为主节点的次数为3,大于其他节点被选择为主节点的次数;节点2在自身的总成网络拓扑视图中可以确定自身非准主节点,因为节点2被选择为主节点的次数为0,小于节点1被选择为主节点的次数2;同理,节点3、节点4在自身的总成网络拓扑视图中可以确定自身非准主节点。
[0088] 针对每个节点,如果该节点确定在自身的总成网络拓扑视图中自身为准主节点,则可以向自身的总成网络拓扑视图中的每个节点发表第二相关信息。该第二相关信息可以包括自身的总成网络拓扑视图的信息。
[0089] 上例中,节点1为准主节点,节点1可以向自身的总成网络拓扑视图中的每个节点,如节点2、节点3和节点4发表第二相关信息。节点2、节点3、节点4均不是准主节点,不再发表第二相关信息。
[0090] S150:每个节点在获得的总成网络拓扑视图中确定基准网络拓扑视图.[0091] 在上述步骤中,针对每个节点,如果该节点确定在自身的总成网络拓扑视图中自身为准主节点,则可以向自身的总成网络拓扑视图中的每个节点发表第二相关信息。这样每个节点可以获得准主节点发表的第二相关信息,获得准主节点的总成网络拓扑视图。
[0092] 每个节点可以在获得的总成网络拓扑视图中确定基准网络拓扑视图。
[0093] 具体的,针对每个节点,如果该节点获得的总成网络拓扑视图只有一个,则可以直接将该总成网络拓扑视图确定为基准网络拓扑视图。
[0094] 在本申请实施例中,第二相关信息还可以包括准主节点被选择为主节点的次数信息,针对每个节点,如果该节点获得的总成网络拓扑视图有多个,则可以确定获得的每个总成网络拓扑视图的准主节点被选择为主节点的次数,如果被选择为主节点的次数最多的准主节点只有一个,则可以将被选择为主节点的次数最多的准主节点的总成网络拓扑视图确定为基准网络拓扑视图。
[0095] 如果选择为主节点的次数最多的准主节点有多个,则在多个被选择为主节点的次数最多的准主节点中,将曾作为仲裁节点的次数最多的准主节点的总成网络拓扑视图确定为基准网络拓扑视图。
[0096] 或者,如果选择为主节点的次数最多的准主节点有多个,则在多个被选择为主节点的次数最多的准主节点中,将节点标识号最小的准主节点的总成网络拓扑视图确定为基准网络拓扑视图。
[0097] 在实际应用中,可以单独使用一种规则或者综合以上规则进行基准网络拓扑视图的确定。
[0098] S160:每个节点基于自身的总成网络拓扑视图和基准网络拓扑视图,确定自身所在的最终网络拓扑视图及该最终网络拓扑视图中的主节点。
[0099] 每个节点生成自身的总成网络拓扑视图,并确定基准网络拓扑视图之后,可以基于自身的总成网络拓扑视图和基准网络拓扑视图,确定自身所在的最终网络拓扑视图及该最终网络拓扑视图中的主节点。
[0100] 在本申请的一种具体实施方式中,步骤S160可以包括以下步骤:
[0101] 步骤一:针对每个节点,该节点在自身的总成网络拓扑视图中重新选择主节点;
[0102] 步骤二:如果重新选择的主节点与基准网络拓扑视图的准主节点相同,则将基准网络拓扑视图与自身的总成网络拓扑视图进行比较;
[0103] 步骤三:根据比较结果,通知该准主节点剔除在基准网络拓扑视图中但不在自身的总成网络拓扑视图中的节点,以断开被剔除节点与基准网络拓扑视图中其他节点的连接;
[0104] 步骤四:将剔除节点后的基准网络拓扑视图确定为自身所在的最终网络拓扑视图,将该准主节点确定为该最终网络拓扑视图中的主节点。
[0105] 为便于理解,将上述四个步骤结合起来进行说明。
[0106] 每个节点在生成自身的总成网络拓扑视图后,可以在自身的总成网络拓扑视图中重新选择主节点。
[0107] 针对每个节点,该节点在自身的总成网络拓扑视图中重新选择主节点后,可以判断重新选择的主节点与基准网络拓扑视图的准主节点是否相同,如果相同,则可以认为该准主节点为主节点,并将基准网络拓扑视图与自身的总成网络拓扑视图进行比较。具体的,可以比较基准网络拓扑视图中的节点集与自身的总成网络拓扑视图中的节点集。
[0108] 根据比较结果,可以通知该准主节点剔除在基准网络拓扑视图中但不在自身的总成网络拓扑视图中的节点,基准网络拓扑视图中其他节点也与该被剔除节点断开了连接。
[0109] 举例而言,节点2的总成网络拓扑视图为:
[0110] 节点1:2;节点2:0;节点3:0;节点4:‑;
[0111] 节点2确定的基准网络拓扑视图为节点1发表的节点1的总成网络拓扑视图:
[0112] 节点1:3;节点2:0;节点3:0;节点4:0;
[0113] 节点2在自身的总成网络拓扑视图中重新选择的主节点为节点1,与基准网络拓扑视图的准主节点一致,均为节点1,节点2认同节点1为主节点。节点2将这两个视图进行比较,可以确定节点4在基准网络拓扑视图中,但不在节点2的总成网络拓扑视图中,节点2可以通知节点1剔除在基准网络拓扑视图中剔除节点4,断开节点4与基准网络拓扑视图中其他节点,如节点3的连接。
[0114] 同样,节点3的总成网络拓扑视图为:
[0115] 节点1:2;节点2:0;节点3:1;节点4:0;
[0116] 节点3确定的基准网络拓扑视图为节点1发表的节点1的总成网络拓扑视图:
[0117] 节点1:3;节点2:0;节点3:0;节点4:0;
[0118] 节点3在自身的总成网络拓扑视图中重新选择的主节点为节点1,与基准网络拓扑视图的准主节点一致,均为节点1,节点3认同节点1为主节点。节点3将这两个视图进行比较,没有发现在基准网络拓扑视图中但不在节点3 的总成网络拓扑视图中的节点,所以节点3暂时没有动作,在节点1剔除节点 4后,节点3可以与节点4断开连接。
[0119] 节点4的总成网络拓扑视图为:
[0120] 节点1:1;节点2:‑;节点3:1;节点4:0;
[0121] 节点4确定的基准网络拓扑视图为节点1发表的节点1的总成网络拓扑视图:
[0122] 节点1:3;节点2:0;节点3:0;节点4:0;
[0123] 节点4在自身的总成网络拓扑视图中重新选择的主节点为节点1或节点 3,与基准网络拓扑视图的准主节点不一致,节点4不认同节点1为主节点。被节点1剔除后,与节点3也断开连接,不再有机会进入节点1的总成网络拓扑视图。
[0124] 针对每个节点,在基准网络拓扑视图中剔除相应节点后,可以将剔除节点后的基准网络拓扑视图确定为自身所在的最终网络拓扑视图,并将准主节点确定为该最终网络拓扑视图中的主节点。
[0125] 上例中,节点1、节点2、节点3所在的最终网络拓扑视图中包括节点1、节点2和节点3,该最终网络拓扑视图中的主节点为节点1。节点4所在的最终网络拓扑视图中包括节点4,该最终网络拓扑视图中的主节点为节点4。
[0126] 经过上述操作,分布式集群的所有节点会被分割到若干个互不相交的子集群中,每个子集群内所有节点会收敛到同一个网络拓扑视图中,并完成各个子集群中唯一主节点的选择。
[0127] 应用本申请实施例所提供的方法,每个节点在生成初始网络拓扑视图后,向其他节点发表第一相关信息,每个节点根据接收到的第一相关信息,生成自身的总成网络拓扑视图,准主节点发表第二相关信息,每个节点确定出基准网络拓扑视图后,基于自身的总成网络拓扑视图和基准网络拓扑视图,确定最终的网络拓扑视图和主节点。不需要受限于分布式集群所使用的通信链路的协议,适用于更多场景下的分布式集群的主节点的确定,在分布式集群的网络环境变化或节点失败时能够将集群迁移到稳定的网络子环境中,并在子环境的所有成员节点上选出相同的主节点,从而使得集群能够持续运行,而且每个网络子环境中节点之间最多为两跳连接,可以提升分布式集群的稳定性。
[0128] 在本申请实施例中,为了防止网络拓扑视图的频繁发表行为造成集群事件管理器的阻塞,可以设计一个视图管理器,视图管理器运行在每个节点上,负责维护一个连接状态协议,视图管理器在连接状态协议中保存节点间的连接状态、断连和重连情况,以及最近一次发表的初始网络拓扑视图。在每个节点向自身的初始网络拓扑视图中的每个节点发表第一相关信息之前,可以先基于以下原则确定是否执行发表操作:
[0129] 如果因为网络或节点变动,导致新生成的初始网络拓扑视图是连接状态协议中保存的初始网络拓扑视图的子集,则可以发表新的初始网络拓扑视图;
[0130] 如果新的初始网络拓扑视图与连接状态协议中保存的初始网络拓扑视图相同,但节点间通信出现了临时或不可恢复的丢失,则可以发表新的初始网络拓扑视图;
[0131] 如果新的初始网络拓扑视图与连接状态协议中保存的初始网络拓扑视图相同,且初始网络拓扑视图中没有出现断连或重连,则不执行发表操作;
[0132] 如果新的初始网络拓扑视图是连接状态协议中保存的初始网络拓扑视图的超集,则等待一个租约周期后执行发表操作。
[0133] 本申请所提供的技术方案能够适应分布式集群所处的网络环境,能够兼容节点的动态加入和离开,也能够适应非对称网络错误,为分布式集群的高可用性和可靠性提供重要的支撑。
[0134] 相应于上面的方法实施例,本申请实施例还提供了一种分布式集群中主节点确定装置,下文描述的分布式集群中主节点确定装置与上文描述的分布式集群中主节点确定方法可相互对应参照。
[0135] 参见图3所示,该装置包括:
[0136] 初始视图生成模块310,用于每个节点根据自身的可见节点,生成自身的初始网络拓扑视图;
[0137] 第一信息发表模块320,用于每个节点向自身的初始网络拓扑视图中的每个节点发表第一相关信息,第一相关信息包括自身的初始网络拓扑视图的信息和在自身的初始网络拓扑视图中选择的主节点的信息;
[0138] 总成视图生成模块330,用于每个节点根据接收到的第一相关信息,生成自身的总成网络拓扑视图;
[0139] 第二信息发表模块340,用于针对每个节点,如果该节点确定在自身的总成网络拓扑视图中自身为准主节点,则向自身的总成网络拓扑视图中的每个节点发表第二相关信息,第二相关信息包括自身的总成网络拓扑视图的信息;
[0140] 基准视图确定模块350,用于每个节点在获得的总成网络拓扑视图中确定基准网络拓扑视图;
[0141] 主节点确定模块360,用于每个节点基于自身的总成网络拓扑视图和基准网络拓扑视图,确定自身所在的最终网络拓扑视图及该最终网络拓扑视图中的主节点。
[0142] 应用本申请实施例所提供的装置,每个节点在生成初始网络拓扑视图后,向其他节点发表第一相关信息,每个节点根据接收到的第一相关信息,生成自身的总成网络拓扑视图,准主节点发表第二相关信息,每个节点确定出基准网络拓扑视图后,基于自身的总成网络拓扑视图和基准网络拓扑视图,确定最终的网络拓扑视图和主节点。不需要受限于分布式集群所使用的通信链路的协议,适用于更多场景下的分布式集群的主节点的确定,在分布式集群的网络环境变化或节点失败时能够将集群迁移到稳定的网络子环境中,并在子环境的所有成员节点上选出相同的主节点,从而使得集群能够持续运行,而且每个网络子环境中节点之间最多为两跳连接,可以提升分布式集群的稳定性。
[0143] 在本申请的一种具体实施方式中,主节点确定模块360,用于:
[0144] 针对每个节点,该节点在自身的总成网络拓扑视图中重新选择主节点;
[0145] 如果重新选择的主节点与基准网络拓扑视图的准主节点相同,则将基准网络拓扑视图与自身的总成网络拓扑视图进行比较;
[0146] 根据比较结果,通知该准主节点剔除在基准网络拓扑视图中但不在自身的总成网络拓扑视图中的节点,以断开被剔除节点与基准网络拓扑视图中其他节点的连接;
[0147] 将剔除节点后的基准网络拓扑视图确定为自身所在的最终网络拓扑视图,将该准主节点确定为该最终网络拓扑视图中的主节点。
[0148] 在本申请的一种具体实施方式中,基准视图确定模块350,用于:
[0149] 针对每个节点,如果该节点获得的总成网络拓扑视图只有一个,则将该总成网络拓扑视图确定为基准网络拓扑视图。
[0150] 在本申请的一种具体实施方式中,基准视图确定模块350,用于:
[0151] 针对每个节点,如果该节点获得的总成网络拓扑视图有多个,则确定获得的每个总成网络拓扑视图的准主节点被选择为主节点的次数;
[0152] 如果被选择为主节点的次数最多的准主节点只有一个,则将被选择为主节点的次数最多的准主节点的总成网络拓扑视图确定为基准网络拓扑视图。
[0153] 在本申请的一种具体实施方式中,基准视图确定模块350,还用于:
[0154] 如果被选择为主节点的次数最多的准主节点有多个,则在多个被选择为主节点的次数最多的准主节点中,将曾作为仲裁节点的次数最多的准主节点的总成网络拓扑视图确定为基准网络拓扑视图。
[0155] 在本申请的一种具体实施方式中,基准视图确定模块350,还用于:
[0156] 如果被选择为主节点的次数最多的准主节点有多个,则在多个被选择为主节点的次数最多的准主节点中,将节点标识号最小的准主节点的总成网络拓扑视图确定为基准网络拓扑视图。
[0157] 在本申请的一种具体实施方式中,还包括信息发表抉择模块,用于:
[0158] 在每个节点向自身的初始网络拓扑视图中的每个节点发表第一相关信息之前,基于以下原则确定是否执行发表操作:
[0159] 如果因为网络或节点变动,导致新生成的初始网络拓扑视图是连接状态协议中保存的初始网络拓扑视图的子集,则可以发表新的初始网络拓扑视图;
[0160] 如果新的初始网络拓扑视图与连接状态协议中保存的初始网络拓扑视图相同,但节点间通信出现了临时或不可恢复的丢失,则可以发表新的初始网络拓扑视图;
[0161] 如果新的初始网络拓扑视图与连接状态协议中保存的初始网络拓扑视图相同,且初始网络拓扑视图中没有出现断连或重连,则不执行发表操作;
[0162] 如果新的初始网络拓扑视图是连接状态协议中保存的初始网络拓扑视图的超集,则等待一个租约周期后执行发表操作。
[0163] 相应于上面的方法实施例,本申请实施例还提供了一种分布式集群中主节点确定设备,包括:
[0164] 存储器,用于存储计算机程序;
[0165] 处理器,用于执行计算机程序时实现上述分布式集群中主节点确定方法的步骤。
[0166] 如图4所示,为分布式集群中主节点确定设备的组成结构示意图,分布式集群中主节点确定设备可以包括:处理器10、存储器11、通信接口12和通信总线13。处理器10、存储器11、通信接口12均通过通信总线13完成相互间的通信。
[0167] 在本申请实施例中,处理器10可以为中央处理器(Central Processing Unit,CPU)、特定应用集成电路、数字信号处理器、现场可编程门阵列或者其他可编程逻辑器件等。
[0168] 处理器10可以调用存储器11中存储的程序,具体的,处理器10可以执行分布式集群中主节点确定方法的实施例中的操作。
[0169] 存储器11中用于存放一个或者一个以上程序,程序可以包括程序代码,程序代码包括计算机操作指令,在本申请实施例中,存储器11中至少存储有用于实现以下功能的程序:
[0170] 每个节点根据自身的可见节点,生成自身的初始网络拓扑视图;
[0171] 每个节点向自身的初始网络拓扑视图中的每个节点发表第一相关信息,第一相关信息包括自身的初始网络拓扑视图的信息和在自身的初始网络拓扑视图中选择的主节点的信息;
[0172] 每个节点根据接收到的第一相关信息,生成自身的总成网络拓扑视图;
[0173] 针对每个节点,如果该节点确定在自身的总成网络拓扑视图中自身为准主节点,则向自身的总成网络拓扑视图中的每个节点发表第二相关信息,第二相关信息包括自身的总成网络拓扑视图的信息;
[0174] 每个节点在获得的总成网络拓扑视图中确定基准网络拓扑视图;
[0175] 每个节点基于自身的总成网络拓扑视图和基准网络拓扑视图,确定自身所在的最终网络拓扑视图及该最终网络拓扑视图中的主节点。
[0176] 在一种可能的实现方式中,存储器11可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统,以及至少一个功能(比如视图生成功能、视图比较功能)所需的应用程序等;存储数据区可存储使用过程中所创建的数据,如相关信息数据、主节点选择数据等。
[0177] 此外,存储器11可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件或其他易失性固态存储器件。
[0178] 通信接口12 可以为通信模块的接口,用于与其他设备或者系统连接。
[0179] 当然,需要说明的是,图4所示的结构并不构成对本申请实施例中分布式集群中主节点确定设备的限定,在实际应用中分布式集群中主节点确定设备可以包括比图4所示的更多或更少的部件,或者组合某些部件。
[0180] 相应于上面的方法实施例,本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述分布式集群中主节点确定方法的步骤。
[0181] 本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
[0182] 专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
[0183] 结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器 (RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD‑ROM、或技术领域内所公知的任意其它形式的存储介质中。
[0184] 本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的技术方案及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。