集群选举处理方法、装置、设备及存储介质与流程

文档序号:25596444发布日期:2021-06-22 17:15阅读:98来源:国知局
集群选举处理方法、装置、设备及存储介质与流程

本申请涉及分布式集群技术领域,具体而言,涉及一种集群选举处理方法、装置、设备及存储介质。



背景技术:

随着近些年大型互联网公司的诞生,业务复杂性越来越高,系统分工出现微服务化,组件化的发展趋势,因此对系统的抗风险能力提出了更高的要求,高可用的系统架构应运而生。在这种高可用的系统框架中,涉及到通过选举方式确定主节点的技术。

传统的高可用系统架构中,在选举过程中,是从所有节点中选举一主节点,通过选举的主节点控制从节点执行系统任务,当主节点不可用时,系统则触发新的选举,以确定新的主节点。

但是,上述方法在触发新的选举的过程中,会导致整个系统服务暂停,从而降低了系统的高可靠性和高可用性。



技术实现要素:

本申请的目的在于,针对上述现有技术中的不足,提供一种集群选举处理方法、装置、设备及存储介质,以便于解决现有技术中存在的分布式集群系统的可靠性和可用性较差的问题。

为实现上述目的,本申请实施例采用的技术方案如下:

第一方面,本申请实施例提供了一种集群选举处理方法,应用于分布式集群系统,所述分布式集群系统包括:当前的主节点、当前的备节点、至少一个从节点;所述方法包括:

在所述当前的主节点出现故障时,所述当前的备节点切换为所述分布式集群系统的新的主节点;

各所述从节点分别向所述从节点之外的其他从节点发起第一提案信息,并根据所述其他从节点的第一投票信息,选举出新的备节点,得到所述分布式集群系统的新的备节点,所述第一提案信息用于表征竞选新的备节点,所述第一投票信息用于指示所述其他从节点所选择作为备节点的从节点标识。

可选地,所述当前的备节点切换为所述分布式集群系统的新的主节点,包括:

所述新的主节点将目标标识替换为所述新的主节点的节点标识,所述目标标识用于标识所述分布式集群系统的当前的主节点;

所述新的主节点向所述分布式集群系统中除所述新的主节点之外的节点发送同步信息,所述同步信息用于指示所述新的主节点之外的节点将本地存储的目标标识替换为所述新的主节点的节点标识。

可选地,所述在所述当前的主节点出现故障时,所述当前的备节点切换为所述分布式集群系统的新的主节点,包括:

若所述当前的备节点在预设时长内未接收到当前的主节点的心跳信息,则所述当前的备节点向所述分布式集群系统的各从节点发送第二提案信息,所述第二提案信息用于表征由备节点切换至主节点;

接收所述各从节点的第二投票信息,所述第二投票信息用于指示各从节点是否确认当前的主节点出现故障;

根据所述第二投票信息确定切换为所述分布式集群系统的新的主节点。

可选地,所述各所述从节点分别向所述从节点之外的其他从节点发起第一提案信息,并根据所述其他从节点的第一投票信息,选举出新的备节点,包括:

第一从节点向所述第一从节点之外的其他从节点发送第三投票信息,所述第三投票信息用于指示所述第一从节点所选择作为备节点的从节点标识,所述第一从节点为各从节点中的任一从节点;

所述第一从节点接收其他从节点的第一投票信息,所述第一投票信息由所述其他从节点基于接收的提案信息确定;

所述第一从节点根据所述第一投票信息以及本地投票信息,确定待选备节点;

所述第一从节点向所述待选备节点发送确认提案,并由所述待选备节点根据接收到的确认提案数量确定是否将所述待选备节点切换为新的备节点。

可选地,所述第一从节点根据所述第一投票信息以及本地投票信息,确定待选备节点,包括:

所述第一从节点根据所述第一投票信息、本地投票信息以及接收到的来自其他从节点的提案信息,确定待选备节点。

可选地,所述第一从节点根据所述第一投票信息、本地投票信息以及接收到的来自其他从节点的提案信息,确定待选备节点,包括:

若所述第一从节点接收到来自第二从节点的提案信息,且,基于所述第一投票信息以及所述本地投票信息确定所述第二从节点的得票数满足得票阈值,则确定所述第二从节点作为待选备节点。

可选地,还包括:

在所述当前的备节点出现故障时,各所述从节点分别向所述从节点之外的其他从节点发起第一提案信息,并根据所述其他从节点的第一投票信息,选举出新的备节点。

