Raft算法

「爱情、让人受尽委屈。」 2023-06-15 04:53 104阅读 0赞

Raft算法


目录

  1. 单个 Candidate 的竞选
  2. 多个 Candidate 的竞选
  3. 数据同步

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


1. 单个 Candidate 的竞选

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

  • 下图展示一个分布式系统的最初阶段,此时只有 Follower 没有 Leader。Node A 等待一个随机的竞选超时时间之后,没有收到 Leader 发来的心跳包,因此进入竞选阶段。
    在这里插入图片描述
  • 此时 Node A 发送投票请求给其他所有节点。
    在这里插入图片描述
  • 其他节点会对请求进行回复,如果超过一半的节点回复了,那么该 Candidate 就会变成 Leader。
    在这里插入图片描述
  • 之后 Leader 会周期性地发送心跳包给 Follower,Follower 接收到心跳包,会重新开始计时。
    在这里插入图片描述

2. 多个 Candidate 的竞选

  • 如果有多个 Follower 成为 Candidate,并且所获票数相同,那么就需要重新开始投票。例如下图中 Node B 和 Node D 都获得两票,需要重新开始投票。
    在这里插入图片描述
  • 由于每个节点设置的随机竞选超时时间不同,因此下一次挨次出现多个 Candidate 并获得同样票数的概率很低。
    在这里插入图片描述

3. 数据同步

  • 来自客户端的修改都会传入 Leader。注意该修改还未被提交,只是写入日志中。
    在这里插入图片描述
  • Leader 会把修改复制到所有的 Follower。
    在这里插入图片描述
  • Leader 会等待大多数的 Follower 也进行了修改,然后才将修改提交。
    在这里插入图片描述
  • 此时 Leader 会通知所有 Follower 让它们也提交修改,此时所有节点的值达到一致。
    在这里插入图片描述

具体演示可以看:
https://raft.github.io/
http://thesecretlivesofdata.com/raft/

发表评论

表情:
评论列表 (有 0 条评论,104人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Raft共识算法

    目录 什么是Raft? 等等-什么是共识? Raft可视化 刊物 会谈 Raft课程 我在哪里可以问问题? 我在哪里可以买到筏子? -------------

    相关 Raft一致性算法

    Why Not Paxos Paxos算法是莱斯利·兰伯特(LeslieLamport,就是 LaTeX 中的”La”,此人现在在微软研究院)于1990年提出的一种基于消

    相关 共识算法Raft

    多个拜占庭将军要如何在可能有叛徒、信使可能被策反或者暗杀的情况下达成是否要进攻的一致性决定?还不了解的先看看上一篇[《拜占庭将军问题》][Link 1]。这篇主要是介绍简化版拜

    相关 Raft算法详解

    [Paxos算法详解][Paxos]一文讲述了晦涩难懂的Paxos算法,以可理解性和易于实现为目标的Raft算法极大的帮助了我们的理解,推动了分布式一致性算法的工程应用,本文试