一种选举领导者Leader的方法、装置及设备与流程

文档序号:15922970发布日期:2018-11-14 00:49阅读:167来源:国知局

本发明涉及一种计算机分布式领域,尤其涉及一种选举领导者leader的方法、装置及设备。

背景技术

分布式一致性是一个相当重要且被广泛论证与探索的问题,通常存在于分布式内存共享,分布式存储(例如:分布式文件系统,数据库,缓存)等分布式系统中。当前比较流行的一致性算法包括paxos、gossip、raft等。强一致性是在并发编程(如:在分布式共享存储器,分布式事务)领域中使用的一致性模型之一,要求所有并行进程、节点或处理器等以相同的顺序看到所有访问。raft是一种用来保证强一致性的典型算法,该算法应用在开放日光平台(英文:opendaylight,odl)、开源网络操作系统(英文:opensourcenetworkoperatingsystem,onos)等业界主流分布式控制器系统中。

raft算法流程分为三个子问题:选举(英文:leaderelection)、日志复制(英文:logreplication)、安全性(英文:safety)。raft开始时在集群中选举出领导者(英文:leader)负责日志复制的管理,leader接受来自客户端的事务请求(日志),并将该事务请求复制给集群的其他节点,然后负责通知集群中其他节点提交日志,leader负责保证其他节点与他的日志同步,当leader宕掉后集群中的其它节点会发起选举选出新的leader。

在raft集群的所有节点中,leader节点需要处理较多的消息(接收客户端请求、发送消息给follower、接收follower应答并统计),使得leader节点对物理或虚拟资源的需求高于其它节点。但是,leader的选择与其检测到当前leader崩溃的时间和网络速度相关,leader选举算法一种不受外界控制的随机选取方法,leader的选举完全是随机的,因此在某些特定场景下由于不能选举出性能较高的raft节点作为leader,导致工作性能的下降。



技术实现要素:

本发明实施例提供了一种raft选举方法、装置及设备。解决现有技术方案中由于选取的随机性导致某些特定场景下raft工作性能的下降的问题。

第一方面,本发明实施例提供了一种选举领导者leader的方法,应用在分布式集群系统中,分布式集群系统包括网络设备,包括:网络设备首先获得时间标识信息,时间标识信息用于表示选举周期开始到发起投票的延迟时间;然后根据时间标识信息,向分布式集群系统中的其它网络设备发送投票请求。通过时间标识信息发起投票请求,从而提高性能较高的网络设备被选举出作为leader节点的概率,保障特定场景下的网络节点的工作性能。

在一种可能的设计中,网络设备从非易失性存储介质中获得预先存储的时间标识信息。

在另一种可能的设计中,网络设备首先从非易失性存储介质中获得预先存储的节点标识信息,节点标识信息用于表示网络设备成为leader节点的期望值;然后根据预设的映射关系确定与节点标识信息对应的时间标识信息,通过节点标识信息确定时间标识信息,可以准确的确定延迟时间。

在另一种可能的设计中,网络设备将节点标识信息作为输入参数代入映射函数,得到与节点标识信息对应的时间标识信息。

在另一种可能的设计中,网络设备可以预先配置映射关系,直接通过映射关系确定与节点标识信息对应的时间标识信息。

在另一种可能的设计中,网络设备首先将节点标识信息作为输入参数代入映射函数,得到输出值;然后将输出值乘以预设的心跳时间间隔,计算得到时间标识信息。

在另一种可能的设计中,节点标识信息的取值为根据网络设备的工作性能,在预设的区间范围内选取的与工作性能相匹配的值。

在另一种可能的设计中,节点标识信息的取值可以是网络管理员通过命令行配置在该设备上的;也可以是该设备接收其它控制管理设备发来的消息,根据消息指示配置的;也可以是该设备自身运行算法软件自动配置的。

第二方面,本发明实施例提供了一种选举领导者leader的装置,该装置被配置为实现上述第一方面中网络设备所执行的方法和功能,由硬件/软件实现,其硬件/软件包括与上述功能相应的单元。

第三方面,本发明提供了一种网络设备,包括:处理器、存储器和通信总线,其中,所述通信总线用于实现所述处理器和存储器之间连接通信,处理器执行所述存储器中存储的程序用于实现上述第一方面提供的一种选举领导者leader的方法中的步骤。

第四方面,本发明实施例提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面的选举领导者leader的方法。

第五方面,本发明实施例提供了一种包含指令的计算机程序产品,当其在计算机上执行时,使得计算机执行上述各方面的选举领导者leader的方法。

附图说明

