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

猜你喜欢

转载自www.cnblogs.com/hadex/p/9109228.html
今日推荐