一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种集群中主节点的选举方法、装置、设备及存储介质与流程

2022-02-21 08:02:55 来源:中国专利 TAG:


1.本发明实施例涉及数据库领域,尤其涉及一种集群中主节点的选举方法、装置、设备及存储介质。


背景技术:

2.raft是一种管理日志复制的一致性算法,选举领导者时唯一的要求是选出的领导节点拥有的日志比集群内其他节点各自所拥有的日志要新或者至少一样新。raft要求当前领导者仍然有效、没有超时的节点拒绝投票给其他节点从而避免其他节点选举成主节点,这样可以很大程度上避免由于跟随者网络故障等原因造成集群中领导节点切换,但原主节点仍然需要经过“领导者-》跟随者-》领导者”的模式切换过程重新选举成领导者,从而使得主节点频繁的发生切换。
3.raft协议可以被应用到传统的数据守护集群中。在数据库系统中,集群中主库节点切换为备库的代价是十分高昂的。对于数据库系统本身,模式切换需要进行当前事务的终止和回滚、回滚页的清理和日志的截断,在数据系统压力很大的情况下,这个过程会耗费很长时间。由于对外提供服务的节点(主节点)切换为了不对外提供服务的状态(从节点),切换过程还会造成当前会话的断开和当前操作的失败,很可能未提交的大量数据全部被丢弃,影响数据库服务的流畅性和可靠性。


技术实现要素:

