一种集群仲裁方法、装置、电子设备及可读存储介质与流程

文档序号:24184488发布日期:2021-03-09 13:16阅读:101来源:国知局
一种集群仲裁方法、装置、电子设备及可读存储介质与流程

1.本申请涉及集群技术领域,特别涉及一种集群仲裁方法、集群仲裁装置、电子设备及计算机可读存储介质。


背景技术:

2.分布式集群在工作中,集群节点可能会发生故障,或者集群节点间的网络通信可能会发生中断,这样会导致集群拓扑出现损失或者分裂。若发生了拓扑损失,留存在拓扑中的如果不接管集群功能,集群就会停机;若发生了拓扑分裂,且分裂后的各个部分都尝试接管集群,由于部分间相互不能通信,状态一致性就会被破坏。为了解决上述问题,相关技术采用多数仲裁的方式,即在集群发生上述两种故障时进行网络拓扑确认,如果所在的拓扑连通分支包含了半数以上的节点,那么它所在的分支就将接管集群,同时处于其他分支的节点退出集群。但是相关技术的局限性较大,在很多可以继续作为集群向外提供服务的情况下,仅由于存活的节点数量没有超过半数而无法提供服务,导致集群的存续性较差。
3.因此,相关技术存在的集群存续性较差的问题,是本领域技术人员需要解决的技术问题。


技术实现要素:

