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

一种基于Raft的自适应的选主方法与流程

2022-07-10 07:10:58 来源:中国专利 TAG:
一种基于raft的自适应的选主方法
技术领域
1.本技术涉及互联网技术领域,具体公开了一种基于raft的自适应的 选主方法。


背景技术:

2.raft是一种共识算法,旨在替代paxos,它通过逻辑分离比paxos更 容易理解,但它也被正式证明是安全的,并提供了一些额外的功能。[1] raft提供了一种在计算系统集群中分布状态机的通用方法,确保集群中的 每个节点都同意一系列相同的状态转换。它有许多开源参考实现,具有 go,c ,java和scala中的完整规范实现;
[0003]
在了解raft之前,我们先了解consensus一致性这个概念,它是指多 个服务器在状态达成一致,但是在一个分布式系统中,因为各种意外可能, 有的服务器可能会崩溃或变得不可靠,它就不能和其他服务器达成一致状 态。这样就需要一种consensus协议,一致性协议是为了确保容错性,也 就是即使系统中有一两个服务器当机,也不会影响其处理过程。
[0004]
在raft中,任何时候一个服务器可以扮演下面角色之一:
·
leader: 处理所有客户端交互,日志复制等,一般一次只有一个leader;
·
follower: 类似选民,完全被动;
·
candidate候选人:类似proposer律师,可以被 选为一个新的领导人;
[0005]
在应用raft共识算法的区块链中环境下,当出现leader节点宕机时, 会通过raft的选主算法进行重新选主。由于raft原始选主算法要求是日 志更新和获得最多选票,通过这种方式选出来的主节点不一定在网络、配 置上最优的节点,这可能会影响集群的效率和稳定性,鉴于此,发明人提 出一种基于raft的自适应的选主方法。


技术实现要素:

