Raft和paxos是热门的共识算法。Raft算法又是在paxos的基础上开发出来的。对比两者的差异有助于理解共识算法的设计思想。
1. 确保每个任期最多有一名领导人的方法是不同的。
Raft 允许每个节点都可以成为候选人,并在任何任期内开始选举,并且每个节点在一个任期内只能投票给一名候选人。 这样,只有一名候选人获得多数票并赢得选举。 然而,在 Paxos 中,并不是每个节点都可以成为候选者并开始选举,除非满足一定的条件:t(term) mod n(node) = s(server)。 在这种情况下,只有一名候选人,因此每个任期将有一名领导人赢得选举。
2. 确保新领导者包含所有已提交日志的方法也不同。
这一要求在 Raft 领导者选举阶段得到保证:节点只会投票给日志与其日志相比是最新的候选人。 而在 Paxos 中,节点将在其投票请求依赖中包含其日志实体,一旦候选人获得多数选票,它将在成为领导者后添加追随者的日志。
3. 确保领导者提交过去任期的日志的方法也不同。
Raft Leader 会在不更改 term 的情况下将前一个 term 的日志复制到 follower 中,但只有当前 term 的日志被复制时,承诺才会被视为完成。 相比之下,Paxos 会将之前任期的日志条目添加到领导者的日志中,然后领导者将这些日志复制到追随者,其中包含领导者任期的日志。
4. 基于原始 Paxos 概念,提出了一些变体来提高基本 Paxos 的效率。
Disk Paxos“用仅支持读块和写块操作的磁盘替换接受器进程来存储仲裁状态,以避免单独的接受器进程”。
Fast Paxos增加acceptor来减少消息延迟。
Epaxos 允许所有副本从客户端接收值并动态排序命令以进一步减少消息延迟。