可选地,在所述当前的主节点出现故障时,所述当前的备节点切换为所述分布式集群系统的新的主节点之前,还包括:

在所述分布式集群系统初始化时,从所述分布式集群系统的各节点中选举出初始的主节点,并从除所述初始的主节点之外的各节点中选举出初始的备节点。

第二方面,本申请实施例还提供了一种集群选举处理装置,应用于分布式集群系统,所述分布式集群系统包括:当前的主节点、当前的备节点、至少一个从节点;所述装置包括:切换模块、选举模块;

所述切换模块,用于在所述当前的主节点出现故障时,所述当前的备节点切换为所述分布式集群系统的新的主节点;

所述选举模块,用于各所述从节点分别向所述从节点之外的其他从节点发起第一提案信息,并根据所述其他从节点的第一投票信息,选举出新的备节点,得到所述分布式集群系统的新的备节点,所述第一提案信息用于表征竞选新的备节点,所述第一投票信息用于指示所述其他从节点所选择作为备节点的从节点标识。

可选地,所述切换模块,具体用于所述新的主节点将目标标识替换为所述新的主节点的节点标识,所述目标标识用于标识所述分布式集群系统的当前的主节点;所述新的主节点向所述分布式集群系统中除所述新的主节点之外的节点发送同步信息,所述同步信息用于指示所述新的主节点之外的节点将本地存储的目标标识替换为所述新的主节点的节点标识。

可选地,所述切换模块,具体用于若所述当前的备节点在预设时长内未接收到当前的主节点的心跳信息,则所述当前的备节点向所述分布式集群系统的各从节点发送第二提案信息,所述第二提案信息用于表征由备节点切换至主节点;接收所述各从节点的第二投票信息,所述第二投票信息用于指示各从节点是否确认当前的主节点出现故障;根据所述第二投票信息确定切换为所述分布式集群系统的新的主节点。

可选地,所述选举模块,具体用于第一从节点向所述第一从节点之外的其他从节点发送第三投票信息,所述第三投票信息用于指示所述第一从节点所选择作为备节点的从节点标识,所述第一从节点为各从节点中的任一从节点;所述第一从节点接收其他从节点的第一投票信息,所述第一投票信息由所述其他从节点基于接收的提案信息确定;所述第一从节点根据所述第一投票信息以及本地投票信息,确定待选备节点;所述第一从节点向所述待选备节点发送确认提案,并由所述待选备节点根据接收到的确认提案数量确定是否将所述待选备节点切换为新的备节点。

可选地,所述选举模块,具体用于所述第一从节点根据所述第一投票信息、本地投票信息以及接收到的来自其他从节点的提案信息,确定待选备节点。

可选地,所述选举模块,具体用于若所述第一从节点接收到来自第二从节点的提案信息,且,基于所述第一投票信息以及所述本地投票信息确定所述第二从节点的得票数满足得票阈值,则确定所述第二从节点作为待选备节点。

可选地,所述选举模块,还用于在所述当前的备节点出现故障时,各所述从节点分别向所述从节点之外的其他从节点发起第一提案信息,并根据所述其他从节点的第一投票信息,选举出新的备节点。

可选地,所述选举模块,还用于在所述分布式集群系统初始化时,从所述分布式集群系统的各节点中选举出初始的主节点,并从除所述初始的主节点之外的各节点中选举出初始的备节点。

第三方面,本申请实施例提供了一种电子设备,包括:处理器、存储介质和总线,存储介质存储有处理器可执行的机器可读指令,当电子设备运行时,处理器与存储介质之间通过总线通信,处理器执行机器可读指令,以执行时执行如第一方面中提供的方法的步骤。

第四方面,本申请实施例提供了一种存储介质,该存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如第一方面提供的方法的步骤。

本申请的有益效果是:

本申请提供一种集群选举处理方法、装置、设备及存储介质,该方法包括:在当前的主节点出现故障时,当前的备节点切换为分布式集群系统的新的主节点;各从节点分别向从节点之外的其他从节点发起第一提案信息,并根据其他从节点的第一投票信息,选举出新的备节点,得到分布式集群系统的新的备节点,第一提案信息用于表征竞选新的备节点,第一投票信息用于指示其他从节点所选择作为备节点的从节点标识。本方案中,分布式集群系统可包括主节点和备节点,当主节点发生故障时,备节点可切换至主节点,负责接替主节点的任务。由于备节点是预先确定的,当主节点发生故障时,则可直接进行切换,切换耗时较小,相比于现有技术中,在主节点发生故障时,各从节点才触发新的选举,确定新的主节点,导致在选举的过程中系统的服务暂停,本申请的方法由于是直接切换,可保证系统的持续性工作,提升系统的高可用性和可靠性。另外,在备节点切换至主节点后,各从节点会即刻触发选举新的备节点,以保证系统中时刻具有备节点,从而可保证切换的连续性,进一步地提升系统的可用性。

