Raft算法

作者: 丹之 | 来源:发表于2018-11-18 16:34 被阅读48次

Raft

Paxos和Raft都是为了实现Consensus一致性这个目标,这个过程如同选举一样,参选者需要说服大多数选民(服务器)投票给他,一旦选定后就跟随其操作。Paxos和Raft的区别在于选举的具体过程不同。

在Raft中,任何时候一个服务器可以扮演下面角色之一:

  • Leader: 处理所有客户端交互,日志复制等,一般一次只有一个Leader.
  • Follower: 类似选民,完全被动
  • Candidate候选人: 类似Proposer律师,可以被选为一个新的领导人。
    Raft阶段分为两个,首先是选举过程,然后在选举出来的领导人带领进行正常操作,比如日志复制等。下面用图示展示这个过程:
  1. 任何一个服务器都可以成为一个候选者Candidate,它向其他服务器Follower发出要求选举自己的请求:


  2. 其他服务器同意了,发出OK。



    注意如果在这个过程中,有一个Follower当机,没有收到请求选举的要求,因此候选者可以自己选自己,只要达到N/2 + 1 的大多数票,候选人还是可以成为Leader的。
    3.这样这个候选者就成为了Leader领导人,它可以向选民也就是Follower们发出指令,比如进行日志复制。


  3. 以后通过心跳进行日志复制的通知


  4. 如果一旦这个Leader当机崩溃了,那么Follower中有一个成为候选者,发出邀票选举。


  5. Follower同意后,其成为Leader,继续承担日志复制等指导工作:



    值得注意的是,整个选举过程是有一个时间限制的,如下图:



    Splite Vote是因为如果同时有两个候选人向大家邀票,这时通过类似加时赛来解决,两个候选者在一段timeout比如300ms互相不服气的等待以后,因为双方得到的票数是一样的,一半对一半,那么在300ms以后,再由这两个候选者发出邀票,这时同时的概率大大降低,那么首先发出邀票的的候选者得到了大多数同意,成为领导者Leader,而另外一个候选者后来发出邀票时,那些Follower选民已经投票给第一个候选者,不能再投票给它,它就成为落选者了,最后这个落选者也成为普通Follower一员了。

英文动画演示Raft

CAP定理

分布式Paxos算法

ZooKeeper在服务发现中应用

分布式事务

相关文章

  • Raft算法解析

    什么是Raft算法? Raft算法是用于解决分布式系统中一致性问题的算法。在Raft算法之前,Lamport老爷爷...

  • 分布式共识算法

    导读: 拜占庭将军问题 1.概述 2.raft 一致性算法 2.1 raft算法选主流程 2.2 raft算法的数...

  • 共识算法:Raft

    共识算法:RaftRaft 官网Raft 原理动画 (推荐看看Raft 算法解析图片来源

  • raft算法笔记

    raft算法动画地址:http://thesecretlivesofdata.com/raft/raft是一个共识...

  • Raft 算法浓缩

    Raft 算法浓缩总结 Raft 论文给出了下面的表格,用于总结 Raft 算法精华 。 实际上,这些精华都是一条...

  • RAFT算法

    RAFT算法: RAFT算法引用原文论文翻译的第一句话:RAFT是一种为了管理复制日志的一致性算法(https:/...

  • Part 03:Raft论文翻译-《CONSENSUS: BRI

    3. 基础Raft算法 本章介绍了Raft算法。我们努力将Raft算法设计的更容易理解;第一部分描述了我们的可理解...

  • 图解Raft

    轻松理解Raft算法

  • 分布式一致性算法:Raft 算法(Raft 论文翻译)

    可进入我的博客查看原文。 Raft 算法是可以用来替代 Paxos 算法的分布式一致性算法,而且 raft 算法比...

  • 【raft】关于raft算法原理

    raft 是什么? Replicated And Fault Tolerant,复制和容错 raft算法的动画演示...

网友评论

    本文标题:Raft算法

    本文链接:https://www.haomeiwen.com/subject/rlygfqtx.html