Raft Paper 简译

  本文是对 Raft Paper 核心部分的意译,不包括原文中的如下章节:<3 Paxos 的优缺点论述>、<4 Raft 的易理解性介绍>、<9 Raft 算法的易理解性调研与性能评估>、<10 其它类似算法>、<12 致谢> 等,并且省略了多处学术论文的例行套话,力求言简意骇,突出重点。
  为求简明,本文中提到的“日志”均指“可复制日志”,“状态机”均指“可复制状态机”。
  原文链接:https://raft.github.io/raft.pdf

概要

  Raft 是一种用于管理日志的一致性算法。它的用途与 (multi-)Paxos 算法一样,运行效率与之相当,但它的结构与 Paxos 不同;这使得 Raft 比 Paxos 更容易理解,同时也为构建实际的系统打下了更好的基础。
  为增强可理解性,Raft 对共识算法的核心要素进行了拆分,例如领导者选举、日志复制及安全性保证等;为减少系统可能处于的状态总数量,Raft 强制执行一种更严苛的一致性策略。
  Raft 还包含了一种用于改变集群成员关系的新算法,它通过“联合多数”策略以保证安全性。

1. 引言

  共识算法的用途,是允许多台机器组成的集群,就像一个单点实体一样运行,其中的部分机器出现故障,不影响整个集群的可用性;它们是构建大规模、高可用的软件系统的核心要素之一。
  Paxos 算法的难以理解与实现困难,促使了 Raft 的诞生。我们的目标不止是算法的正确性,而且要更清楚地展示它为什么能工作。
  Raft 与现存的共识算法具有很多的相似性,但它有如下几个新特征:
  - 强化的领导者角色:相比其它共识算法,Raft 使用了一种强化的领导关系。例如,日志条目只能从领导者单向复制到其它机器;这简化了日志复制的逻辑,并使得 Raft 易于理解。
  - 领导者选举:Raft 使用随机计时器触发选举。这使得选举冲突的解决简单而高效,而代价仅仅是在所有共识算法都必需的心跳机制之上,增加了少许的逻辑。
  - 集群成员变更:Raft 使用了一种叫做“联合一致性”的方法来执行成员变更。在变更过程中,任何操作都必须同时得到两套成员配置(<新,新|旧> OR <新|旧,新>)中的多数成员的支持,方能生效;这使得集群在变更期间仍能对外提供正常的服务。
  本文的剩余部分,将依次介绍状态机问题(原文第 2 部分)、Raft 共识算法细节(原文第 5 至 8 部分)。

2. 状态机

状态机.png

  对共识算法的研究,通常无法脱离状态机的范畴。集群中的每台机器的状态机,通过执行相同的日志序列,将运算得到一致的最终状态;同时,即使其中的部分机器宕机,集群仍能正常运行。
  状态机用于解决分布式系统中的各种容错问题,通常使用日志来实现,如 Figure 1 所示。集群中的每台机器都有一份存储指令的日志,供其状态机按序执行。由于所有机器的日志都完全相同,因此状态机的执行结果是确定的,它们将运算出一致的最终状态,并得到相同的输出序列。
  共识算法的职责,就是保证所有日志的一致性。
  一台机器上的共识模块,负责接收客户端的指令,并将其追加到自己的日志中;之后,它与集群中的其它机器的共识模块通信,确保所有机器最终都得到了完全相同的日志(即使其中某些机器中途宕机);日志复制完成之后,每台机器的状态机将按序执行接收到的指令;最后将结果返回给客户端。如此,整个集群就表现为一个浑然一体的、高可用的状态机。
  实际系统中的共识算法,通常具有如下特性:
  - 除了“拜点庭将军问题”外,任何场景下都不会返回错误的结果,例如网络分区、延迟、丢包、重复、乱序等。
  - 当集群中半数以上的机器可用,且互相之间及与客户端之间通信正常时,整个集群处于完全可用状态;当故障机器恢复时,可重新加入集群。
  - 不依靠计时机制保证日志的一致性,因为错误的时钟或极端的延迟会带来问题。
  - 在大多数场景下,一旦对集群中的大多数机器的 RPC 调用成功返回,即可判定本次指令执行成功;少数的慢速机器不影响整个集群的效率。

5. Raft 共识算法

概览.png

核心特性.png

  Raft 是一种用于管理日志的算法,Figure 2 对其作了概括性的展示,Figure 3 则列出了它的核心特性,这些内容将在之后的章节中逐一介绍。
  Raft 实现一致性的方式是:首先选举出一个集群领导者,然后让它全权管理日志。领导者从客户端接收日志条目(也就是客户端请求执行的指令),之后将其复制到其他机器上,之后通知其它机器在各自的状态机中执行该日志。强化的领导者角色大大简化了日志的管理,由于日志的单向流动原则,领导者可以独自决定新的日志条目放在什么位置而不需要和其他机器协商。领导者若宕机或断网,一个新的很快就会被选举出来。
  通过使用强化的领导者角色,Raft 将共识问题分解成了三个相对独立的子问题,将分别在之后的子章节中介绍:
  - 领导者选举:第 5.2 部分。
  - 日志复制:第 5.3 部分。
  - 安全性:第 5.4 部分,另外,在 5.2 部分中提到了一个在选举时需要遵循的额外限制条件。

  在介绍完共识算法之后,本章节还会涉及到系统可用性以及时序在其中扮演的角色等话题。

  发现一篇翻译质量尚可的既存文章,后续部分请点击此处查看;待日后时间充裕,再精修本文。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 151,829评论 1 331
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 64,603评论 1 273
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 101,846评论 0 226
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,600评论 0 191
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,780评论 3 272
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,695评论 1 192
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,136评论 2 293
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,862评论 0 182
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,453评论 0 229
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,942评论 2 233
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,347评论 1 242
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,790评论 2 236
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,293评论 3 221
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,839评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,448评论 0 181
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,564评论 2 249
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,623评论 2 249

推荐阅读更多精彩内容

  • 寻找一种易于理解的一致性算法(扩展版) 摘要 Raft 是一种为了管理复制日志的一致性算法。它提供了和 Paxos...
    yflau阅读 863评论 0 1
  • 寻找一种易于理解的一致性算法(扩展版) 摘要 Raft 是一种为了管理复制日志的一致性算法。它提供了和 Paxos...
    枝叶君阅读 2,549评论 0 15
  • 寻找一种易于理解的一致性算法(扩展版) 摘要 Raft 是一种为了管理复制日志的一致性算法。它提供了和 Paxos...
    糖果果老师阅读 1,175评论 0 4
  • 可进入我的博客查看原文。 Raft 算法是可以用来替代 Paxos 算法的分布式一致性算法,而且 raft 算法比...
    Jeffbond阅读 13,098评论 4 91
  • 三十六计之胜战计 第一计:瞒天过海 备周则意怠,常见则不疑。阴在阳之内,不在阳之对。太阳,太阴。 第二计:围魏救赵...
    水筠心宁阅读 142评论 0 0