[0006]
本发明的目的在于确保集群内最优的节点成为leader。
[0007]
为了达到上述目的,本发明提供以下基础方案:
[0008]
一种基于raft的自适应的选主方法,包括以下步骤:
[0009]
s001:赋予每个节点i评分值fi;
[0010]
s002:当投票时,确定节点i是否满足成为leader节点,如不满足 leader节点条件,转变为follower节点,满足leader节点条件的节点i 转变为candidate节点;
[0011]
s003:在按照正常的raft投票流程外,candidate节点等待t时间, 等待follower节点的投票请求;
[0012]
s004:收集若干满足leader节点的candidate节点;
[0013]
s005:当如果自己满足成为leader节点,也等待t时间,和其他 candidate节点进行f值的比较,如f值最高,把票投给自己,反之,把票 投给f值最高的节点。
[0014]
本基础方案的原理及效果在于:
[0015]
1.与现有技术相比,可以选出最合适的节点来做leader。
[0016]
2.与现有技术相比,在集群重视io或者网络延迟的情况下,可以动 态的调整某些
函数的参数系数,以便适应业务所需要求,有自适应、动态 评分方法。
[0017]
3.与现有技术相比,最优节点始终有机会成为leader节点。
[0018]
进一步,步骤s001中fi=σe
igk
(xk),其中ei为参数系数,gk(xk)为 计算某一个参数分数的估值函数,g函数应该满足值越高,机器可靠性越 高或者者性能越强。
[0019]
进一步,步骤s001中的ei参数有cpu使用率,网络延迟,io速率等; g函数应该随着网络延迟越低而返回值越高。
[0020]
进一步,g函数满足
[0021]
进一步,每个步骤中的每个candidate节点在时间间隔f内重新计算 自己的值,然后广播给其他follower节点,可以利用提前计算出来的值来 减少选主时的时间。
[0022]
进一步,通过fi=σe
igk
(xk),计算出满足leader节点的评分值,选 出评分值的最高节点,其余的follower节点将票给与f值最高那位 candidate节点,candidate节点即转变为leader节点。
具体实施方式
[0023]
为更进一步阐述本发明为实现预定发明目的所采取的技术手段及功 效,以下结合较佳实施例,对依据本发明的具体实施方式、结构、特征及 其功效,详细说明如后。
[0024]
实施例如下所示:
[0025]
关于raft共识算法以及在应用raft共识算法的区块链中环境下,在 raft中,任何时候一个服务器可以扮演下面角色之一:
·
leader:处理所 有客户端交互,日志复制等,一般一次只有一个leader.
·
follower:类 似选民,完全被动
·
candidate候选人:类似proposer律师,可以被选为 一个新的领导人,由于可能会出现出现leader节点宕机,因此需要选出 的新的leader节点作为领导人,由于raft原始选主算法要求是1.日志更 新,2.获得最多选票,但是这种选举方式选出来的主节点不一定在网络、 配置上最优的节点,这会影响集群的效率和稳定性。因此,发明人设计了 一种新的自适应的选主方法。
[0026]
一种基于raft的自适应的选主方法,包括以下步骤:
[0027]
s001:赋予每个节点i评分值,fi=σe
igk
(xk),其中ei为某一个的参 数系数,gk(xk)为计算某一个参数分数的估值函数,g函数应该满足值越 高,机器可靠性越高或者者性能越强;
[0028]
该处节点i指的是服务器,传统的选举模式就是只要超过半数的大多 数服务器达成一致就可以了,假设有n台服务器,n/2 1就超过半数, 即变为leader节点,在本方法中,取消上述选举模式,将每个节点均赋 予一个函数,fi=σe
igk
(xk),通过fi的大小判断leader节点。
[0029]
上述已经知道满足leader节点需要1.日志更新,2.获得最多选票,在 投票前,日志不够新或者没有更新的节点不满足上述条件,成为follower 节点,不再具备被投票资格,只有投票资格。
[0030]
s002:当投票时,确定节点i是否满足成为leader节点,如不满足 leader节点条件,转变为follower节点,满足leader节点条件的节点i 转变为candidate节点;
[0031]
s003:在按照正常的raft投票流程外,candidate节点等待t时间, 等待follower
节点的投票请求;
[0032]
在这个环节中,假设等待t时间为300ms,那么在这个时间段的 follower节点的投票为正长投票,即为合格选票,反之则相反。
[0033]
但是为了背景技术所说的最优节点的相关问题,本方法设计了s004, 通过s004来控制follower节点的投票,以至于选出一个最优的节点;
[0034]
s004:收集若干满足leader节点的candidate节点,通过步骤s001, 通过fi=σe
igk
(xk),计算出满足leader节点的评分值,例如:参与评估 的参数有cpu使用率,网络延迟,io速率等,他们参数分别为a,b,c,那 么对于评分值fi为:
[0035]
ag
cpu使用率估值函数
(cpu利用率) bg
网络估值函数
(网络延迟) cg
io速率估值函数
(io利用率)。
[0036]
选出评分值的最高节点,其余的follower节点默认将票给与f值最高 那位candidate节点,candidate节点即转变为leader节点,这种方式就 可以选出在网络、配置上最优的节点,不会影响集群的效率和稳定性。
[0037]
当选出leader节点后,在leader节点领导下完成日志复制:1.leader 节点要求followe节点遵从他的指令,都将这个新的日志内容追加到他们 各自日志中;2.大多数follower节点服务器将日志写入磁盘文件后,确认 追加成功,发出commited ok;3.在下一个心跳heartbeat中,leader节点 会通知所有follwer节点更新commited项目,对于每个新的日志记录, 重复上述过程。
[0038]
再选举的过程中,会存在自己满足leader节点的情况,即自己不是 follower节点,而是candidate节点,因此,设计了s005。
[0039]
s005:当如果自己满足成为leader节点,也等待t时间,和其他 candidate节点进行f值的比较,如f值最高,把票投给自己,反之,把票 投给f值最高的节点,这种方式适用于所有candidate节点,确保每一个 candidate节点都是公平的。
[0040]
每个candidate节点在时间间隔f内重新计算自己的f值,然后广播给 其他follower节点,其他follower节点看见你的f值为最高的话,就可以 直接投票,可以利用提前计算出来的f值来减少选主时的时间。
[0041]
接着,如上述所知,当选出leader节点,仍然会出现leader节点突 然宕机的情况,因此,发明人设计了s006。
[0042]
s006:给集群增加requestrevote方法,如果评分最高的节点(即 leader节点)因为不满足某一轮选主条件或者突然宕机而落选,则在自己 满足leader节点条件时,根据集群统计的或者规定的闲时或者既定的间 隔时间发起集群选主,保证集群内最优的节点成为leader节点。
[0043]
上述的选举方法可以选出最合适的节点来做leader,根据上述方法 可以明确知道,核心在于函数:fi=σe
igk
(xk),当在集群重视io或者网 络延迟的情况下,可以动态的调整某些fi=σe
igk
(xk)函数的参数系数, 以便通过该函数动态确定f值,进而确定最合适的leader节点,这种函 数是一种自适应、动态评分方法,可以在不同的环境和时间内调整。
[0044]
关于s006的设计,通过给集群增加requestrevote方法和根据集群统 计的或者规定的闲时或者既定的间隔时间发起集群选主的模式,使得最优 节点始终有机会成为leader节点,leader节点不再是一个固定的节点, 而是随时都可以变化的节点,但是无论怎么变化,该时间段的leader节 点始终为该集群内最优的节点。
[0045]
综上:与现有技术相比,1.可以选出最合适的节点来做leader;2.在 集群重视io或者网络延迟的情况下,可以动态的调整某些函数的参数系 数,以便适应业务所需要求,有自适应、动态评分方法;3.最优节点始终 有机会成为leader节点。
[0046]
本发明的目的在于确保集群内最优的节点成为leader。
[0047]
尽管为使解释简单化,将上述方法描述为一系列动作,但应理解并领 会这些方法不受动作的次序所限。根据一个或多个实施例,一些动作可按 不同次序发生和/或与来自本文中的描述但本领域技术人员可以理解的其 他动作并发地发生。为使本领域技术人员将进一步领会,结合本文中所公 开的实施例来描述的各种解说性逻辑板块、模块、电路、和算法步骤可实 现为电子硬件、计算机软件、或这两者的组合。为清楚地解说硬件与软件 的这一可互换性,各种解说性组件、框、模块、电路、和步骤在上面是以 其功能性的形式作一般化描述的。此类功能性是被实现为硬件还是软件取 决于具体应用和施加于整体系统的设计约束。技术人员对于每种特定应用 可用不同的方式来实现所描述的功能性,但这样的实现决策不应被解读成 导致脱离了本发明的范围。结合本文所公开的实施例描述的各种解说性逻 辑板块、模块、和电路可用通用处理器、数字信号处理器(dsp)、专用集 成电路(asic)、现场可编程门阵列(fpga)或其它可编程逻辑器件、分立 的门或晶体管逻辑、分立的硬件组件、或其设计成执行本文所描述功能的 任何组合来实现或执行。通用处理器可以是微处理器,但在替换方案中, 该处理器可以是任何常规的处理器、控制器、微控制器、或状态机。处理 器还可以被实现为计算设备的组合,例如dsp与微处理器的组合、多个 微处理器、与dsp核心协作的一个或多个微处理器、或任何其他此类配 置。结合本文中公开的实施例描述的方法或算法的步骤可直接在硬件中、 在由处理器执行的软件模块中、或在这两者的组合中体现。软件模块可驻 留在ram存储器、闪存、rom存储器、eprom存储器、eeprom存 储器、寄存器、硬盘、可移动盘、cd-rom、或本领域中所知的任何其他 形式的存储介质中。示例性存储介质耦合到处理器以使得该处理器能从/ 向该存储介质读取和写入信息。在替换方案中,存储介质可以被整合到处 理器。处理器和存储介质可驻留在asic中。asic可驻留在用户终端中。 在替换方案中,处理器和存储介质可作为分立组件驻留在用户终端中。在 一个或多个示例性实施例中,所描述的功能可在硬件、软件、固件或其任 何组合中实现。如果在软件中实现为计算机程序产品,则各功能可以作为 一条或更多条指令或代码存储在计算机可读介质上或藉其进行传送。计算 机可读介质包括计算机存储介质和通信介质两者,其包括促成计算机程序 从一地向另一地转移的任何介质。存储介质可以是能被计算机访问的任何 可用介质。作为示例而非限定,这样的计算机可读介质可包括ram、rom、 eeprom、cd-rom或其它光盘存储、磁盘存储或其它磁存储设备、或 能被用来携带或存储指令或数据结构形式的合意程序代码且能被计算机 访问的任何其它介质。任何连接也被正当地称为计算机可读介质。例如, 如果软件是使用同轴电缆、光纤电缆、双绞线、数字订户线(dsl)、或诸 如红外、无线电、以及微波之类的无线技术从web网站、服务器、或其 它远程源传送而来,则该同轴电缆、光纤电缆、双绞线、dsl、或诸如红 外、无线电、以及微波之类的无线技术就被包括在介质的定义之中。如本 文中所使用的盘(disk)和碟(disc)包括压缩碟(cd)、激光碟、光碟、数字多 用碟(dvd)、软盘和蓝光碟,其中盘(disk)往往以磁的方式再现数据,而 碟(disc)用激光以光学方式再现数据。上述的组合也应被包括在计算机可 读介质的范围内。
再多了解一些

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

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

相关文献