为了更清楚地说明本发明实施例或背景技术中的技术方案,下面将对本发明实施例或背景技术中所需要使用的附图进行说明。

图1是本发明实施例提供的一种分布式集群系统的架构示意图;

图2是本发明实施例提供的一种raft选举方法的示意图;

图3是本发明实施例提供的另一种raft选举方法的示意图;

图4是本发明实施例提供的一种选举领导者leader的方法的流程示意图;

图5是本发明实施例提供的一种改进后leader选举方法的示意图;

图6是本发明实施例提供的一种选举领导者leader的装置的结构示意图;

图7是本发明实施例提出的一种网络设备的结构示意图。

具体实施方式

下面结合本发明实施例中的附图对本发明实施例进行描述。

请参见图1,图1是本发明实施例提供的一种分布式集群系统的架构示意图,该分布式集群系统包括多个网络设备,该分布式集群系统中的网络设备的数量一般为偶数,所述多个网络设备包括网络设备1、网络设备2和网络设备3等等,本发明实施例中的网络设备可以为多种具有计算和存储能力的设备,例如,服务器、主机、个人计算机(英文:personalcomputer,pc)等计算机设备;本发明实施例中的网络设备也可以为软件定义网络(英文:softwaredefinednetwork,sdn)控制器。本发明实施例是基于raft选举算法构建的raft集群,在raft集群中网络设备为raft节点,下面以raft节点进行说明。需要说明的是,本发明实施例以基于raft选举算法构建raft集群为例进行阐述,但并不局限于此。本发明实施例还适用于基于其他算法来构建的分布式集群中,方法一致,为了简洁,不再赘述。

在raft集群中,服务器可以扮演如下角色之一:(1)领导者(英文:leader):负责日志的同步管理,处理来自客户端的请求,与追随者(英文:follower)保持心跳联系;follower:刚启动时所有节点为follower状态,响应leader的日志同步请求,响应候选者(英文:candidate)的请求,将请求到follower的事务转发给leader;candidate:负责选举投票,raft选举刚启动时raft节点从follower转为candidate发起选举,选举出leader后从candidate转为leader状态。其中,leader通过日志复制逻辑保证所有follower日志提交顺序都与自己日志提交顺序一致。另外,raft集群中的每个服务器的时间被切分为一个个期限(英文:term),term具有如下特点:term包括leader选举时间和在某个leader下的正常操作时间;每个term最多一个leader;有些term不存在leader(选举失败)。

如图2所示,在系统开始启动时,所有服务器均以follower身份启动,并启动选举定时器,leader定时的发送心跳给所有follower。又如图3所示,如果follower选举定时器超时,则认为当前系统中不存在一个服务器作为leader,需要首先变为candidate状态,然后发起新一轮选举。当选举出一个服务器作为leader后,作为leader的服务器必须广播心跳,以触发其它作为follower的服务器的选举定时器重新开始计时。

在选举过程中需要满足以下三个条件:第一,如果该服务器获得raft集群中超过半数服务器的投票,则由candidate转化为leader并开始广播心跳。第二,如果该服务器接收到合法leader的日志复制请求(日志复制请求也作为心跳消息),则说明新的leader已经产生,自身转化为follower。第三,如果选举超时(本周期没有选举成功),则开始新一轮的选举。

通过上述流程可知,leader的选择与其检测到当前leader崩溃的时间和网络速度相关,leader选举算法是一种不受外界控制的随机选取方法,leader的选举完全是随机的,可能导致在某些特定场景下raft工作性能的下降。本发明实施例提供了如下解决方法。

请参见图4,图4是本发明实施例提供的一种选举领导者leader的方法的流程示意图,该方法应用在分布式集群系统中,所述分布式集群系统包括网络设备,包括但不限于如下步骤:

s401,所述raft节点获得时间标识信息,所述时间标识信息用于表示选举周期开始到发起投票的延迟时间;

具体实现中,可以在raft节点启动选举之前,在每个raft节点的非易失性存储介质中配置时间标识信息raft-t。可以将指定raft节点的时间标识信息的取值配置的最小,其他raft节点的时间标识信息的取值可以相同,也可以不同。其中,非易失性存储介质可以包括磁盘、硬盘等掉电后数据不丢失的存储介质。

进一步的,可以根据所述raft节点的工作性能,在预设的区间范围内选取与所述工作性能相匹配的值。对于工作性能较高的raft节点,则可以将该raft节点的时间标识信息的取值配置的较小,对于工作性能较低的raft节点,可以将该raft节点的时间标识信息的取值配置的较大,其中,工作性能表示raft节点的物理或虚拟资源性能。另外,该时间标识信息的取值可以是网络管理员通过命令行配置在该设备上的;也可以是该设备接收其它控制管理设备发来的消息,根据消息指示配置的;还可以是该设备自身运行算法软件自动配置的。

