一致性算法
- 起源 - Raft协议起源于 2013 年 斯坦福 Diego Ongaro和John Ousterhout的论文《In Search of an Understandable Consensus Algorithm》。作者表示因为Paxos 晦涩难懂且缺乏工程实现,所以要设计个既容易实现又利于学生学习的一致性算法。Raft 的数据一致性等价于 Multi Paxos,可以用于取代Paxos,并且证明可以提供与Paxos相同的容错性以及性能。 Raft协议是一种基于日志复制的一致性算法,通过选举领袖的方式来实现的。Raft协议设计首要目标是易于理解,所以采用了分解法(Raft流程可分解为选主、日志复制和安全)和状态空间简化(相较于 Paxos,Raft 减少了未定状态的数量)。 - 节点状态 - 在Raft集群里,服务器可能会是这三种身份其中一个: Leader (领袖者):所有请求的处理者,Leader 接受 client的更新请求,本地处理后再同步至多个其他节点; Follower (追随者) :请求的被动更新者,从Leader接受更新请求,然后写入本地日志文件 Candidate (候选人) :节点处于候选状态,正在竞选 Leader。 在正常情况下只会有一个领袖者节点,其他都是追随者节点。而领袖节点会负责所有外部的请求,如果是 非领袖节点收到 时,请求会被 转发 到