ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

raft算法

2022-01-24 15:03:22  阅读:175  来源: 互联网

标签:任期 领导者 跟随者 算法 投票 编号 raft 节点


raft算法是分布式系统开发首选的一致性算法
角色分为:
跟随者(Follower):接收领导者的消息,当领导者心跳超时的时候,推荐自己当候选人。
候选人(Candidate):候选人向其他节点请求投票 ,通知其他节点来投票,如果赢得了大多数投票,就晋升领导者。
领导者(Leader):处理写请求、管理日志复制和不断地发送心跳信息,通知其他节点我还活着。
启动流程:
1.初始状态下,集群中所有节点都是跟随者的状态,
2.Raft 算法实现了随机超时时间的特性,每个节点等待领导者节点心跳信息的超时时间间隔是随机的。比如 A 节点等待超时的时间间隔 100ms,B 节点 150 ms
3.当 A 节点的超时时间到了后,A 节点成为候选者,增加自己的任期编号,Term 值从 0 更新为 1,并给自己投了一票
4.节点 B 和 节点 C 接收到节点 A 发送的请求投票信息后,在编号为 1 的这届任期内,还没有进行过投票,就把选票投给节点 A,并增加自己的任期编号。
5.节点 A 收到 3 次投票,得到了大多数节点的投票,从候选者成为本届任期内的新的领导者。
6.节点 A 作为领导者,固定的时间间隔给 节点 B 和节点 C 发送心跳信息,告诉节点 B 和 C,我是领导者,组织其他跟随者发起新的选举。
7.节点 B 和节点 C 发送响应信息给节点 A,告诉节点 A 我是正常的。
领导者的任期:
1.自动增加:跟随者在等待领导者心跳信息超时后,推荐自己为候选人,会增加自己的任期号.
2.更新为较大值:当节点发现自己的任期编号比其他节点小时,会更新到较大的编号值。比如节点 A 的任期为 1,请求投票,投票消息中包含了节点 A 的任期编号,且编号为 1,节点 B 收到消息后,会将自己的任期编号更新为 1。
3.恢复为跟随者:如果一个候选人或者领导者,发现自己的任期编号比其他节点小,那么它会立即恢复成跟随者状态。
4.拒绝消息:如果一个节点接收到较小的任期编号值的请求,那么它会直接拒绝这个请求,比如任期编号为 6 的节点 A,收到任期编号为 5 的节点 B 的请求投票 RPC 消息,那么节点 A 会拒绝这个消息。
5.在一次选举中,每一个服务器节点最多会对一个任期编号投出一张选票

标签:任期,领导者,跟随者,算法,投票,编号,raft,节点
来源: https://blog.csdn.net/wste3567/article/details/122667259

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有