可选的,可以在raft节点启动选举之前,在每个raft节点的非易失性存储介质中配置节点标识信息raft-id,所述节点标识信息用于表示所述raft节点成为leader节点的期望值。可以将指定raft节点的节点标识信息的取值配置的最大,其他raft节点的节点标识信息的取值可以相同,也可以不同。其中,非易失性存储介质可以包括磁盘、硬盘等掉电后数据不丢失的存储介质。

进一步的,可以根据所述raft节点的工作性能,在预设的区间范围内选取与所述工作性能相匹配的值。对于工作性能较高的raft节点,则可以将该raft节点的节点标识信息的取值配置的较大,对于工作性能较低的raft节点,可以将该raft节点的节点标识信息的配置的较小。另外,该节点标识信息的取值可以是网络管理员通过命令行配置在该设备上的;也可以是该设备接收其它控制管理设备发来的消息,根据消息指示配置的;还可以是该设备自身运行算法软件自动配置的。例如,可以将区间范围设定在1-5等级,将工作性能最高的raft节点配置为第5等级,将其他raft节点可以配置为1-4等级中的任何一个。

需要说明的是,由于raft节点检测到选举周期开始到发起投票的延迟时间极短,直接设置延迟时间不容易实现。因此,可以结合实际的场景,建立节点标识信息和时间标识信息的映射关系,通过获得节点标识信息的取值来确定时间标识信息的取值,从而最终按照延迟时间向其他raft节点发送投票请求。

最后,完成上述配置之后,当检测到raft节点初次启动、不存在leader时、或者当检测到leader宕机或follower没有接收到leader的心跳发生选举定时器超时,则各个raft节点从follower状态转为candidate状态,并获得时间标识信息。具体可以包括如下几种方式:

第一,raft节点从非易失性存储介质中获得预先存储的所述时间标识信息。

第二,raft节点首先从所述非易失性存储介质中获得预先存储的节点标识信息;然后根据预设的映射关系确定与所述节点标识信息对应的所述时间标识信息。包括:raft节点可以将所述节点标识信息作为输入参数代入映射函数,得到的输出值作为所述时间标识信息。或者,raft节点可以配置映射关系,所述映射关系包括所述时间标识信息与所述节点标识信息的多个对应关系,直接从映射关系中查找与所述节点标识信息对应的所述时间标识信息。

进一步的,raft节点可以首先将所述节点标识信息代入映射函数,得到输出值;然后将所述输出值乘以预设的心跳时间间隔,计算得到所述时间标识信息。例如,raft-id在区间范围1-5之间取值,将raft-id的值代入映射函数y=1/x,得到映射后的输出值,该输出值的大小位于0-1之间,同时读取非易失存储介质中预设的心跳时间间隔,最后raft-t的值为心跳时间间隔与输出值的乘积。或者,raft节点可以首先读取非易失存储介质中预设的心跳时间间隔,然后将所述预设的心跳时间间隔除以所述节点标识信息的取值,计算得到的商作为时间标识信息的取值。

需要说明的是,本发明实施例中的时间标识信息与所述节点标识信息之间的映射关系并不局限于上述几种对应关系,还可以包括其他形式的对应关系。

s402,所述raft节点根据所述时间标识信息,向所述分布式集群系统中的其它raft节点发送投票请求。

具体实现中,如图5所示,图5是本发明实施例提供的一种改进后leader选举方法的示意图。由于性能最好的raft节点的所述时间标识信息的取值最小,因此该raft节点检测到选举周期开始到发起投票的延迟时间最短,因此该raft节点最先向其他raft发起了投票请求,其他raft节点接收到投票请求之后最先向该raft节点投票,如果该raft节点接收到的投票数超过预设阈值(如,全部raft节点数量的一半)时,就成为领导者leader,而其他raft节点不再发起投票请求。从而提高了性能较高的raft节点被选举出作为leader节点的概率,保障特定场景下raft工作性能。

可选的,可以设置功能开关,当该功能开关打开时,执行根据所述时间标识信息向所述分布式集群系统中的其它raft节点发送投票请求的操作步骤,当该功能开关关闭时,将raft节点的节点标识信息的取值和/或时间标识信息的取值默认为0,从而保证不同raft模块使用上的兼容性。