另外,通过备节点监督主节点,各从节点监督备节点的方式,可使得系统中各节点的分工更加明确,系统架构的可靠性更高,不会因主节点故障而造成集群不可用。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本申请实施例提供的一种分布式集群系统的架构示意图;

图2为本申请实施例提供的一种集群选举处理方法的流程示意图;

图3为本申请实施例提供的另一种集群选举处理方法的流程示意图;

图4为本申请实施例提供的一种信息同步示意图;

图5为本申请实施例提供的又一种集群选举处理方法的流程示意图;

图6为本申请实施例提供的一种备节点切换主节点的确认示意图;

图7为本申请实施例提供的另一种集群选举处理方法的流程示意图;

图8为本申请实施例提供的一种集群广播过程示意图;

图9为本申请实施例提供的一种确认提案示意图;

图10为本申请实施例提供的一种集群选举处理装置的示意图;

图11为本申请实施例提供的一种电子设备的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。

另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。

需要说明的是,本申请实施例中将会用到术语“包括”,用于指出其后所声明的特征的存在,但并不排除增加其它的特征。

首先,对本申请可能涉及的一些名词术语进行说明:

1、执政领袖(rulingleader):简称rl,正在提供leader(领导)服务的节点,也即主节点,其他follower(跟随者)的数据从该节点同步。

2、监督者领袖(oppositionleader):简称ol,后备的leader节点,也即备节点,在rl不能提供服务时进行切换。

3、跟随者(follow):简称f,真正提供服务的节点,具有投票权,从rl同步数据并监控rl的状况。

4、选举:当服务启动或者rl不可服务时整个集群选出新的rl或者ol的过程。

5、换届:rl不可用时由ol转为rl的过程。

6、选举期:整个集群启动时到选出rl,ol之间的时期。

7、切换期:ol切换为rl的时期。

8、执政期:rl控制整个集群提供正常服务的时期。

9、提案(proposal):一次选举的投票内容。

图1为本申请实施例提供的一种分布式集群系统的架构示意图,本申请下述实施例所提供的集群选举处理方法应用于该分布式集群系统中,如图1所示,该分布式集群系统可包括:主节点、备节点和至少一个从节点,主节点用于控制整个集群系统任务的执行,备节点作为主节点的备选节点,用于在主节点不可用时切换为主节点,保证系统的不间断任务执行。从节点作为任务的真正执行者,在接收到主节点下发的任务信息后,根据任务信息执行相应的任务。

可选地,备节点可通过心跳监测,监测主节点是否发生异常,在预设时长未监测到主节点的心跳时,向从节点发起切换到主节点的提案,从节点根据各自监测主节点的心跳情况,选择接受或拒绝备节点的提案,当超过半数的从节点接受备节点的提案后,备节点切换至主节点,成为新的主节点。

当备节点切换至主节点后,各从节点之间又通过提案和投票,竞选备节点,以保证集群系统中时刻都预备有备节点,以在主节点不可用时能够及时切换,减少了服务中断的时间,保证系统的不间断运行,提高系统的高可用性。

图2为本申请实施例提供的一种集群选举处理方法的流程示意图;该方法的执行主体可以是分布式集群系统中的任一节点。分布式集群系统包括:当前的主节点、当前的备节点、至少一个从节点;如图2所示,该方法可包括:

s201、在当前的主节点出现故障时,当前的备节点切换为分布式集群系统的新的主节点。

通常,分布式集群系统是由多个服务器或者计算机通过分布式排列构成的系统,每个服务器或者计算机可作为系统中的一个节点,多个节点之间可相互协作,整个系统的功能是分散在各个节点上实现的,从而达到系统的高可用性。

需要说明的是,任意当前时刻的主节点也即称为当前的主节点,例如:当前时刻为10点,那么10点时候系统中的主节点假设为a,则主节点a则为当前的主节点,当前时刻变为11点时,假设11点时候系统的主节点为b,则主节点b则为当前的主节点。

