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 允許所有副本從客戶端接收值并動態排序命令以進一步減少消息延遲。