Raft共识算法筏形标志

什么是Raft?

Raft是一种共识算法,其设计目的是易于理解。它是在容错性和性能方面与Paxos相当。区别在于它被分解成相对独立的子问题,并且它非常清晰解决了实际系统所需的所有主要部分。我们希望Raft能更广泛的受众可以达成共识能够开发出比目前更高质量的基于共识的系统今天可用。

坚持到底什么是共识?

一致性是容错分布式系统中的一个基本问题。共识涉及多个服务器就价值达成一致。一旦他们达到决定一个值,这个决定是最终的。典型共识算法大多数服务器可用时的进度;例如,a即使2台服务器出现故障,5台服务器的集群也可以继续运行。如果更多服务器出现故障,它们将停止进展(但不会返回结果不正确)。

共识通常出现在复制状态机的上下文中构建容错系统的一般方法。每个服务器都有一个状态机器和原木。状态机是我们想要制作的组件容错,例如哈希表。在客户看来,他们是与单个可靠的状态机交互,即使群集中的服务器出现故障。每个状态机都接受来自的输入命令它的日志。在我们的哈希表示例中,日志将包括以下命令设置x到3。一致性算法用于同意服务器日志。一致性算法必须确保如果任何状态机应用将x设置为3作为n个第个命令,无其他命令状态机将应用不同的n个第个命令。作为一个结果,每个状态机处理相同的命令序列,因此产生相同的结果序列并达到相同的状态序列。

筏可视化

这是一个在浏览器中运行的Raft集群。您可以与它交互以查看筏在行动。左边显示了五台服务器,它们的日志显示在右边。我们希望很快能制作一个视频来解释正在发生的事情可视化(救生筏镜)边缘仍然很粗糙;非常欢迎拉入请求。

数据的秘密生活是Raft的另一种视觉效果。它更具指导性,互动性更少,所以这可能是一个温和的起点。

出版物

这是“筏纸”,它详细描述了筏:寻找一种可理解的共识算法(扩展版)通过迭戈·昂加罗欧斯特霍特.这篇论文的一个略短的版本在2014 USENIX年度技术会议.

迭戈·翁加罗的博士论文更详细地扩展了论文的内容,其中包括更简单的集群成员更改算法。论文还包括一个用TLA+编写的筏的正式规范;稍有更新的版本规格是在这里.

更多与筏相关的论文:

会谈

这些讲座很好地介绍了Raft:

Raft教学课程

这是一个包含Raft课程或编程作业的课程列表。这可能对其他讲师和寻找材料的在线学习者有用。如果您知道其他课程,请提交一份拉入请求或更新问题。

我可以在哪里提问?

询问有关Raft及其实现的问题的最佳位置是raft-dev谷歌集团.一些实现也有自己的邮件列表;检查他们的自述文件。

我在哪里可以买到Raft?

在以下各个阶段有许多Raft实现发展。此表列出了我们已知的源代码实现代码可用。最流行和/或最近更新的实现包括朝向顶部。这些信息将不可避免地过时;请提交一份拉入请求或更新问题。

星星 姓名 主要作者 语言 许可证 领导者选举+日志复制? 坚持不懈? 成员变更? 原木压实?