可选地,本申请的分布式集群系统中,在系统启动之初,系统中各节点之间通过竞选投票,选举得到初始的主节点和初始的备节点,其余未竞选成功的节点作为从节点。初始的主节点在接收到任务请求时,将任务请求发送至各从节点,以使得各从节点执行任务,维持系统的服务。

在一些情况下,由于主节点的负荷过重,或者是主节点硬件设备发生故障,会导致主节点宕机不可用。在当前的主节点出现故障时,当前的备节点可切换至主节点,成为系统中新的主节点,执行主节点的任务。由于备节点是预先确定好的,在主节点发生故障时,可通过切换的方式立刻切换为主节点,执行主节点的任务,可保证系统的不间断运行,提升系统的高可用性。

s202、各从节点分别向从节点之外的其他从节点发起第一提案信息,并根据其他从节点的第一投票信息,选举出新的备节点,得到分布式集群系统的新的备节点,第一提案信息用于表征竞选新的备节点,第一投票信息用于指示其他从节点所选择作为备节点的从节点标识。

可选地,在当前的备节点切换至主节点后,由于系统中不存在备节点了,故,各个从节点之间可立刻触发备节点的竞选,通过竞选,选举出新的备节点,以保证系统中时刻存在备节点,以在主节点发生故障时能保证实时切换。

在一种可实现的方式中,每个从节点可分别向除自身之外的其他从节点发送第一提案信息,同时也可接收其他从节点向自己发送的第一提案信息,第一提案信息用于表征从节点竞选备节点。可选地,每个从节点可以广播的形式在集群中广播自身的提案信息以通知到其他从节点。

每个从节点同时还可接收到其他从节点发送的第一投票信息,第一投票信息用于表示其他从节点所选择的投票对象,以使得每个从节点可根据接收的其他从节点的第一投票信息进行计票。从而根据计票结果,选举出新的备节点,将其作为分布式集群系统的新的备节点。

当上述由当前的备节点切换至新的主节点的节点再次发生故障时,则可由该选举出的新的备节点切换至新的主节点,依此延续执行,保证系统的高可用性。

综上,本实施例提供的集群选举处理方法,包括:在当前的主节点出现故障时,当前的备节点切换为分布式集群系统的新的主节点;各从节点分别向从节点之外的其他从节点发起第一提案信息,并根据其他从节点的第一投票信息,选举出新的备节点,得到分布式集群系统的新的备节点,第一提案信息用于表征竞选新的备节点,第一投票信息用于指示其他从节点所选择作为备节点的从节点标识。本方案中,分布式集群系统可包括主节点和备节点,当主节点发生故障时,备节点可切换至主节点,负责接替主节点的任务。由于备节点是预先确定的,当主节点发生故障时,则可直接进行切换,切换耗时较小,相比于现有技术中,在主节点发生故障时,各从节点才触发新的选举,确定新的主节点,导致在选举的过程中系统的服务暂停,本申请的方法由于是直接切换,可保证系统的持续性工作,提升系统的高可用性和可靠性。另外,在备节点切换至主节点后,各从节点会即刻触发选举新的备节点,以保证系统中时刻具有备节点,从而可保证切换的连续性,进一步地提升系统的可用性。

图3为本申请实施例提供的另一种集群选举处理方法的流程示意图;可选地,如图3所示,步骤s201中,当前的备节点切换为分布式集群系统的新的主节点,可以包括:

s301、新的主节点将目标标识替换为新的主节点的节点标识,目标标识用于标识分布式集群系统的当前的主节点。

通常,每个节点自身标记的数据中均会包括rlid,olid,其中,rlid也即主节点的标识,olid表示备节点的标识,而在任意时刻,节点中标记的rlid和olid都为当前最新的主节点标识和备节点标识。

可选地,在当前的备节点切换为新的主节点之后,新的主节点需要将自身所标记的目标标识替换为新的主节点的节点标识,也即,替换为发生切换的备节点的节点标识。其中,目标标识标识的为分布式集群系统的当前的主节点,在切换后,当前的主节点也即上述新的主节点。

举例说明,当前的主节点为节点a,此时所标记的目标标识即为节点a的标识,在当前的主节点a发生故障后,当前的备节点b切换为新的主节点,在备节点b切换之前,备节点所标记的目标标识为节点a的标识,而在备节点b切换之后,备节点b变为了新的主节点,由于主节点发生了变化,那么,新的主节点b所标记的目标标识则由之前的节点a的标识替换为节点b的标识。

