加载中...
一种为可理解性设计的分布式共识算法,由 Diego Ongaro 和 John Ousterhout 于 2014 年发表。旨在替代难以理解的 Paxos,被 etcd、CockroachDB、TiKV、Consul 等众多系统采用。

| 类型 | 分布式共识算法 |
| 发表时间 | 2014 年,USENIX ATC |
| 主要采用者 | etcd, CockroachDB, TiKV, Consul, InfluxDB |
Raft 把共识问题分解为三个子问题:Leader 选举、日志复制和安全性。集群只有一个 Leader,所有写入都通过 Leader。Leader 把日志条目发给所有 Follower,只要超过半数(Quorum)的节点确认收到,该条目就被提交,即使 Leader 随后崩溃,已提交的条目也不会丢失。Follower 在随机选举超时(150-300 ms)后没收到心跳就发起选举,随机超时避免了所有节点同时选举造成的分裂投票。[1]
Paxos 由 Leslie Lamport 于 1989 年描述,是第一个被广泛讨论的共识算法,但以难以理解和难以正确实现著称。Google Chubby(2006)实现了 Multi-Paxos,但没有公开完整的算法细节。Raft 的论文标题直接叫 In Search of an Understandable Consensus Algorithm,把可理解性放在设计首位,相关可视化动画(raft.github.io)让学习者可以直观看到选举和日志复制的过程。

| 类型 | 分布式共识算法 |
| 发表时间 | 2014 年,USENIX ATC |
| 主要采用者 | etcd, CockroachDB, TiKV, Consul, InfluxDB |
登录 后参与讨论
暂无讨论,来发表第一条评论吧