可选的,在所述raft节点向其他raft节点发送投票请求并成为领导者leader之后,该raft节点向其他raft节点广播心跳,以触发其它作为follower的节点的选举定时器重新开始计时,如果其他raft节点接收到心跳消息,则说明新的leader已经产生,其他raft节点转化为follower状态。

需要说明的是,按照上述方法可以保证指定的leader节点最先发起请求投票,并最终成为leader。但是,由于网络存在时间和外部中断问题,如果指定raft节点的网络时延大、或自身与外界中断等,按照上述方法进行raft选举,指定raft节点不一定能成为新的leader。

上述详细阐述了本发明实施例的方法,下面提供了本发明实施例的装置。

请参见图6,图6是本发明实施例提供的一种选举领导者leader的装置的结构示意图,所述选举领导者leader的装置可以为网络设备,该网络设备可以包括信息获取模块601和请求发送模块602,其中,各个模块的详细描述如下。

信息获取模块601,用于获得时间标识信息,所述时间标识信息用于表示选举周期开始到发起投票的延迟时间。

具体实现中,可以在网络设备启动选举之前,在每个网络设备的非易失性存储介质中配置时间标识信息raft-t。可以将指定网络设备的时间标识信息的取值配置的最小,其他网络设备的时间标识信息的取值可以相同,也可以不同。其中,非易失性存储介质可以包括磁盘、硬盘等掉电后数据不丢失的存储介质。

进一步的,可以根据所述网络设备的工作性能,在预设的区间范围内选取与所述工作性能相匹配的值。对于工作性能较高的网络设备,则可以将该网络设备的时间标识信息的取值配置的较小,对于工作性能较低的网络设备,可以将该网络设备的时间标识信息的取值配置的较大,其中,工作性能表示网络设备的物理或虚拟资源性能。另外,该时间标识信息的取值可以是网络管理员通过命令行配置在该设备上的;也可以是该设备接收其它控制管理设备发来的消息,根据消息指示配置的;还可以是该设备自身运行算法软件自动配置的。

可选的,可以在网络设备启动选举之前,在每个网络设备的非易失性存储介质中配置节点标识信息raft-id,所述节点标识信息用于表示所述网络设备成为leader节点的期望值。可以将指定网络设备的节点标识信息的取值配置的最大,其他网络设备的节点标识信息的取值可以相同,也可以不同。其中,非易失性存储介质可以包括磁盘、硬盘等掉电后数据不丢失的存储介质。

进一步的,可以根据所述网络设备的工作性能,在预设的区间范围内选取与所述工作性能相匹配的值。对于工作性能较高的网络设备,则可以将该网络设备的节点标识信息的取值配置的较大,对于工作性能较低的网络设备,可以将该网络设备的节点标识信息的配置的较小。另外,该节点标识信息的取值可以是网络管理员通过命令行配置在该设备上的;也可以是该设备接收其它控制管理设备发来的消息,根据消息指示配置的;还可以是该设备自身运行算法软件自动配置的。例如,可以将区间范围设定在1-5等级,将工作性能最高的网络设备配置为第5等级,将其他网络设备可以配置为1-4等级中的任何一个。

需要说明的是,由于网络设备检测到选举周期开始到发起投票的延迟时间极短,直接设置延迟时间不容易实现。因此,可以结合实际的场景,建立节点标识信息和时间标识信息的映射关系,通过获得节点标识信息的取值来确定时间标识信息的取值,从而最终按照延迟时间向其他网络设备发送投票请求。

最后,完成上述配置之后,当检测到网络设备初次启动、不存在leader时、或者当检测到leader宕机或follower没有接收到leader的心跳发生选举定时器超时,则各个网络设备从follower状态转为candidate状态,并获得时间标识信息。具体可以包括如下几种方式:

第一,从非易失性存储介质中获得预先存储的所述时间标识信息。

第二,首先从所述非易失性存储介质中获得预先存储的节点标识信息;然后根据预设的映射关系确定与所述节点标识信息对应的所述时间标识信息。包括:可以将所述节点标识信息作为输入参数代入映射函数,得到的输出值作为所述时间标识信息。或者,可以配置映射关系,所述映射关系包括所述时间标识信息与所述节点标识信息的多个对应关系,直接从映射关系中查找与所述节点标识信息对应的所述时间标识信息。

进一步的,可以首先将所述节点标识信息代入映射函数,得到输出值;然后将所述输出值乘以预设的心跳时间间隔,计算得到所述时间标识信息。例如,raft-id在区间范围1-5之间取值,将raft-id的值代入映射函数y=1/x,得到映射后的输出值,该输出值的大小位于0-1之间,同时读取非易失存储介质中预设的心跳时间间隔,raft-t的值为心跳时间间隔与输出值的乘积。或者,可以首先读取非易失存储介质中预设的心跳时间间隔,然后将所述预设的心跳时间间隔除以所述节点标识信息的取值,计算得到的商作为时间标识信息的取值。