s302、新的主节点向分布式集群系统中除新的主节点之外的节点发送同步信息,同步信息用于指示新的主节点之外的节点将本地存储的目标标识替换为新的主节点的节点标识。

在一些实施例中,新的主节点在将自身标记的目标标识替换为新的主节点的标识后,还可向除自身之外的其他节点发送同步信息,以将新的主节点的标识同步给其他节点,以指示其他节点将本地所标记的目标标识同样替换为新的主节点的节点标识。

图4为本申请实施例提供的一种信息同步示意图。如图4所示,假设通过上述的方式确定备节点a切换为新的主节点,而其他的节点分别包括:节点b、节点c、节点d、节点e,新的主节点a的目标标识为id001,则新的主节点a将目标标识id001同步给节点b、节点c、节点d、节点e。

需要说明的是,节点b、节点c、节点d、节点e中其中一个节点可以为发生故障的主节点,虽然发生故障的主节点可能因故障会收不到同步信息,但是在进行同步时,是对除自身之外的其他所有节点进行同步,不排除同步给发生故障的主节点。

图5为本申请实施例提供的又一种集群选举处理方法的流程示意图;可选地,步骤s201中,在当前的主节点出现故障时,当前的备节点切换为分布式集群系统的新的主节点,可以包括:

s501、若当前的备节点在预设时长内未接收到当前的主节点的心跳信息,则当前的备节点向分布式集群系统的各从节点发送第二提案信息,第二提案信息用于表征由备节点切换至主节点。

通常,作为系统中的主节点,其在担任主节点职责的过程中,会间隔预设时长向系统中的备节点和从节点发送心跳信息,其中,心跳信息可以指自定义的结构体(心跳包),用于让备节点和从节点对主节点进行监测,以确保连接的有效性。其中,间隔的预设时长可以为几秒,具体可以根据实际情况适应性设置。

本方案中,备节点作为监督者,用来实施监控主节点的状态。若当前的备节点在预设时长内未接收到当前的主节点的心跳信息时,则可以向各从节点发送第二提案信息,以向各从节点声明切换为主节点,并进入等待状态。

可选地,通过备节点监督主节点,各从节点监督备节点的方式,可使得系统中各节点的分工更加明确,系统架构的可靠性更高,不会因主节点故障而造成集群不可用。

图6为本申请实施例提供的一种备节点切换主节点的确认示意图。假设备节点为节点e,从节点包括:节点b、节点c、节点d。则备节点e分别节点b、节点c、节点d发送第二提案信息。

s502、接收各从节点的第二投票信息,第二投票信息用于指示各从节点是否确认当前的主节点出现故障。

可选地,如图6所示,各从节点在接收到备节点发送的第二提案信息后,可根据自身所监测的主节点的心跳信息确定第二投票信息,从而给备节点发送第二投票信息。

可选地,每个从节点可根据自身监测的主节点的心跳信息进行投票,当任一从节点在接收到备节点的第二提案信息后,发现可监测到主节点的心跳信息,则该从节点确认主节点未出现故障,会向备节点发送拒绝提案的第二投票信息。而当任一从节点在接收到备节点的第二提案信息后,发现未能监测到主节点的心跳信息,则该从节点确认主节点出现故障,会向备节点发送接受提案的第二投票信息。

s503、根据第二投票信息确定切换为分布式集群系统的新的主节点。

在一种可实现的方式中,备节点可根据所接收的各从节点发送的第二投票信息,确定是否切换为新的主节点。

可选地,若备节点接收的第二投票信息中,接受提案的第二投票信息的数量超过总投票节点数的一半,则确定可切换至新的主节点。其中总投票节点数指的是所有参与投票的节点的数量。

图7为本申请实施例提供的另一种集群选举处理方法的流程示意图;可选地,步骤s202中,各从节点分别向从节点之外的其他从节点发起第一提案信息,并根据其他从节点的第一投票信息,选举出新的备节点,可以包括:

s701、第一从节点向第一从节点之外的其他从节点发送第三投票信息,第三投票信息用于指示第一从节点所选择作为备节点的从节点标识,第一从节点为各从节点中的任一从节点。

本实施例中以各从节点中的任一从节点的角度对选举新的备节点的方法进行说明。

