码迷,mamicode.com
首页 > 编程语言 > 详细

分布式---Raft算法

时间:2019-07-07 14:40:53      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:一个   raft   多个   复制   ima   超过一半   mic   and   Raft算法   

6.Raft

??Raft也是分布式一致性协议,主要是用来竞选主节点

单个Candidate的竞选

??有三种节点:FollowerCandidateLeaderLeader会周期性的发送心跳给Follower。每个Follower都设置了一个随机的竞选超时时间,一般为150ms-300ms,如果在这个时间内没有收到Leader的心跳包,就会变成Candidate,进入竞选阶段。

  • 下图展示一个分布式系统的最初阶段,此时只有Follower没有Leader。Node A等待一个随机的竞选超时时间之后没收到Leader发来的心跳包,因此进入竞选阶段。

技术图片

  • 此时Node A 发送投票请求给其它所有节点。

技术图片

  • 其他节点会对请求进行回复,如果超过一半的节点回复了,那么该Candidate就会变成Leader

技术图片

  • 之后Leader会周期性的发送心跳包给Follower,Follower接收到心跳包,会重新开始计时。

技术图片

多个Candidate竞选

??如果有多个Follower称为Candidate,并且所获得票数相同,那么就需要重新开始投票。例如下图中的Node B和Node D都获得两票,需要重新开始投票。

技术图片

??由于每个节点设置的随机竞选超时时间不同,因此下一次再次出现多个candidate并获得同样票数的概率很低。

技术图片

数据同步

??来自客户端的修改都会被传入Leader。注意该修改还未被提交,只是写入日志中。

技术图片

??Leader会把修改复制到所有Follower

技术图片

??Leader会等待大多数的Follower也进行了修改,然后才将修改提交

技术图片

??此时Leader通知所有的Follower让它们也提交修改,此时所有的节点的值达成一致。

分布式---Raft算法

标签:一个   raft   多个   复制   ima   超过一半   mic   and   Raft算法   

原文地址:https://www.cnblogs.com/yjxyy/p/11146036.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!