Raft 算法是可以用來替代 Paxos 算法的分布式一致性算法,而且 raft 算法比 Paxos 算法更易懂且更容易實現(xiàn)。本文對 raft 論文進行翻譯,希望能有助于讀者更方便地理解 raft 的思想。如果對 Paxos 算法感興趣,可以看我的另一篇文章:分布式系列文章——Paxos算法原理與推導(dǎo)

摘要

Raft 是用來管理復(fù)制日志(replicated log)的一致性協(xié)議。它跟 multi-Paxos 作用相同,效率也相當(dāng),但是它的組織結(jié)構(gòu)跟 Paxos 不同。這使得 Raft 比 Paxos 更容易理解并且更容易在工程實踐中實現(xiàn)。為了使 Raft 協(xié)議更易懂,Raft 將一致性的關(guān)鍵元素分開,如 leader 選舉、日志復(fù)制和安全性,并且它實施更強的一致性以減少必須考慮的狀態(tài)的數(shù)量。用戶研究的結(jié)果表明,Raft 比 Paxos 更容易學(xué)習(xí)。 Raft 還包括一個用于變更集群成員的新機制,它使用重疊的大多數(shù)(overlapping majorities)來保證安全性。

1 介紹

一致性算法允許多臺機器作為一個集群協(xié)同工作,并且在其中的某幾臺機器出故障時集群仍然能正常工作。 正因為如此,一致性算法在建立可靠的大規(guī)模軟件系統(tǒng)方面發(fā)揮了關(guān)鍵作用。 在過去十年中,Paxos [15,16] 主導(dǎo)了關(guān)于一致性算法的討論:大多數(shù)一致性的實現(xiàn)都是基于 Paxos 或受其影響,Paxos 已成為用于教授學(xué)生一致性相關(guān)知識的主要工具。

不幸的是,Paxos 實在是太難以理解,盡管許多人一直在努力嘗試使其更易懂。 此外,其架構(gòu)需要復(fù)雜的改變來支持實際系統(tǒng)。 結(jié)果是,系統(tǒng)開發(fā)者和學(xué)生都在與 Paxos 斗爭。

在我們自己與 Paxos 斗爭之后,我們開始著手尋找一個新的一致性算法,可以為系統(tǒng)開發(fā)和教學(xué)