图8为本申请实施例提供的一种集群广播过程示意图。假设在除主节点和备节点之外,其他的从节点包括节点a、节点b、节点c、节点d、节点e,在各从节点竞选新的备节点的过程中,如图8所示,每个从节点均可以向其他任意的节点发起第一提案信息,同时每个从节点也可以对其他任意的从节点发起的提案信息进行投票。

以第一从节点为例,第一从节点可向除自身之外的其他从节点发送第三投票信息,第三投票信息用于指示第一从节点所选择的投票对象,其中,投票对象可以指第一从节点所认可能作为备节点的从节点。

s702、第一从节点接收其他从节点的第一投票信息,第一投票信息由其他从节点基于接收的提案信息确定。

第一从节点在向其他从节点发送投票信息的同时,也可接收其他从节点的第一投票信息,以使得第一从节点可根据各其他从节点的第一投票信息进行计票。

其中,各从节点的第一投票信息可根据各从节点接收的其他从节点发送的提案信息进行确定。其中,每个节点发送的提案信息可包括:节点的标识、以及时间戳,其中时间戳可以指发起提案信息的时间戳。

如下表1所示的为节点a、节点b、节点c、节点d、节点e之间的提案信息广播表。

表1

以节点a为例,节点a可根据接收的节点b、节点c、节点d、节点e分别发送的第一提案信息,确定自己的第一投票信息进行投票。

在一种可实现的方式中,若节点a所接收的各第一提案信息中,各第一提案信息的vote均不相同,则确定vote最小的节点为节点a的投票对象,而若存在至少两个节点的vote相同,则在具有相同vote的节点中确定id最小的节点为节点a的投票对象。根据表1中节点a接收的提案信息,按照上述规则,可确定节点a的投票对象为自己,也即节点a的第一投票信息为id001,也即节点a,同理,可得出节点b的第一投票信息也为id001节点a,节点c、节点d、节点e的第一投票信息均为id001节点a。

s703、第一从节点根据第一投票信息以及本地投票信息,确定待选备节点。

可选地,第一从节点可根据接收的各从节点发送的第一投票信息、以及自身的投票信息,确定待选备节点。其中,可根据各第一投票信息和自身的投票信息,确定获得的投票数超过参与投票的节点总数量一半的节点为待选备节点。

例如:假设节点a为第一节点,节点a的本地投票为投给节点a,节点a接收的节点b的投票也为投给节点a,节点a接收的节点c的投票也为投给节点a,这样,节点a当前计票结果为自己三票,而总的参与投票的包括节点a、节点b、节点c、节点d、节点e,总共五个,这样节点a的计票为三,超过五的一半,则节点a可确定节点a为待选备节点。同样节点b、节点c、节点d、节点e均可根据自身的计票结果,确定待选备节点为节点a。

s704、第一从节点向待选备节点发送确认提案,并由待选备节点根据接收到的确认提案数量确定是否将待选备节点切换为新的备节点。

可选地,第一从节点即可向自己所确认的待选备节点发送确认提案,并等待公布状态,而对于待选备节点而言,待选备节点可根据自己所接收到的确认提案的数量,确定自己是否成为新的备节点。

图9为本申请实施例提供的一种确认提案示意图。如图所示,根据上述可知,各节点均确定节点a为待选备节点,则节点节点b、节点c、节点d、节点e均会向节点a发送确认提案信息。

其中,当待选备节点判断所接收的确认提案的数量超过参与投票的所有节点的半数,也即超过5,则向各从节点公布自己成为新的备节点,从而由待选备节点切换为新的备节点。

可选地,步骤s703中,第一从节点根据第一投票信息以及本地投票信息,确定待选备节点,可以包括:第一从节点根据第一投票信息、本地投票信息以及接收到的来自其他从节点的提案信息,确定待选备节点。

在一些实施例中,部分从节点根据自身的运行状态等,确认自己无法承担备节点的职责,故可能会放弃竞选,也即不向其他从节点发送第一提案信息,但是依然会对接收的其他从节点的第一提案信息进行投票。

可选地,第一从节点在确定待选备节点时,还会进一步地参考所接收的其他从节点发送的提案信息,并从发送了第一提案信息的从节点中,根据第一投票信息、本地投票信息,确定待选备节点。

可选地,上述步骤中,第一从节点根据第一投票信息、本地投票信息以及接收到的来自其他从节点的提案信息,确定待选备节点,可以包括:

