Paxos是公认的共识算法,但难以理解且难以实现,因此基于它的生产系统容易出现微妙缺陷,这些缺陷只在领导者故障时才会显现。

Raft以不同的优先级编写:它在容错性和性能上与Paxos相当,区别在于它被设计为易于理解。其作者将共识分解为领导者选举、按顺序复制的日志以及一条安全规则。

这种分离让更广泛的受众能够正确实现它。可理解性被视为首要需求,结果是产生了一种团队能够真正推理并部署的共识算法。

为必须验证它的人类设计算法

可理解的阶段对应于程序员能够验证的内容。

共识中的聪明才智往往滋生实现缺陷。

更广泛的正确采用胜过微弱的性能优势。

当正确性依赖于许多其他人的正确性时,让困难的事情易于验证;仅仅聪明的设计会通过缺陷花费更多,而不是在优雅上获得收益。

Raft被etcd、Consul、CockroachDB等许多分布式系统采用,并成为工程师学习和构建共识的默认方式。

从这里,追溯依据

参考来源

  1. In Search of an Understandable Consensus Algorithm (Raft) Stanford University · raft.github.io
  2. etcd documentation etcd · etcd.io