美文网首页
Raft 基础

Raft 基础

作者: 莫那一鲁道 | 来源:发表于2018-10-26 18:02 被阅读282次

目录

  1. 三个状态
  2. 什么是任期
  3. 节点之间的通信

1. 三个状态

Raft 设计了 3 个状态,用于表示节点的状态,分别是跟随者,候选者,领导者。

  1. 领导者:通常只有一个领导人,并且其他节点都是跟随者。
  2. 跟随者:跟随者不会发送任何请求,只是简单的响应领导者或者候选人的请求,由领导人处理所有的客户端请求(如果客户端请求了跟随者,那么跟随者会将请求转发给领导者)
  3. 候选者:选举新的领导人时使用。

3 个角色的转换关系和流程:

图 1

可以看到,这张图里的几个概念:

  1. 初始化:所有服务器启动时,都是跟随者
  2. 超时:当初始时, 没有收到领导人的心跳,便开始选举。如果候选者选举的时候,也超时了,便重新选举。
  3. 大多数的选票:成为领导人的关键是 —— 获取大多数服务器的选票,可以看做是鸽笼原理。

2. 什么是任期

目录:

  1. 2 个阶段
  2. 任期
  3. 服务器之间的通信

背景:由于机器的物理时间是不可靠的,所以需要一个逻辑时间。称之为任期(term)。

从 2 个阶段开始说起

集群节点通常有 2 个节点:

  1. 选举阶段
  2. 领导者正常运行

例外:当选举失败,会进行加时赛,即连续有 2 个选举过程。

见下图:

图 2

图 2 可见任期 3 选举失败,然后进行了重新选举。

重新选举会继续失败吗?

答:如果不做限制,是会理解失败的。

Raft 使用了一个限制来规避:每台服务器在选举的时候,使用一个随机数(150 -200),即每个服务器在不同的时间发出选举。防止冲突。称之为“加时赛”。

任期号

在上文中说道:由于机器的物理时间是不可靠的,所以需要一个逻辑时间。称之为任期(term)。

有关任期的几个特点:

  1. 节点有可能观察不到任何一次选举或者任期。
  2. 任期充当逻辑时钟,服务器节点可以通过任期号查明过期的领导者或过期的信息。
  3. 每个节点存储当前任期号,单调递增。
  4. 服务器之间的每次通信,都会交换当前任期号,交换任期号的目的:
    4.1 如果一个服务器的当前任期号比其他人小,则更新自己。
    4.2 如果一个候选人或者领导人发现自己的任期号过期了,立刻将自己变成跟随者状态。
    4.3 如果一个节点收到一个过期的任期号的请求,直接拒绝。

3. 节点之间的通信

服务器之间通过 RPC 通信,即远程方法调用。

在 Raft 中,RPC 分成 3 种:

  1. 请求投票: RequestVote 由候选人在选举任期发起
  2. 附加条目 AppendEntries 由领导人发起,用来复制日志和提供心跳。
  3. 为了传输快照单独增加的 RPC。

备注:当服务没有及时收到 RPC 的响应时,会发起重试。

Summary

  1. 3 个状态的意义和他们之间切换
  2. 任期的设计背景,任期在节点通信时的作用,任期在增长策略。
  3. 节点直接的通信 RPC 类型以及策略。

参考

英文 paper pdf 地址

Raft paper 中文翻译 —— 寻找一种易于理解的一致性算法(扩展版)

Raft 作者讲解视频

Raft 作者讲解视频对应的 PPT

一个简单的讲解 Raft 协议的动画

相关文章

  • Raft 基础

    目录 三个状态 什么是任期 节点之间的通信 1. 三个状态 Raft 设计了 3 个状态,用于表示节点的状态,分别...

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

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

  • Raft算法

    前言 Raft算法是解决分布式系统共识的问题的算法,Raft是基于Multi-Paxos的基础上做了简化和限制。不...

  • Raft精华

    基础 Raft是管理复制日志的一致性算法Raft基于Leader,Follow各个机器上,日志一致了,状态就一致了...

  • 分布式系统-实验-kvraft

    介绍 这一次我们要在 实验二:Raft 的基础上创建一个可以容错的键值存储服务。具体来说就是用几个 Raft 实例...

  • 深入剖析共识性算法 Raft

    一、 Raft简介 1.1 Raft简介 Raft[https://ramcloud.atlassian.net/...

  • Raft算法可视化

    Raft可视化raft模型:http://thesecretlivesofdata.com/raft/多个节点的一...

  • raft算法笔记

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

  • fabric1.4.1新特性 — raft排序服务

    1. RAFT排序服务介绍 在fabric1.4.1的版本中,提供了基于raft共识的raft排序服务。raft的...

  • Raft论文学习

    [TOC] 参考资料 raft论文原文 raft论文中文译文 raft毕业论文 raft理解 一文带你了解 Raf...

网友评论

      本文标题:Raft 基础

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