若第一从节点接收到来自第二从节点的提案信息,且,基于第一投票信息以及本地投票信息确定第二从节点的得票数满足得票阈值,则确定第二从节点作为待选备节点。

其中,得票阈值已在如上实施例中举例说明,得票阈值可以根据参与投票的节点的总数确定,在本申请中,可将得票阈值设定为参与投票的节点总数的一半,也即,在第二从节点的得票超过半数时,则可确定第二从节点作为待选备节点。

可选地,本申请的方法还可包括:在当前的备节点出现故障时,各从节点分别向从节点之外的其他从节点发起第一提案信息,并根据其他从节点的第一投票信息,选举出新的备节点。

上述实施例中对于主节点发生故障的情况下,由备节点切换至主节点,并重新选举新的备节点的方案进行了说明。然而在实际应用中,一些情况下,可能主节点是正常运行的,而备节点因硬件设备故障或者是载荷问题等发生了故障,无法正常运行,在这种情况下,为了保证在主节点故障时,有备节点能够及时切换,则需要立刻选举新的备节点,以做备用。

可选地,除了发生故障的主节点和发生故障的备节点之外的其他从节点之间可进行新的备节点的选举,而具体的选举过程与图2中,在当前的主节点发生故障的情况下,当前的备节点切换至新的主节点,之后其他从节点选举新的备节点的过程类似,此处不再一一赘述。

可选地,步骤s201中,在当前的主节点出现故障时,当前的备节点切换为分布式集群系统的新的主节点之前,本申请的方法还可包括:在分布式集群系统初始化时,从分布式集群系统的各节点中选举出初始的主节点,并从除初始的主节点之外的各节点中选举出初始的备节点。

可选地,在系统启动之初,系统中的各节点可通过投票选举,竞选产生初始的主节点和初始的备节点,其中,在竞选初始的主节点时,系统中的所有节点均可参与竞选,而在确定了初始的主节点后,对于初始的备节点的选举,则是在除了初始的主节点之外的其他节点中进行选举。而具体的选举方式与前述对于新的备选节点的选举方式类似,此处不再赘述。

综上所述,本申请实施例提供的集群选举处理方法,包括:在当前的主节点出现故障时,当前的备节点切换为分布式集群系统的新的主节点;各从节点分别向从节点之外的其他从节点发起第一提案信息,并根据其他从节点的第一投票信息,选举出新的备节点,得到分布式集群系统的新的备节点,第一提案信息用于表征竞选新的备节点,第一投票信息用于指示其他从节点所选择作为备节点的从节点标识。本方案中,分布式集群系统可包括主节点和备节点,当主节点发生故障时,备节点可切换至主节点,负责接替主节点的任务。由于备节点是预先确定的,当主节点发生故障时,则可直接进行切换,切换耗时较小,相比于现有技术中,在主节点发生故障时,各从节点才触发新的选举,确定新的主节点,导致在选举的过程中系统的服务暂停,本申请的方法由于是直接切换,可保证系统的持续性工作,提升系统的高可用性和可靠性。另外,在备节点切换至主节点后,各从节点会即刻触发选举新的备节点,以保证系统中时刻具有备节点,从而可保证切换的连续性,进一步地提升系统的可用性。

另外,通过备节点监督主节点,各从节点监督备节点的方式,可使得系统中各节点的分工更加明确,系统架构的可靠性更高,不会因主节点故障而造成集群不可用。

下述对用以执行本申请所提供的集群选举处理方法的装置、设备及存储介质等进行说明,其具体的实现过程以及技术效果参见上述,下述不再赘述。

图10为本申请实施例提供的一种集群选举处理装置的示意图,该集群选举处理装置实现的功能对应上述方法执行的步骤。该装置可以理解为上述的任一节点所对应的服务器,或服务器的处理器,也可以理解为独立于上述服务器或处理器之外的在服务器控制下实现本申请功能的组件,如图10所示,该装置可包括:切换模块910、选举模块920;

切换模块910,用于在当前的主节点出现故障时,当前的备节点切换为分布式集群系统的新的主节点;

选举模块920,用于各从节点分别向从节点之外的其他从节点发起第一提案信息,并根据其他从节点的第一投票信息,选举出新的备节点,得到分布式集群系统的新的备节点,第一提案信息用于表征竞选新的备节点,第一投票信息用于指示其他从节点所选择作为备节点的从节点标识。