4.有鉴于此,本申请的目的在于提供一种集群仲裁方法、集群仲裁装置、电子设备及计算机可读存储介质,使网络拓扑在包含任意数量节点的情况下均可继续工作,改善了集群的存续性。
5.为解决上述技术问题,本申请提供了一种集群仲裁方法,包括:获取历史选举集,并利用所述历史选举集得到第一节点数量和电源情况;根据所述电源情况,利用所述第一节点数量生成仲裁参数;获取当前网络拓扑,并判断所述当前网络拓扑是否满足所述仲裁参数;若满足所述仲裁参数,则提供集群服务。
6.可选地,所述利用所述历史选举集得到第一节点数量和电源情况,包括:对所述历史选举集中的第一授权节点进行统计,得到所述第一节点数量;获取各个所述第一授权节点对应的电源信息,判断所有的所述第一授权节点是否由一个电源供电;若由一个所述电源供电,则将所述电源情况确定为单一供电;若不由一个所述电源供电,则将所述电源情况确定为最大单一供电节点数;所述最大单一供电节点数大于所述第一节点数量的半数。
7.可选地,所述根据所述电源情况,利用所述第一节点数量生成仲裁参数,包括:若所述电源情况为所述单一供电,则根据所述第一节点数量的奇偶情况,利用所述第一节点数量生成仲裁阈值;若所述电源情况为所述最大单一供电节点数,则根据所述历史选举集的仲裁盘情况,
利用所述最大单一供电节点数和所述第一节点数量生成所述仲裁阈值;利用所述仲裁阈值生成所述仲裁参数。
8.可选地,所述根据所述第一节点数量的奇偶情况,利用所述第一节点数量生成仲裁阈值,包括:若所述第一节点数量为奇数,则将所述第一节点数量加一后除以二,得到所述仲裁阈值;若所述第一节点数量为偶数,则判断所述历史选举集中是否存在仲裁盘;若存在所述仲裁盘,则将所述第一节点数量除以二,得到所述仲裁阈值;若不存在所述仲裁盘,则将所述第一节点数量除以二后加一,得到所述仲裁阈值。
9.可选地,所述根据所述历史选举集的仲裁盘情况,利用所述最大单一供电节点数和所述第一节点数量生成所述仲裁阈值,包括:若所述历史选举集中存在仲裁盘,则利用所述第一节点数量减去所述最大单一供电节点数,得到所述仲裁阈值;若所述历史选举集中不存在所述仲裁盘,则利用所述第一节点数量减去所述最大单一供电节点数后加一,得到所述仲裁阈值。
10.可选地,所述判断所述当前网络拓扑是否满足所述仲裁参数,包括:判断所述当前网络拓扑对应的第二授权节点数是否小于所述仲裁阈值;若小于所述仲裁阈值,则确定不满足所述仲裁参数;若不小于所述仲裁阈值,则判断所述历史选举集是否为目标选举集;所述目标选举集为具有大于一个所述电源且具有仲裁盘的选举集,或者为具有一个所述电源、所述第一授权节点数为偶数且具有仲裁盘的选举集;若不为所述目标选举集,则确定满足所述仲裁参数;若为所述目标选举集,则判断所述第二授权节点数是否等于所述仲裁阈值;若不等于所述仲裁阈值,则确定满足所述仲裁参数;若等于所述仲裁阈值,则利用所述当前网络拓扑的当前仲裁盘情况判断是否满足所述仲裁参数。
11.可选地,所述利用所述当前网络拓扑的当前仲裁盘情况判断是否满足所述仲裁参数,包括:若所述当前网络拓扑识别到所述仲裁盘,则执行仲裁盘争抢,并在争抢成功后确定满足所述仲裁参数;若所述当前网络拓扑未识别到所述仲裁盘,则判断是否存在仲裁节点;若存在所述仲裁节点,则确定满足所述仲裁参数;若不存在所述仲裁节点,则确定不满足所述仲裁参数。
12.本申请还提供了一种集群仲裁装置,包括:获取模块,用于获取历史选举集,并利用所述历史选举集得到第一节点数量和电源情况;生成模块,用于根据所述电源情况,利用所述第一节点数量生成仲裁参数;判断模块,用于获取当前网络拓扑,并判断所述当前网络拓扑是否满足所述仲裁参数;服务模块,用于若满足所述仲裁参数,则提供集群服务。
13.本申请还提供了一种电子设备,包括存储器和处理器,其中:所述存储器,用于保存计算机程序;所述处理器,用于执行所述计算机程序,以实现上述的集群仲裁方法。
14.本申请还提供了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现上述的集群仲裁方法。
15.本申请提供的集群仲裁方法,获取历史选举集,并利用历史选举集得到第一节点数量和电源情况;根据电源情况,利用第一节点数量生成仲裁参数;获取当前网络拓扑,并判断当前网络拓扑是否满足仲裁参数;若满足仲裁参数,则提供集群服务。
16.可见,该方法在集群的网络拓扑发生一次分裂或损失的故障后,会获取分裂或损失前的历史选举集对应的第一节点数量和电源情况,并利用其进行是否能够继续作为集群提供服务的仲裁。具体的,仲裁参数利用第一节点数量生成,可以基于原有节点的数量,对故障后的网络拓扑中的节点数量做出限制,保证若发生网络拓扑分裂,则有且仅有一个新的网络拓扑能够作为集群对外提供服务,防止出现两个集群同时对外提供服务引起的数据不一致问题。同时,还可以保证在发生拓扑损失后仅有一个网络拓扑时,确保该网络拓扑中的节点能够作为新的集群对外提供服务。在得到仲裁参数后判断当前网络拓扑是否满足该仲裁参数,若满足,则可以向外提供集群服务,使集群继续工作。该方法并不要求故障后新的网络拓扑中的节点必须为原本集群中的多数,在保证了数据一致性的基础上,使网络拓扑在包含任意数量节点的情况下均可继续工作,改善了集群的存续性。
17.此外,本申请还提供了一种集群仲裁装置、电子设备及计算机可读存储介质,同样具有上述有益效果。
附图说明
18.为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
19.图1为本申请实施例提供的一种集群仲裁方法流程图;图2为本申请实施例提供的一种集群仲裁装置的结构示意图;图3为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
20.为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
21.请参考图1,图1为本申请实施例提供的一种集群仲裁方法流程图。该方法包括:s101:获取历史选举集,并利用历史选举集得到第一节点数量和电源情况。
22.需要说明的是,本实施例提供的集群仲裁方法的全部或部分步骤可以利用当前网络拓扑中指定的节点执行,该节点可以为当前网路拓扑中的任意一个节点,例如可以为编
号最小的节点,或者可以为编号最大的节点,或者可以为网络地址最小的节点。具体的,在发生网络拓扑分裂或损失时,即在原有集群中的部分节点与另外的节点之间的网络通讯断开,造成拓扑分类;或者在部分节点关机或故障掉电时。各个节点可以在当前网络拓扑中广播自身编号,或者广播ip地址。在获取到所有节点的编号或ip地址后,判断自身是否为被指定的节点,例如编号最小的节点。若是,则执行集群仲裁方法中的全部或部分步骤。
23.历史选举集为集群发生网络故障前作为集群提供服务时,集群中的授权节点组成的集合。授权节点为集群状态足够新的节点,其可以参与集群投票或提供服务,例如进行是否作为集群继续向外提供服务的仲裁的投票,或者可以为其他投票,授权节点的数量不做限定。状态不够新的节点无法作为授权节点,也无法进行投票,需要更新集群状态后才能成为授权节点。历史选举集可以在集群中的各个节点上存储,或者在各个授权节点上存储。通过获取历史选举集,可以确定故障发生前的集群拓扑,进而以此为基准生成对应的仲裁参数,并利用仲裁参数进行是否可以作为集群继续提供服务的仲裁。
24.第一节点数量为历史选举集中第一授权节点的数量,其具体大小不做限定。电源情况为历史选举集中各个第一授权节点的供电情况。需要说明的是,第一授权节点可以全部由一个电源供电,也可以由多个电源供电。基于此,本实施例提供的一种具体的第一节点数量和电源情况获取方法。利用历史选举集得到第一节点数量和电源情况的步骤可以包括:步骤11:对历史选举集中的第一授权节点进行统计,得到第一节点数量。
25.步骤12:获取各个第一授权节点对应的电源信息,判断所有的第一授权节点是否由一个电源供电。
26.步骤13:若由一个电源供电,则将电源情况确定为单一供电。
27.步骤14:若不由一个电源供电,则将电源情况确定为最大单一供电节点数。
28.需要说明的是,历史选举集中仅具有第一授权节点,因此对历史选举集中的第一授权节点进行统计,就是统计历史选举集中的节点数量。在统计第一节点数量的同时,还可以获取各个第一授权节点对应的电源信息,电源信息用于表示对第一授权节点供电的电源的身份,其具体可以为电源id、电源名称等。利用各个电源信息判断所有的第一授权节点是否由一个电源供电,即判断历史选举集中的所有节点是否均由一个电源供电。若由一个电源供电,则将电源情况确定为单一供电;若不由一个电源供电,即说明历史选举集中的节点由两个以上的电源分别供电,此时将电源情况确定为最大单一供电节点数。最大单一供电节点数即为同一个电源供电的最大节点数,由于历史选举集中由两个以上的电源分别供电,因此各个电源供电的节点数量必然存在最大值,则该最大值即为最大单一供电节点数。需要说明的是,本实施例中每个第一授权节点仅由一个电源供电,且本实施例中的最大单一供电节点数大于第一节点数量的半数。对于最大单一供电节点数不大于第一节点数量的半数的情况本实施例不做讨论。
29.s102:根据电源情况,利用第一节点数量生成仲裁参数。
30.在得到电源情况和第一节点数量后,可以根据电源情况,利用第一节点数量生成仲裁参数。仲裁参数的具体内容不做限定,其可以根据实际需要进行设置。由于拓扑损失可以由节点掉电引起,因此可以理解的是,在不同的供电情况下,发生拓扑损失后的影响不同。根据电源情况和第一节点数量生成的仲裁参数不仅可以在发生拓扑分裂后从两个网络
拓扑中选择一个作为新的集群并向外提供服务,防止两个网络拓扑中的节点均组成集群提供服务,以便保证数据的单一性的同时提高几群的存续性;还可以在发生拓扑损失后,使当前网络拓扑不受到节点数量的限制而继续提供服务,提高了集群的存续性。
31.例如,在一种情况中,集群中第一授权节点的数量为偶数,在发生拓扑分裂后,分裂得到的两个新的网络拓扑中的授权节点均为原有的一半。在这种情况下,相关技术无法向外提供服务。在另一种情况中,集群中大部分的第一授权节点由同一个电源供电,若该电源突然断电,相关技术判断集群中剩余的节点不占多数,因此无法继续服务。本申请在生成仲裁参数时考虑电源情况,生成的仲裁参数可以考虑电源掉电造成拓扑损失的情况,在发生上述情况或与上述类似的情况时能够进行准确地仲裁,提高集群的存续性。
32.在一种可行的实施方式中,为了保证在任一情况下均可以仲裁成功,仲裁参数可以包括仲裁阈值,利用仲裁阈值对进行仲裁的拓扑结构中的节点数量进行限制。具体的,根据电源情况,利用第一节点数量生成仲裁参数的步骤,可以包括:步骤21:若电源情况为单一供电,则根据第一节点数量的奇偶情况,利用第一节点数量生成仲裁阈值。
33.步骤22:若电源情况为最大单一供电节点数,则根据历史选举集的仲裁盘情况,利用最大单一供电节点数和第一节点数量生成仲裁阈值。
34.步骤23:利用仲裁阈值生成仲裁参数。
35.若电源情况为单一供电,则可以不考虑拓扑损失的情况,因为若发生了拓扑损失,由于所有第一授权节点均由一个电源供电,则整个集群都无法工作。因此在需要进行仲裁时,必然是发生了拓扑分裂。拓扑分裂后得到的新的拓扑中的节点数量与第一节点数量相关,在第一节点数量为奇数时,两个分裂后得到的拓扑的节点数量必然不可能相等;在第一节点数量为偶数时,两个分裂后得到的拓扑节点数量则可能相等。因此在生成仲裁阈值时,需要根据第一节点数量的奇偶情况生成。若电源情况为最大单一供电节点数,则故障可以包括拓扑分裂和拓扑损失两种,在进行仲裁时,可以根据历史选举集中的仲裁盘情况,即判断是否存在仲裁盘,并利用最大单一供电节点数和第一节点数量生成仲裁阈值。仲裁盘即为集群核心数据的存储地址,其具体可以为一块硬盘。当存在仲裁盘时可以通过争抢仲裁盘的方式进行仲裁。在得到仲裁阈值后,利用其生成仲裁参数,具体生成过程不作限制。仲裁参数中除了包括仲裁阈值外,还可以根据实际情况包括其他仲裁规则,以便防止出现两个拓扑均仲裁成功导致数据不一致的问题。
36.具体的,在一种可行的实施方式中,根据所述第一节点数量的奇偶情况,利用所述第一节点数量生成仲裁阈值的步骤可以包括:步骤31:若第一节点数量为奇数,则将第一节点数量加一后除以二,得到仲裁阈值。
37.具体的,若第一节点数量为奇数,则在发生故障后必然存在一个网络拓扑具有更多的节点,因此将第一节点数量加一后除以二,即可得到仲裁阈值,在这种情况下,仲裁阈值可以用n
q
(node)表示,其中:。
38.其中n
e
为第一节点数量。通过选择节点数量更多的网络拓扑作为新的集群,可以保证只有一个网络拓扑能够仲裁成功,同时保证集群的运行能力。
39.步骤32:若第一节点数量为偶数,则判断历史选举集中是否存在仲裁盘。
40.若第一节点数量为偶数,则说明可能出现分裂后两个网络拓扑中节点数量相同的情况,此时需要判断历史选举集中是否存在仲裁盘,进而判断新出现的网络拓扑是否可以通过仲裁盘争抢的方式进行仲裁。
41.步骤33:若存在仲裁盘,则将第一节点数量除以二,得到仲裁阈值。
42.若存在仲裁盘,则说明在两个新的网络拓扑中节点数量相同的情况下,可以通过争抢仲裁盘的方式进行仲裁,因此可以将第一节点数量除以二得到仲裁阈值,即可以成功仲裁的网络拓扑至少需要有原有集群的一半数量的节点。此时,仲裁阈值可以用n
q
(disk)表示,其中:。
43.步骤34:若不存在仲裁盘,则将第一节点数量除以二后加一,得到仲裁阈值。
44.若不存在仲裁盘,则说明无法通过争抢仲裁盘的方式进行仲裁,此时则只能通过节点数量进行仲裁,因此成功仲裁的节点需要有超过第一节点数量半数以上的节点,因此将第一节点数量除以二后加一得到仲裁阈值,仲裁阈值可以用n
q
(node)表示,其中:。
45.具体的,在一种可行的实施方式中,根据历史选举集的仲裁盘情况,利用最大单一供电节点数和第一节点数量生成仲裁阈值的步骤可以包括:步骤41:若历史选举集中存在仲裁盘,则利用第一节点数量减去最大单一供电节点数,得到仲裁阈值。
46.当历史选举集中存在仲裁盘时,说明可以通过争抢仲裁盘的方式完成仲裁,因此参与仲裁的网络拓扑只要不小于第一节点数量减去最大单一供电节点数的差值即可,即若发生了拓扑损失,即使是最大单一供电节点数对应的电源掉线,则剩下的节点同样可以作为集群提供服务。若发生了拓扑分裂,即使分裂后的两个网络拓扑具有相同的节点数,则同样可以基于该仲裁阈值进行仲裁盘争抢,进而完成仲裁。此时,仲裁阈值可以用n
q
(disk)表示,其中:。
47.其中,n
p
为最大单一供电节点数。
48.步骤42:若历史选举集中不存在仲裁盘,则利用第一节点数量减去最大单一供电节点数后加一,得到仲裁阈值。
49.若历史选举集中不存在仲裁盘,则说明无法通过争抢仲裁盘的方式进行仲裁,因此需要在利用第一节点数量减去最大单一供电节点数后加一,得到仲裁阈值。此时,仲裁阈值可以用n
q
(node)表示,其中:。
50.s103:获取当前网络拓扑,并判断当前网络拓扑是否满足仲裁参数。
51.在确定仲裁参数后,获取当前网络拓扑,并判断当前网络拓扑是否满足仲裁参数。
当前网络拓扑即为指定的节点所处的网络拓扑中,其具体可以为拓扑分裂后得到的两个网络拓扑中的任意一个,或者可以为拓扑损失后剩余的节点组成的网络拓扑。在获取当前网络拓扑后,可以确定当前网络拓扑中第二授权节点的数量、仲裁盘情况等,以便后续判断当前网络拓扑是否满足仲裁参数。本实施例并不限定判断当前网络拓扑是否满足仲裁参数的具体判断方式,该具体判断方式与仲裁参数的内容相关,例如当仲裁参数中存在仲裁阈值时,则可以判断当前网络拓扑中的第二授权节点的数量是否小于仲裁阈值。若当前网络拓扑满足仲裁参数,则说明当前网络拓扑中的第二授权节点可以组合起来作为新的集群对外提供服务,因此进入s104步骤。若当前网络拓扑不满足仲裁参数,则可以进入s105步骤。
52.具体的,基于s102步骤中的说明,判断当前网络拓扑是否满足仲裁参数的步骤可以包括:步骤51:判断当前网络拓扑对应的第二授权节点数是否小于仲裁阈值。
53.步骤52:若小于仲裁阈值,则确定不满足仲裁参数。
54.若当前网络拓扑对应的第二授权节点书小于仲裁阈值,则说明当前发生了拓扑分裂,且分裂得到的当前网络拓扑为节点更少的一个网络拓扑,因此其不能作为新的集群对外提供服务,确定其不满足仲裁参数。
55.步骤53:若不小于仲裁阈值,则判断历史选举集是否为目标选举集。
56.需要说明的是,本实施例中的目标选举集为,具有大于一个电源且具有仲裁盘的选举集,或者为具有一个电源、第一授权节点数为偶数且具有仲裁盘的选举集。在历史选举集为目标选举集时,其对应的仲裁阈值均由n
q
(node)表示,且均具有仲裁盘,因此可能需要利用仲裁盘进行仲裁。
57.步骤54:若不为目标选举集,则确定满足仲裁参数。
58.若不为目标选举集,则说明无法通过仲裁盘进行仲裁,也不需要通过仲裁盘进行仲裁,当前网络拓扑中的第二授权节点的数量,即第二授权节点数大于仲裁阈值,说明当前网络拓扑中包括更多的授权节点,因此确定满足仲裁参数。
59.步骤55:若为目标选举集,则判断第二授权节点数是否等于仲裁阈值。
60.具体的,若为目标选举集,则说明可能需要通过争抢仲裁盘的方式进行仲裁,因此进一步判断第二授权节点的数量是否足够多,以至于不需要通过争抢仲裁盘的方式进行仲裁。故判断第二授权节点数是否小于仲裁阈值加一,由于第二授权节点数不小于仲裁阈值,因此相当于判断第二授权节点数是否等于仲裁阈值。
61.步骤56:若不等于仲裁阈值,则确定满足仲裁参数。
62.若第二授权节点数不等于仲裁阈值,则说明第二授权节点数大于仲裁阈值,可以确定当前网络拓扑具有足够多的第二授权节点,因此可以不需要进行仲裁盘争抢,直接确定其满足仲裁参数。
63.步骤57:若等于仲裁阈值,则利用当前网络拓扑的当前仲裁盘情况判断是否满足仲裁参数。
64.若等于仲裁阈值,则说明当前网络拓扑与另一个网络拓扑具有相同的第二授权节点数,需要通过仲裁盘争抢的方式判断是否满足仲裁参数。
65.具体的,在一种实施方式中,步骤57可以包括:步骤61:若当前网络拓扑识别到仲裁盘,则执行仲裁盘争抢,并在争抢成功后确定满足
仲裁参数。
66.步骤62:若当前网络拓扑未识别到仲裁盘,则判断是否存在仲裁节点。
67.步骤63:若存在仲裁节点,则确定满足仲裁参数。
68.步骤64:若不存在仲裁节点,则确定不满足仲裁参数。
69.在本实施例中,若当前网络拓扑识别到仲裁盘,则可以执行仲裁盘争抢操作,即与另外一个网络拓扑争抢仲裁盘的写入权限,在争抢成功后,可以确定当前网络拓扑满足仲裁参数。若当前网络拓扑无法识别到仲裁盘,则可以利用类似于争抢仲裁盘的方式进行仲裁。具体的,可以判断当前网络拓扑中是否存在仲裁节点。仲裁节点具体为非将离状态的第一授权节点中id最小的节点,若所有的第一授权节点均处于将离状态,则仲裁节点为所有第一授权节点中id最小的节点。具体的,将离状态是指该第一授权节点将要受控下线,例如在下一轮计算过后下限,以便接收维护。由于集群的主节点一般也为id最小的授权节点,因此若主节点为将离节点,则在主节点下线后需要重新进行仲裁,因此将仲裁节点具体为非将离状态的第一授权节点中id最小的节点。若所有的第一授权节点均处于将离状态,则按照常规方式,将仲裁节点确定为所有第一授权节点中id最小的节点。因此当在当前网络拓扑中存在仲裁节点,即存在可以作为集群主节点的节点时,确定当前网络拓扑满足仲裁参数。
70.s104:提供集群服务。
71.若当前网络拓扑满足仲裁参数,则说明当前网络拓扑可以作为新的集群对外提供服务,因此在确定当前网络拓扑满足仲裁参数后利用当前网络拓扑提供集群服务。具体提供集群服务的方式不做限定,例如需要进行初始化等操作,在初始化后作为新的集群对外提供服务。
72.s105:预设操作。
73.若不满足仲裁参数,则说明当前网络拓扑无法作为新的集群对外提供服务,且此时发生了拓扑分裂,分裂的另外一个网络拓扑可以作为新的集群对外提供服务,此时可以执行预设操作,预设操作的具体内容不做限定,例如可以控制当前网络拓扑中的各个节点下线,或者退出原本的集群。
74.应用本申请实施例提供的集群仲裁方法,在集群的网络拓扑发生一次分裂或损失的故障后,会获取分裂或损失前的历史选举集对应的第一节点数量和电源情况,并利用其进行是否能够继续作为集群提供服务的仲裁。具体的,仲裁参数利用第一节点数量生成,可以基于原有节点的数量,对故障后的网络拓扑中的节点数量做出限制,保证若发生网络拓扑分裂,则有且仅有一个新的网络拓扑能够作为集群对外提供服务,防止出现两个集群同时对外提供服务引起的数据不一致问题。同时,还可以保证在发生拓扑损失后仅有一个网络拓扑时,确保该网络拓扑中的节点能够作为新的集群对外提供服务。在得到仲裁参数后判断当前网络拓扑是否满足该仲裁参数,若满足,则可以向外提供集群服务,使集群继续工作。该方法并不要求故障后新的网络拓扑中的节点必须为原本集群中的多数,在保证了数据一致性的基础上,使网络拓扑在包含任意数量节点的情况下均可继续工作,改善了集群的存续性。
75.下面对本申请实施例提供的集群仲裁装置进行介绍,下文描述的集群仲裁装置与上文描述的集群仲裁方法可相互对应参照。
76.请参考图2,图2为本申请实施例提供的一种集群仲裁装置的结构示意图,包括:获取模块110,用于获取历史选举集,并利用历史选举集得到第一节点数量和电源情况;生成模块120,用于根据电源情况,利用第一节点数量生成仲裁参数;判断模块130,用于获取当前网络拓扑,并判断当前网络拓扑是否满足仲裁参数;服务模块140,用于若满足仲裁参数,则提供集群服务。
77.可选地,获取模块110,包括:统计单元,用于对历史选举集中的第一授权节点进行统计,得到第一节点数量;供电判断单元,用于获取各个第一授权节点对应的电源信息,判断所有的第一授权节点是否由一个电源供电;单一供电单元,用于若由一个电源供电,则将电源情况确定为单一供电;最大单一供电节点数确定单元,用于若不由一个电源供电,则将电源情况确定为最大单一供电节点数;最大单一供电节点数大于第一节点数量的半数。
78.可选地,生成模块120,包括:第一仲裁阈值生成单元,用于若电源情况为单一供电,则根据第一节点数量的奇偶情况,利用第一节点数量生成仲裁阈值;第二仲裁阈值生成单元,用于若电源情况为最大单一供电节点数,则根据历史选举集的仲裁盘情况,利用最大单一供电节点数和第一节点数量生成仲裁阈值;仲裁参数生成单元,用于利用仲裁阈值生成仲裁参数。
79.可选地,第一仲裁阈值生成单元,包括:第一计算子单元,用于若第一节点数量为奇数,则将第一节点数量加一后除以二,得到仲裁阈值;判断子单元,用于若第一节点数量为偶数,则判断历史选举集中是否存在仲裁盘;第二计算子单元,用于若存在仲裁盘,则将第一节点数量除以二,得到仲裁阈值;第三计算子单元,用于若不存在仲裁盘,则将第一节点数量除以二后加一,得到仲裁阈值。
80.可选地,第二仲裁阈值生成单元,包括:第四计算子单元,用于若历史选举集中存在仲裁盘,则利用第一节点数量减去最大单一供电节点数,得到仲裁阈值;第五计算子单元,用于若历史选举集中不存在仲裁盘,则利用第一节点数量减去最大单一供电节点数后加一,得到仲裁阈值。
81.可选地,判断模块130,包括:第一判断单元,用于判断当前网络拓扑对应的第二授权节点数是否小于仲裁阈值;第一确定单元,用于若小于仲裁阈值,则确定不满足仲裁参数;目标选举集判断单元,用于若不小于仲裁阈值,则判断历史选举集是否为目标选举集;目标选举集为具有大于一个电源且具有仲裁盘的选举集,或者为具有一个电源、第一授权节点数为偶数且具有仲裁盘的选举集;第二确定单元,用于若不为目标选举集,则确定满足仲裁参数;第二判断单元,用于若为目标选举集,则判断第二授权节点数是否等于仲裁阈值;
第三确定单元,用于若不等于仲裁阈值,则确定满足仲裁参数;仲裁盘判断单元,用于若等于仲裁阈值,则利用当前网络拓扑的当前仲裁盘情况判断是否满足仲裁参数。
82.可选地,仲裁盘判断单元,包括:争抢子单元,用于若当前网络拓扑识别到仲裁盘,则执行仲裁盘争抢,并在争抢成功后确定满足仲裁参数;仲裁节点判断子单元,用于若当前网络拓扑未识别到仲裁盘,则判断是否存在仲裁节点;满足确定子单元,用于若存在仲裁节点,则确定满足仲裁参数;不满足确定子单元,用于若不存在仲裁节点,则确定不满足仲裁参数。
83.下面对本申请实施例提供的电子设备进行介绍,下文描述的电子设备与上文描述的集群仲裁方法可相互对应参照。
84.请参考图3,图3为本申请实施例提供的一种电子设备的结构示意图。其中电子设备100可以包括处理器101和存储器102,还可以进一步包括多媒体组件103、信息输入/信息输出(i/o)接口104以及通信组件105中的一种或多种。
85.其中,处理器101用于控制电子设备100的整体操作,以完成上述的集群仲裁方法中的全部或部分步骤;存储器102用于存储各种类型的数据以支持在电子设备100的操作,这些数据例如可以包括用于在该电子设备100上操作的任何应用程序或方法的指令,以及应用程序相关的数据。该存储器102可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(static random access memory,sram)、电可擦除可编程只读存储器(electrically erasable programmable read-only memory,eeprom)、可擦除可编程只读存储器(erasable programmable read-only memory,eprom)、可编程只读存储器(programmable read-only memory,prom)、只读存储器(read-only memory,rom)、磁存储器、快闪存储器、磁盘或光盘中的一种或多种。
86.多媒体组件103可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器102或通过通信组件105发送。音频组件还包括至少一个扬声器,用于输出音频信号。i/o接口104为处理器101和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件105用于电子设备100与其他设备之间进行有线或无线通信。无线通信,例如wi-fi,蓝牙,近场通信(near field communication,简称nfc),2g、3g或4g,或它们中的一种或几种的组合,因此相应的该通信组件105可以包括:wi-fi部件,蓝牙部件,nfc部件。
87.电子设备100可以被一个或多个应用专用集成电路(application specific integrated circuit,简称asic)、数字信号处理器(digital signal processor,简称dsp)、数字信号处理设备(digital signal processing device,简称dspd)、可编程逻辑器件(programmable logic device,简称pld)、现场可编程门阵列(field programmable gate array,简称fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述实施例给出的集群仲裁方法。
88.下面对本申请实施例提供的计算机可读存储介质进行介绍,下文描述的计算机可读存储介质与上文描述的集群仲裁方法可相互对应参照。
89.本申请还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述的集群仲裁方法的步骤。
90.该计算机可读存储介质可以包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
91.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
92.本领域技术人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应该认为超出本申请的范围。
93.结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
94.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系属于仅仅用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语包括、包含或者其他任何变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
95.本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1