4.本发明提供一种发明名称,以实现在各种故障场景中主从节点的不频繁切换。
5.第一方面,本发明实施例提供了一种集群中主节点的选举方法,该方法由集群中作为节点的计算机设备执行,包括:
6.集群中的原主节点向各从节点发送消息报文,并接收各所述从节点相对所述消息报文反馈的消息回复报文,其中,所述原主节点预先采用给定的一致性协议算法确定;
7.当所述原主节点接收到至少一个包含任期已过期的目标消息回复报文时,基于各所述目标消息回复报文更新自身集群任期号,并发起选举及执行所述一致性协议算法中的选举操作。
8.第二方面,本发明实施例还提供了一种集群中主节点的选举装置,该装置由集群中作为节点的计算机设备执行,包括:
9.消息接收模块,用于集群中的原主节点向各从节点发送消息报文,并接收各所述从节点相对所述消息报文反馈的消息回复报文,其中,所述原主节点预先采用给定的一致性协议算法确定;
10.选举及执行模块,用于当所述原主节点接收到至少一个包含任期已过期的目标消息回复报文时,基于各所述目标消息回复报文更新自身集群任期号,并发起选举及执行所述一致性协议算法中的选举操作。
11.第三方面,本发明实施例还提供了一种计算机设备,该设备作为集群中的节点,包
括:
12.一个或多个处理器,
13.存储装置,用于存储一个或多个程序,
14.当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述第一方面所述的集群中主节点的选举方法。
15.第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述如第一方面所述的集群中主节点的选举方法。
16.本发明实施例所提供的技术方案中,通过集群中的原主节点向各从节点发送消息报文,并接收各从节点相对消息报文反馈的消息回复报文,其中,原主节点预先采用给定的一致性协议算法确定;然后当原主节点接收到至少一个包含任期已过期的目标消息回复报文时,基于各目标消息回复报文更新自身集群任期号,并发起选举及执行一致性协议算法中的选举操作。本实施例上述技术方案,当原主节点接收到至少一个包含任期已过期的目标消息回复报文消息时,基于各目标消息回复报文更新自身集群任期号,并发起选举,有效避免集群中主节点频繁切换为从节点,提升数据库服务的流畅性和可靠性,从而提升集群性能和用户体验。与现有技术中集群中主库节点切换为备库相比,所采用的集群中主节点的选举方法,在各种故障场景中减少主库切换次数,即使发生选举也尽可能使原主库重新选举成功,不需要切为备库,从而提升集群性能和用户体验。此外,本实施例上述技术方案有效避免了主、从节点的频繁切换次数,从而避免了数据库中大量数据的丢失,从而提升数据库服务的流畅性以及可靠性,从而在一定程度上提升集群的性能和用户的体验。
附图说明
17.图1是本发明实施例一中的提供的一种集群中主节点的选举方法的流程图;
18.图2是本发明实施例二中的提供的一种集群中主节点的选举装置的流程图;
19.图3是本发明实施例三中的提供的一种计算机设备的结构示意图。
具体实施方式
20.下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
21.为便于验证现有技术中一种集群中主节点的选举方法的应用,给出了现有技术中一种集群中主节点的选举方法的相关流程为:从节点网络异常,收不到主节点消息,自增任期号发起选举。从节点网络恢复后,收到了主节点定时发送的消息报文,并进行消息报文回复,告知主节点“主节点任期号已过期”。主节点收到消息报文回复,更新任期号为消息报文回复中的任期号,切换为从节点。此中方法中从节点在发起选举前,先切换为从节点,等待选举超时,再发起选举。正常的主节点必须切换为从节点,从而导致正常主节点进行不必要的主、从节点的切换,增加了主、从节点的切换频率。
22.为便于验证现有技术中又一种集群中主节点的选举方法的应用,给出了现有技术中另一种集群中主节点的选举方法的相关流程为:原主节点网络异常时,集群内任期更新选出新主节点。原主节点网络异常期间任期号不变,网络恢复后以自身任期号向其他节点
发送消息报文。其他节点收到原主节点的消息报文,然后进行消息报文回复。原主节点收到任期号更大的消息报文回复,更新任期号为此任期号,切为从节点。如果原主节点先收到新主节点的消息报文,原主节点会直接加回集群;如果是原主节点先发起选举,则进行原主节点与新主节点竞选。此种方法中新主节点还是会在此切换为从节点。
23.实施例一
24.图1是本发明实施例一中的提供的一种集群中主节点的选举方法的流程图,本实施例可适用于主、从节点频繁发生切换时的情况,该方法可以由一种集群中主节点的选举装置来执行,该装置可配置于计算机设备中。
25.集群是一组相互独立的、通过高速网络互联的计算机设备,它们构成了一个组,并以单一系统的模式加以管理。集群作为一个整体,对用户提供服务。一个用户与集群相互作用时,集群像是一个独立的服务器。集群配置是用于提高可用性和可缩放性。计算机设备相当于是集群中的节点,集群中的节点可以理解为一个服务器,集群中的节点都是等价的,用户可以登录集群中的任意一个节点,获得完整的数据库服务。其装有一套数据库系统,一个节点就是数据库的整个系统。其中,数据库系统是用于数据存储、分析,事务处理的数据库,可进行一些数据的存储,例如在业务上的一些日志数据。
26.集群中主节点的选举方法具体包括如下步骤:
27.s110、集群中的原主节点向各从节点发送消息报文,并接收各从节点相对消息报文反馈的消息回复报文,其中,原主节点预先采用给定的一致性协议算法确定。
28.其中,原主节点可以理解为集群中的原领导者。从节点可以理解为集群中原主节点的所有跟随者。原主节点是预先采用给定的一致性协议算法来确定的。
29.在本实施例中,消息报文为集群中的原主节点向各从节点发送的消息。通常,消息报文从集群中的原主节点启动时开始发送,直到集群中的原主节点关闭,期间集群中的原主节点会不间断的发送周期性的或重复的消息。当各从节点在某个消息接收周期内未收到消息报文,各从节点可能会认为集群中的原主节点出现已经关闭、出现故障、或者当前不可用等问题。
30.需要说明的是,集群中原主节点会向各个节点发送消息报文,可以包括心跳消息,也可以包括日志包,还可以包括等待日志包应用完成等消息,本实施例在此不做限制。其中,日志包分为两种类型,一种是同步日志包,主节点将当前的日志记录实时发送给从节点;另一种是异步日志包,主节点从日志归档中找出从节点需要的日志记录发送给从节点,用于恢复从节点因故障缺失的日志。
31.需要说明的是,心跳消息可以理解为不包含操作步骤的日志,心跳消息包含原主节点的任期号、当前已提交的日志包序号以及写入的日志包序号等,用于避免原主节点选举超时。每当各从节点收到原主节点的消息报文,需要对原主节点进行消息回复报文,消息回复报文中含有各从节点当前的任期号。其中,日志可具体为重做日志,重做日志(即redo日志)可以理解为在dm数据库中添加、删除、修改对象,或者改变数据,dm都会按照特定的格式,将这些操作执行的结果写入到当前的重做日志中。重做日志主要用于数据库的备份与恢复。数据库缓冲区中的数据页会来不及写入数据文件,在重启dm实例时,通过重做日志中的信息,就可以将数据库的状态恢复到发生意外时的状态。集群中通过日志同步数据的更改,从节点收到主节点的日志后通过重演将相同的更改应用到本机中,保证本机的数据与
主机一致。
32.需要说明的是,回复报文可以包含心跳回复,也可以包含日志包回复,还可以包含请求投票回复等等,本实施例对此不做限制。在不同场景下收到的消息回复报文可能不同。示例性的,在发送心跳消息时,会进行心跳消息的回复;在发送投票消息后,会进行请求投票回复;在需要异步恢复时,会进行异步恢复的系列回复。本实施例对此不做限制。
33.可以知道的是,在一个正常的数据库集群中,主节点和其他从节点的日志都是同步的,保持一致状态。如果某个节点出现故障,那么会导致本节点和其它节点的日志不一致,此时需要根据情况决定是截断多余的日志还是补齐缺失的日志。
34.需要说明的是,集群中原主节点向各个从节点发送的消息报文,若原主节点发生网络异常而其他从节点均处于网络正常状态,则原主节点不能向各个从节点发送消息报文,网络恢复以后可以再次向各个从节点发送消息报文;若原主节点处于网络正常状态而其他某个从节点或多个从节点出现网络异常,则异常网络的从节点接收不到原主节点所发送的消息报文,等到网络恢复以后,会再次收到原主节点的消息报文。其中,网络异常的原因可能是网卡出现故障,也可能是网络拥堵严重,还有可能是网络硬件出现故障等,本实施例对此不做限制。
35.在本实施例中,消息回复报文可以理解为各从节点在接收到原主节点发送的消息报文后,需要对此消息报文做出的反馈。消息回复报文中包含各从节点当前的任期号。消息回复报文可以为任期已过期的消息,本实施例对此不做限制。
36.可以知道的是,集群中的主节点,全权负责接收客户端的请求命令,并根据命令修改数据生成日志条目复制发送给其他从节点服务器,在确认安全的时候,将日志提交并持久化数据更改。
37.在本实施例中,一致性协议算法包括领导者选举、日志复制和安全性三个方面,在选出新主节点之后,由新主节点管理整个集群的日志复制。一致性协议算法可以使得一个集群的服务器组成复制状态机。其中,复制状态机可以想象成是一组服务器,每个服务器是一个状态机,服务器的运行状态只能通过一行行的命令来改变。每一个状态机存储一个包含一系列指令的日志,严格按照顺序逐条执行日志中的指令,如果所有的状态机都能按照相同的日志执行指令,那么它们最终将达到相同的状态。
38.s120、当原主节点接收到至少一个包含任期已过期的目标消息回复报文时,基于各目标消息回复报文更新自身集群任期号,并发起选举及执行一致性协议算法中的选举操作。
39.其中,任期已过期可以理解为原主节点不能再担任主节点,需要通过选举重新选择主节点或者承认新主节点切为从节点加回集群。
40.在本实施例中,目标消息回复报文可以理解为原主节点所收到的各从节点回复的消息中包含原主节点任期已过期的消息。其中,任期已过期的目标消息回复报文可以是两个,可以是三个,本实施例对此不做限制。
41.需要说明的是,当原主节点接收到至少一个包含任期已过期的目标消息回复报文时,可以理解为此时的各个从节点中,有一个或多个从节点发生过网络异常。其中,网络异常可以理解为网卡故障、网络波动比较大、网络拥堵、网络攻击、电涌干扰、网站硬件故障等等,本实施例在此不做限制。
42.需要知道的是,集群任期号可以理解为集群中各个节点的任期号,包含原主节点和各个从节点。当原主节点接收到至少一个包含任期已过期的目标消息回复报文时,原主节点会基于各目标消息回复报文更新自身集群任期号,然后发起选举及执行一致性协议算法中的选举操作。
43.需要说明的是,原主节点基于各目标消息回复报文更新自身集群任期号的方式可以为:首先从各从节点所反馈的消息回复报文提取包含任期已过期的目标消息回复报文中携带的集群任期号,然后将最大集群任期号加1确定为自身的集群任期号,然后发起选举。
44.在本实施例中,选举可以理解为集群中废黜原主节点产生新主节点的过程,其作用是使集群在旧主节点故障后及时产生新主节点。其中,选举是分节点和任期的,一个节点在一个任期内只能发起一次选举。此处的节点包含原主节点和各个从节点。
45.进一步的,基于各目标消息回复报文更新集群任期号,包括:
46.提取目标消息回复报文中携带的集群任期号;
47.将最大集群任期号加1确定为自身的集群任期号。
48.其中,最大集群任期号可以理解为集群中各个从节点反馈的至少一个包含任期已过期的目标消息回复报文中最大节点任期号。
49.在本实施例中,基于各目标消息回复报文更新集群任期号,是原主节点单独进行的更新任期号。其中,更新任期号可以理解为原主节点在数据库内存中将自己的任期号在目标消息回复报文中最大集群任期号的基础上加1,然后将其进行持久化,写入硬盘中进行保存。示例性的,当提取到的目标消息回复报文中携带的集群任期号为5时,原主节点在最大集群任期号5的基础上加1确定为自身的集群任期号,即自身的集群任期号此时为6。
50.需要说明的是,当发生网络异常的某个从节点或多个从节点网络恢复正常,从而再次收到原主库所发送的消息,此时会向原主节点反馈消息回复报文,表明原主节点此时任期已过期,从而原主节点在收到消息回复报文时,提取目标消息回复报文中携带的集群任期号,然后立即更新任期号为目标消息回复报文中的最大集群任期号加1,并作为自身的集群任期号。
51.本发明实施例所提供的技术方案中,通过集群中的原主节点向各从节点发送消息报文,并接收各从节点相对消息报文反馈的消息回复报文,其中,原主节点预先采用给定的一致性协议算法确定;然后当原主节点接收到至少一个包含任期已过期的目标消息回复报文时,基于各目标消息回复报文更新自身集群任期号,并发起选举及执行一致性协议算法中的选举操作。本实施例上述技术方案,通过集群中的原主节点向各从节点发送消息报文,以基于所发送的消息报文,有效避免集群中主节点频繁切换为从节点,提升数据库服务的流畅性和可靠性,从而提升集群性能和用户体验。与现有技术中集群中主库节点切换为备库相比,所采用的集群中主节点的选举方法,在各种故障场景中减少主库切换次数,即使发生选举也尽可能使原主库重新选举成功,不需要切为备库,从而提升集群性能和用户体验。此外,本实施例上述技术方案有效避免了主、从节点的频繁切换次数,从而避免了数据库中大量数据的丢失,从而提升看数据库服务的流畅性以及可靠性,从而在一定程度上提升集群的性能和用户的体验。
52.可选的,在发起选举及执行一致性协议算法中的选举操作之后,还包括:
53.当原主节点选举成为新主节点时,对反馈各目标消息回复报文的异常从节点进行
数据信息的异步恢复;
54.当原主节点未选举成为新主节点时,新主节点对原主节点及其他各从节点进行数据信息的同步操作。
55.在本实施例中,新主节点可以理解为在发起选举及执行一致性协议算法中的选举操作之后,重新选出来的新主节点,并作为集群中的新领导者向各个节点发送消息报文,并接收各从节点相对消息报文反馈的消息回复报文。
56.在本实施例中,发起选举的原主节点在接收到至少一个包含任期已过期的目标消息回复报文时,基于各目标消息回复报文更新自身集群任期号,然后将投票请求消息发送给其他所有节点,其他节点会根据收到消息时的当前状态进行判断是否符合投票要求,然后发送投票请求回复告知投票结果,此时发起选举的原主节点根据收到的投票请求回复进行判断,在有一半以及一半以上的任期号更旧的其他主节点和从节点投票给了原主节点,此时就认为原主节点重新选举成功。
57.需要说明的是,选举是发起选举的节点向其余各个节点单独发送的消息。选举过程中,发起选举的原主节点会发送投票请求,每个从节点会向发起选举的原主节点发送投票请求回复。当其他各个从节点收到发起选举的原主节点的投票请求后,会向发起选举的原主节点发送投票请求回复。此时发起选举的原主节点的投票请求中包含有当前的任期号,最后一条日志的任期号,包序号等信息,根据这些信息,收到投票请求的各个从节点根据收到投票请求当前时刻的任期号,最后一个包序号,和包任期号来进行判断是否将投票投给原主节点。其中,判断条件是,发起选举的原主节点的任期号大于或等于当前从节点的任期号,发起选举的原主节点最后一条日志的任期号比当前从节点的最后一条日志包新或者一样新,满足条件从节点就投票给发起选举的原主节点;如果不满足条件,就不投票给发起选举的原主节点。
58.需要说明的是,在每个任期的选举过程中,每个从节点只有一票。
59.可以知道的是,经过投票选举之后,当发起选举的原主节点成功重新选举为新主节点,对反馈各目标消息回复报文的异常从节点进行数据信息的异步恢复,然后在新主节点任期号更大的消息报文或投票请求时,异常从节点在网络恢复以后,将更新自己的任期号为当前消息报文中的任期号,并加回集群。
60.在本实施例中,异常从节点可以理解为出现网络异常的各个从节点。其中,异常从节点可以是1个,也可以是2个,还可以是三个。本实施例对此不做限制。当异常从节点网络异常以后,其收不到原主节点的消息,然后自增任期号开始发起选举,但是此时异常从节点发起选举只是自我行为,将自己的任期号增加1,并尝试发送消息。此时异常从节点发送的消息是原主节点以及其他从节点都收不到的,所以是一次失败的选举。示例性的,异常从节点的原有任期号为4,当异常从节点网络异常以后,其收不到原主节点的消息,就会在原有任期号4的基础上自增任期号加1,变为5,开始选举。
61.在本实施例中,异步恢复可以理解为异常从节点恢复为正常从节点的过程。执行完异步恢复后,异常从节点就是一个正常从节点,然后执行相关协议的流程。
62.需要说明的是,异步恢复的过程可以为新主节点发送相关消息告知异常从节点需要进行异步恢复,然后异常从节点接到消息后开始扫描自己的日志文件,从日志文件中找出当前日志条目信息,然后将其反馈给新主节点,新主节点在收到异常从节点的当前日志
条目信息以后,将异常从节点的当前日志条目信息与新主节点的日志信息进行对比,之后重复异常从节点扫描自己的日志文件日志,然后新主节点在收到异常从节点的当前日志条目信息以后,将异常从节点的当前日志条目信息与新主节点的日志信息进行对比的流程,直到找到一条新主节点日志信息与异常从节点日志信息相一致的日志信息,从获得相同的日志信息开始,新主节点把后面出现的不一致的日志信息逐条的发给异常从节点,进行异步恢复。
63.可以知道的是,经过投票选举之后,当发起选举的原主节点未选举成为新主节点时,即可认为其他的节点选举成功称为新主节点,原主节点就会落选,此处的新主节点可以理解为除原主节点以外的其他节点。此时新主节点对原主节点及其他各从节点进行数据信息的同步操作。其中,原主节点和比新主节点日志新的从节点需要截断日志,比新主节点日志旧的节点需要异步恢复。其中,截断日志可以理解为删除日志记录以减小重做日志的大小的过程。
64.在本实施例中,同步操作可以理解为当原主节点未选举成为新主节点时,新主节点对原主节点及其他各从节点进行数据信息的同步。
65.可选的,在发起选举及执行一致性协议算法中的选举操作之后,还包括:
66.反馈各目标消息回复报文的异常从节点根据新主节点所发送消息中携带的集群任期号更新各自的集群任期号,并重新加入集群中。
67.在本实施例中,当原主节点重新选举成功成为新主节点时,此时新主节点的任期可以认为是最新任期号,异常从节点的任期号比新主节点的任期号要小。此时新主节点向异常从节点发送消息报文,异常从节点接收到新主节点发送的消息报文后,异常从节点根据新主节点所发送消息中携带的集群任期号更新各自的集群任期号为新主节点的最新任期号,并重新加回集群。
68.可选的,上述集群中主节点的选举方法,还包括:
69.当集群中的从节点在给定的选举时长内未接收到原主节点发送的消息报文时,发起选举并通过执行一致性协议算法中的选举操作确定新主节点;
70.集群中除原主节点外的各从节点通过设定的选举阻断策略,阻止原主节点重新发起选举。
71.其中,给定的选举时长可以理解为预先对集群中的各节点配置好的选举时长。
72.需要说明的是,集群中每个节点给定的选举时长都不是固定的。集群中每个节点给定的选举时长可以是相同的配置时长,也可以是不同的配置时长,还可以是每个节点中有相同配置时长,也有不相同的配置时长,本实施例在此不做限制。示例性的,集群中的一个从节点的选举时长的配置为1500ms,集群中的又一个从节点的选举时长的配置为1500ms,集群中的另一个从节点的选举时长的配置为1500ms;集群中的一个从节点的选举时长的配置为1000ms,集群中的又一个从节点的选举时长的配置为1200ms,集群中的另一个从节点的选举时长的配置为1400ms;集群中的一个从节点的选举时长的配置为1000ms,集群中的又一个从节点的选举时长的配置为1000ms,集群中的另一个从节点的选举时长的配置为1300ms。
73.需要说明的是,当集群中的从节点在给定的选举时长内未接收到原主节点发送的消息报文时,此时可以理解为原主节点可能出现网络异常。其中,网络异常可以理解为出现
了网卡故障、网络波动、机器有故障、运营商网络挂掉等等现象。此时的消息报文可以让从节点确定原主节点是否以及何时出现故障或终止。
74.在本实施例中,原主节点在网络异常期间的任期号是保持不变的,等到网络恢复以后,原主节点会以自身任期号向每个节点发送消息报文。
75.在本实施例中,当集群中的从节点在给定的选举时长内未接收到原主节点发送的消息报文时,集群内自动进行任期更新,发起选举并通过执行一致性协议算法中的选举操作以确定新主节点。
76.需要说明的是,集群内自动进行任期更新,在发起选举并通过执行一致性协议算法中的选举操作以确定新主节点之前,存在选举机制,集群的各个从节点会等待一个选举超时,即当原主节点出现网络异常时,其他的从节点在给定的选举时长内收不到原主节点所发送的消息报文。集群中的每个节点都会进行自动检测,当集群中的某个或多个从节点在给定的选举时长内未接收到原主节点发送的消息报文,就会将自己作为从节点重新发起选举。此时除原主节点外的其他从节点均能收到发起选举节点的选举信息。然后通过对集群中除原主节点外的各从节点设定的选举阻断策略,阻止原主节点重新发起选举。其中,选举阻断策略可以理解为通过设定的选举阻断策略使得原主节点不能在此发起选举。
77.在本实施例中,集群中除原主节点外的各从节点通过设定的选举阻断策略,阻止原主节点重新发起选举的方式可以为:集群中除原主节点外的各个从节点,如果在确定新主节点后接收到原主节点发送的延迟消息报文,且延迟消息报文中携带的集群任期号小于各从节点当前的集群任期号,则忽略延迟消息报文,不向原主节点发送消息回复报文;原主节点未接收到相对延迟消息报文的消息回复报文时,禁止执行选举发起,从而避免了老主库再次发起选举。
78.可选的,集群中除原主节点外的各从节点通过设定的选举阻断策略,阻止原主节点重新发起选举,包括:
79.集群中除原主节点外的各从节点如果在确定新主节点后接收到原主节点发送的延迟消息报文,且延迟消息报文中携带的集群任期号小于各从节点当前的集群任期号,则忽略延迟消息报文,不向原主节点发送消息回复报文;
80.原主节点未接收到相对延迟消息报文的消息回复报文时,禁止执行选举发起。
81.其中,延迟消息报文可以理解为原主节点网络异常恢复以后向各个从节点所发送的消息报文。
82.需要说明的是,延迟消息报文可以是时间上的延迟,也可以是网络上的延迟。示例性的,原主节点与包含新主节点在内的部分从节点网络断开,另一部分从节点网络连接正常时,此时的原主节点收不到新主节点的消息,仍然认为自己是主节点,在新主节点成为除原主节点外所有从节点的主节点后,原主节点仍然会向与自己连接正常的库发送自己过时任期的消息报文。
83.需要说明的是,当集群中除原主节点外的各从节点如果在确定新主节点后接收到原主节点发送的延迟消息报文,然后检验所收到的延迟消息报文的正确性,之后对延迟消息报文的内容进行解析,比较解析出来的原主节点延迟消息报文中携带的集群任期号与当前除原主节点外的各从节点内存中的携带的集群任期号,将两者进行比较可以得出,此时解析出来的原主节点延迟消息报文中携带的集群任期号要小于各从节点当前的集群任期
号,则忽略原主节点延迟消息报文,不再向原主节点发送消息回复报文,从而避免了原主节点再次发起选举,同时避免新主节点再次切为从节点,加快老主库故障恢复。
84.可选的,在阻止原主节点重新发起选举之后,还包括:
85.新主节点向原主节点及其他各从节点发送新消息报文;
86.原主节点接收到新消息报文后,更新自身的集群任期号并变更为从节点加入所述集群中;
87.新主节点对集群中的各从节点进行数据信息的同步操作。
88.其中,新消息报文可以理解为新主节点向原主节点及其他各从节点发送的消息报文。
89.在本实施例中,在阻止原主节点重新发起选举之后,此时的新主节点向原主节点及其他各从节点发送新消息报文,然后原主节点接收到新主节点发送的新消息报文后,更新自身的集群任期号并变更为从节点加入到集群中,之后新主节点对集群中的各从节点进行数据信息的同步操作。
90.示例性的,为便于更好的理解集群中主节点的选举方法,以下给出了原主节点接收到至少一个包含任期已过期的目标消息回复报文时,一种集群中主节点的选举方法,步骤可以为:
91.a1、集群中的原主节点向各从节点发送消息报文,并接收各从节点相对消息报文反馈的消息回复报文。
92.a2、原主节点接收到至少一个包含任期已过期的目标消息回复报文,此时说明可能某个或多个从节点出现网络异常,收不到原主节点的消息报文,自增任期号发起选举,但此时的选举是无效的。
93.a3、当某个或多个从节点网络异常恢复以后,此时会收到原主节点发送的消息报文,并进行消息回复报文告知原主节点任期已过期。
94.a4、当原主节点接收到至少一个包含任期已过期的目标消息回复报文时,提取目标消息回复报文中携带的集群任期号,并将最大集群任期号加1确定为自身的集群任期号,然后发起选举及执行一致性协议算法中的选举操作。
95.a5、发起选举的原主节点会发送投票请求,每个从节点会向发起选举的原主节点发送投票请求回复。当其他各个从节点收到发起选举的原主节点的投票请求后,会向发起选举的原主节点发送投票请求回复。当原主节点选举成为新主节点时,对反馈各目标消息回复报文的异常从节点进行数据信息的异步恢复;当原主节点未选举成为新主节点时,新主节点对所述原主节点及其他各从节点进行数据信息的同步操作。
96.a6、异常从节点收到新主节点任期号更大的投票请求或消息报文,反馈各目标消息回复报文的异常从节点根据新主节点所发送消息中携带的集群任期号更新各自的集群任期号,并重新加入集群中。
97.示例性的,为便于更好的理解集群中主节点的选举方法,以下给出了当集群中的从节点在给定的选举时长内未接收到原主节点发送的消息报文时,一种集群中主节点的选举方法,步骤可以为:
98.b1、集群中的原主节点向各从节点发送消息报文,并接收各从节点相对消息报文反馈的消息回复报文。
99.b2、当集群中的从节点在给定的选举时长内未接收到原主节点发送的消息报文时,此时说明原主节点可能出现网络异常,集群中的从节点会将自己发起选举。此时除原主节点外的其他从节点均能收到新主节点的选举信息。
100.b3、原主节点网络异常期间任期号不变,当原主节点网络异常恢复以后,以自身任期号向其他节点发送延迟消息报文。
101.b4、集群中除原主节点外的各从节点如果在确定新主节点后接收到原主节点发送的延迟消息报文,且延迟消息报文中携带的集群任期号小于各从节点当前的集群任期号,则忽略延迟消息报文,不向原主节点发送消息回复报文;原主节点未接收到相对延迟消息报文的消息回复报文时,禁止执行选举发起。
102.b5、新主节点向原主节点及其他各从节点发送新消息报文;原主节点接收到新消息报文后,更新自身的集群任期号并变更为从节点加入集群中。
103.b6、新主节点对集群中的各从节点进行数据信息的同步操作。
104.实施例二
105.图2是本发明实施例二中的提供的一种集群中主节点的选举装置的流程图,本实施例所提供的一种集群中主节点的选举装置可以通过软件和/或硬件来实现,可配置于服务器中来实现本发明实施例中的一种集群中主节点的选举方法。如图2所示,该装置具体可包括:消息接收模块210和选举及执行模块220。
106.其中,消息接收模块210,用于集群中的原主节点向各从节点发送消息报文,并接收各所述从节点相对所述消息报文反馈的消息回复报文,其中,所述原主节点预先采用给定的一致性协议算法确定;
107.选举及执行模块220,用于当所述原主节点接收到至少一个包含任期已过期的目标消息回复报文时,基于各所述目标消息回复报文更新自身集群任期号,并发起选举及执行所述一致性协议算法中的选举操作。
108.本发明实施例所提供的技术方案中,通过消息接收模块集群中的原主节点向各从节点发送消息报文,并接收各从节点相对消息报文反馈的消息回复报文,其中,原主节点预先采用给定的一致性协议算法确定;然后选举及执行模块当原主节点接收到至少一个包含任期已过期的目标消息回复报文时,基于各目标消息回复报文更新自身集群任期号,并发起选举及执行一致性协议算法中的选举操作。本实施例上述技术方案,通过集群中的原主节点向各从节点发送消息报文,以基于所发送的消息报文,有效避免集群中主节点频繁切换为从节点,提升数据库服务的流畅性和可靠性,从而提升集群性能和用户体验。与现有技术中集群中主库节点切换为备库相比,所采用的集群中主节点的选举方法,在各种故障场景中减少主库切换次数,即使发生选举也尽可能使原主库重新选举成功,不需要切为备库,从而提升集群性能和用户体验。此外,本实施例上述技术方案有效减少了主、从节点的频繁切换次数,从而避免了数据库中大量数据的丢失,从而提升数据库服务的流畅性以及可靠性,从而在一定程度上提升集群的性能和用户的体验。
109.可选的,在上述各实施例的基础上,选举及执行模块220可以包括:
110.任期号提取单元,用于提取所述目标消息回复报文中携带的集群任期号;
111.任期号确定单元,用于将最大集群任期号加1确定为自身的集群任期号。
112.可选的,在上述各实施例的基础上,还包括:
113.信息恢复单元,用于当所述原主节点选举成为新主节点时,对反馈各所述目标消息回复报文的异常从节点进行数据信息的异步恢复;
114.信息同步单元,用于当所述原主节点未选举成为新主节点时,所述新主节点对所述原主节点及其他各从节点进行数据信息的同步操作。
115.可选的,在上述各实施例的基础上,还包括:
116.集群加入单元,用于反馈各所述目标消息回复报文的异常从节点根据新主节点所发送消息中携带的集群任期号更新各自的集群任期号,并重新加入集群中。
117.可选的,还包括:
118.新主节点确定模块,用于当集群中的从节点在给定的选举时长内未接收到所述原主节点发送的消息报文时,发起选举并通过执行所述一致性协议算法中的选举操作确定新主节点;
119.原主节点选举阻止模块,用于集群中除所述原主节点外的各从节点通过设定的选举阻断策略,阻止所述原主节点重新发起选举。
120.可选的,原主节点选举阻止模块,包括:
121.信息忽略单元,用于集群中除所述原主节点外的各从节点如果在确定新主节点后接收到所述原主节点发送的延迟消息报文,且所述延迟消息报文中携带的集群任期号小于各从节点当前的集群任期号,则忽略所述延迟消息报文,不向所述原主节点发送消息回复报文;
122.选举禁止单元,用于所述原主节点未接收到相对所述延迟消息报文的消息回复报文时,禁止执行选举发起。
123.可选的,在上述各实施例的基础上,还包括:
124.消息发送模块,用于所述新主节点向所述原主节点及其他各从节点发送新消息报文;
125.任期号更新模块,所述原主节点接收到所述新消息报文后,更新自身的集群任期号并变更为从节点加入所述集群中;
126.数据恢复模块,用于所述新主节点对所述集群中的各从节点进行数据信息的数据同步。
127.本发明实施例所提供的一种集群中主节点的选举装置可执行本发明任意实施例所提供的一种集群中主节点的选举方法,具备执行方法相应的功能模块和有益效果。
128.实施例三
129.图3是本发明实施例三中的提供的一种计算机设备的结构示意图,如图3所示,该设备包括处理器310、存储器320、输入装置330和输出装置340;设备中处理器310的数量可以是一个或多个,图3中以一个处理器310为例;设备中的处理器310、存储器320、输入装置330和输出装置340可以通过总线或其他方式连接,图3中以通过总线连接为例。
130.存储器320作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的一种集群中主节点的选举方法对应的程序指令/模块(例如,一种集群中主节点的选举装置中的消息接收模块210和选举及执行模块220)。处理器310通过运行存储在存储器320中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的一种集群中主节点的选举方法。
131.存储器320可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器320可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器320可进一步包括相对于处理器310远程设置的存储器,这些远程存储器可以通过网络连接至设备/终端/服务器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
132.输入装置330可用于接收输入的数字或字符信息,以及产生与设备/终端/服务器的用户设置以及功能控制有关的键信号输入。输出装置340可包括显示屏等显示设备。
133.实施例四
134.本发明实施例四还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种集群中主节点的选举方法,该方法由集群中作为节点的计算机设备执行,包括:
135.集群中的原主节点向各从节点发送消息报文,并接收各所述从节点相对所述消息报文反馈的消息回复报文,其中,所述原主节点预先采用给定的一致性协议算法确定;
136.当所述原主节点接收到至少一个包含任期已过期的目标消息回复报文时,基于各所述目标消息回复报文更新自身集群任期号,并发起选举及执行所述一致性协议算法中的选举操作。
137.当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的一种集群中主节点的选举方法中的相关操作.
138.通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
139.值得注意的是,上述搜索装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
140.注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献