可选地,切换模块910,具体用于新的主节点将目标标识替换为新的主节点的节点标识,目标标识用于标识分布式集群系统的当前的主节点;新的主节点向分布式集群系统中除新的主节点之外的节点发送同步信息,同步信息用于指示新的主节点之外的节点将本地存储的目标标识替换为新的主节点的节点标识。

可选地,切换模块910,具体用于若当前的备节点在预设时长内未接收到当前的主节点的心跳信息,则当前的备节点向分布式集群系统的各从节点发送第二提案信息,第二提案信息用于表征由备节点切换至主节点;接收各从节点的第二投票信息,第二投票信息用于指示各从节点是否确认当前的主节点出现故障;根据第二投票信息确定切换为分布式集群系统的新的主节点。

可选地,选举模块920,具体用于第一从节点向第一从节点之外的其他从节点发送第三投票信息,第三投票信息用于指示第一从节点所选择作为备节点的从节点标识,第一从节点为各从节点中的任一从节点;第一从节点接收其他从节点的第一投票信息,第一投票信息由其他从节点基于接收的提案信息确定;第一从节点根据第一投票信息以及本地投票信息,确定待选备节点;第一从节点向待选备节点发送确认提案,并由待选备节点根据接收到的确认提案数量确定是否将待选备节点切换为新的备节点。

可选地,选举模块920,具体用于第一从节点根据第一投票信息、本地投票信息以及接收到的来自其他从节点的提案信息,确定待选备节点。

可选地,选举模块920,具体用于若第一从节点接收到来自第二从节点的提案信息,且,基于第一投票信息以及本地投票信息确定第二从节点的得票数满足得票阈值,则确定第二从节点作为待选备节点。

可选地,选举模块920,还用于在当前的备节点出现故障时,各从节点分别向从节点之外的其他从节点发起第一提案信息,并根据其他从节点的第一投票信息,选举出新的备节点。

可选地,选举模块920,还用于在分布式集群系统初始化时,从分布式集群系统的各节点中选举出初始的主节点,并从除初始的主节点之外的各节点中选举出初始的备节点。

上述装置用于执行前述实施例提供的方法,其实现原理和技术效果类似,在此不再赘述。

以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(applicationspecificintegratedcircuit,简称asic),或,一个或多个微处理器(digitalsingnalprocessor,简称dsp),或,一个或者多个现场可编程门阵列(fieldprogrammablegatearray,简称fpga)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(centralprocessingunit,简称cpu)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,简称soc)的形式实现。

上述模块可以经由有线连接或无线连接彼此连接或通信。有线连接可以包括金属线缆、光缆、混合线缆等,或其任意组合。无线连接可以包括通过lan、wan、蓝牙、zigbee、或nfc等形式的连接,或其任意组合。两个或更多个模块可以组合为单个模块,并且任何一个模块可以分成两个或更多个单元。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考方法实施例中的对应过程,本申请中不再赘述。

需要说明的是,以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(applicationspecificintegratedcircuit,简称asic),或,一个或多个微处理器(digitalsingnalprocessor,简称dsp),或,一个或者多个现场可编程门阵列(fieldprogrammablegatearray,简称fpga)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(centralprocessingunit,简称cpu)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,简称soc)的形式实现。

图11为本申请实施例提供的一种电子设备的结构示意图,该设备可以是具备数据处理功能的计算设备。

该设备包括:处理器801、存储器802。

存储器802用于存储程序,处理器801调用存储器802存储的程序,以执行上述方法实施例。具体实现方式和技术效果类似,这里不再赘述。

其中,存储器802存储有程序代码,当程序代码被处理器801执行时,使得处理器801执行本说明书上述“示例性方法”部分中描述的根据本申请各种示例性实施方式的集群选举处理方法中的各种步骤。

处理器801可以是通用处理器,例如中央处理器(cpu)、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(fieldprogrammablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。

存储器802作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(randomaccessmemory,ram)、静态随机访问存储器(staticrandomaccessmemory,sram)、可编程只读存储器(programmablereadonlymemory,prom)、只读存储器(readonlymemory,rom)、带电可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、磁性存储器、磁盘、光盘等等。存储器是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器802还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。

可选地,本申请还提供一种程序产品,例如计算机可读存储介质,包括程序,该程序在被处理器执行时用于执行上述方法实施例。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(英文:read-onlymemory,简称:rom)、随机存取存储器(英文:randomaccessmemory,简称:ram)、磁碟或者光盘等各种可以存储程序代码的介质。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1