需要说明的是,本发明实施例中的时间标识信息与所述节点标识信息之间的映射关系并不局限于上述几种对应关系,还可以包括其他形式的对应关系。

请求发送模块602,用于根据所述时间标识信息,向所述分布式集群系统中的其它网络设备发送投票请求。

具体实现中,如图5所示,图5是本发明实施例提供的一种改进后leader选举方法的示意图。由于性能最好的网络设备的所述时间标识信息的取值最小,因此该网络设备检测到选举周期开始到发起投票的延迟时间最短,因此该网络设备最先向其他raft发起了投票请求,其他网络设备接收到投票请求之后最先向该网络设备投票,如果该网络设备接收到的投票数超过预设阈值(如,全部网络设备数量的一半)时,就成为领导者leader,而其他网络设备不再发起投票请求。从而提高了性能较高的网络设备被选举出作为leader节点的概率,保障特定场景下raft工作性能。

可选的,可以设置功能开关,当该功能开关打开时,执行根据所述时间标识信息向所述分布式集群系统中的其它网络设备发送投票请求的操作步骤,当该功能开关关闭时,将网络设备的节点标识信息的取值和/或时间标识信息的取值默认为0,从而保证不同raft模块使用上的兼容性。

可选的,在所述网络设备向其他网络设备发送投票请求并成为领导者leader之后,该网络设备向其他网络设备广播心跳,以触发其它作为follower的节点的选举定时器重新开始计时,如果其他网络设备接收到心跳消息,则说明新的leader已经产生,其他网络设备转化为follower状态。

需要说明的是,按照上述方法可以保证指定的leader节点最先发起请求投票,并最终成为leader。但是,由于网络存在时间和外部中断问题,如果指定网络设备的网络时延大、或自身与外界中断等,按照上述方法进行raft选举,指定网络设备不一定能成为新的leader。

请继续参考图7,图7是本发明实施例提出的一种网络设备的结构示意图。如图所示,该设备可以包括:至少一个处理器701,例如cpu,至少一个通信接口702,至少一个存储器703和至少一个通信总线704。其中,通信总线704用于实现这些组件之间的连接通信。其中,本申请实施例中设备的通信接口702用于与其他节点设备进行信令或数据的通信。存储器703可以是高速ram存储器,也可以是非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。存储器703可选的还可以是至少一个位于远离前述处理器701的存储装置。存储器703中存储一组程序代码,且处理器701执行存储器703中上述无线接入网络节点所执行的程序。

获得时间标识信息,所述时间标识信息用于表示选举周期开始到发起投票的延迟时间;

根据所述时间标识信息,向所述分布式集群系统中的其它网络设备发送投票请求。

其中,处理器701还用于执行如下操作步骤:

从非易失性存储介质中获得预先存储的所述时间标识信息。

其中,处理器701还用于执行如下操作步骤:

从所述非易失性存储介质中获得预先存储的节点标识信息,所述节点标识信息用于表示所述网络设备成为leader节点的期望值;

根据预设的映射关系确定与所述节点标识信息对应的所述时间标识信息。

其中,处理器701还用于执行如下操作步骤:

将所述节点标识信息代入映射函数,得到与所述节点标识信息对应的所述时间标识信息。

其中,处理器701还用于执行如下操作步骤:

将所述节点标识信息代入映射函数,得到输出值;

将所述输出值乘以预设的心跳时间间隔,计算得到所述时间标识信息。

其中,所述节点标识信息的取值为根据所述网络设备的工作性能,在预设的区间范围内选取的与所述工作性能相匹配的值。

进一步的,处理器还可以与存储器和通信接口相配合,执行上述发明实施例网络设备的操作。

需要说明的是,本发明实施例也可以基于通用的物理服务器结合网络功能虚拟化(英文:networkfunctionvirtualization,nfv)技术实现的虚拟网络设备,所述虚拟网络设备可以是运行有用于选举leader功能的程序的虚拟机(英文:virtualmachine,vm),所述虚拟机部署在硬件设备上(例如,物理服务器)。虚拟机指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。

需要说明的是,本发明实施例提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面的选举领导者leader的方法。

需要说明的是,本发明实施例提供了一种包含指令的计算机程序产品,当其在计算机上执行时,使得计算机执行上述各方面的选举领导者leader的方法。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:rom或随机存储记忆体ram、磁碟或者光盘等各种可存储程序代码的介质。

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