Open Triple-Z opened 3 years ago
Raft 是一个用于管理 replicated log 的一致性算法。相比于同类的算法 Paxos,Raft:
Raft 几大特点:
对于单主集群的系统(如 GFS、HDFS、RAMCloud)来说,可以通过使用复制状态机来实现 leader 崩溃后保持系统可用。
复制状态机一般通过一个复制日志来实现,由于状态机都具有确定性,只要顺序给予相同的输入,一定都有相同的结果。这也就是复制状态机的能够复制状态的原理。
一致性算法的作用就是保证复制日志的一致性。节点上的一致性组件将接收到来自客户端的请求(命令)并将其追加到自己的日志中。接着,要把命令顺序地发送到其他节点的一致性组件上。一旦这些命令被正确的复制完成(如达到半数以上节点完成复制任务),每个节点的状态机都会顺序处理这些命令(此处应得到相同的结果),并把结果发送给客户端。因此,这些节点一起组成了一个高可靠的状态机。
在实际系统中,一致性算法具有以下特点:
[^1]: 非拜占庭条件(non-Byzantine conditions):包括网络延迟、网络分区、网络丢包、网络包重复以及包乱序问题。
作者认为 Paxos 过于学术与复杂,不适合大众理解也不适合工程实现。
作者在设计 Raft 的期望:
提高可理解性使用的两种方式:
https://pdos.csail.mit.edu/6.824/papers/raft-extended.pdf