您須要瞭解的有關Raft的5件事

1. Raft是一種易於理解的共識算法。算法

運行分佈式系統的一個基本問題是確保當節點故障時它們是可靠的。一般,CPU可能會過熱,HDD可能會損壞,網絡可能不可靠,可能會發生電源中斷,而且這種狀況還會持續下去。相當重要的是要假設會發生故障,而且咱們須要一種方法來確保分佈式系統能夠承受故障。共識算法用於確保分佈式系統具備容錯能力,還用於確保節點在值上達成一致。例如,即便其中2臺服務器發生故障而且它們的狀態/值一致,由5臺服務器組成的集羣仍將可操做。安全

由圖靈獎得到者萊斯利·蘭波特(Leslie Lamport)建立的一種稱爲Paxos的共識協議因難以理解而聞名。 Lamport的描述主要是關於單Paxos。他勾畫出了實現多Paxos的可能方法,可是缺乏許多細節。即便存在Neo4j,Google Spanner和Cassandra等基於多Paxos的著名應用程序,它們與Paxos幾乎沒有類似之處。服務器

Raft的建立易於理解且性能卓越。它旨在讓大量讀者輕鬆地理解算法,系統構建者能夠在現實世界中進行不可避免的擴展。網絡

2.Raft使用基於領導者的方法.分佈式

Raft共識協議是一種基於領導者的方法,與Paxos等對等(P2P)方法相反。 Raft經過首先選舉一位傑出的領導者,而後賦予領導者徹底責任來管理複製日誌來實現共識。您必定想知道什麼是複製日誌。性能

共識算法本質上是複製狀態機的實現,用於解決分佈式系統中的各類容錯問題。一般使用每一個服務器中都存在的複製日誌(命令序列)來實現複製狀態機。共識模塊的工做是確保複製的日誌在整個羣集中保持一致。所以,狀態機是肯定性的,即每一個狀態機計算相同的狀態和相同的輸出序列。spa

3.每一個節點在任何給定時間處於三種可能狀態之一。翻譯

在Raft中,有三種可能的狀態:領導者,候選人和追隨者。
領導者負責將日誌複製到關注者。它經過發送心跳消息按期通知跟隨者其存在。
每一個跟隨者都有一個超時(一般在150到300毫秒之間),在該超時中,指望跟隨者的心跳。收到心跳後,超時將重置。
若是未收到心跳,則追隨者將其狀態更改成候選者,並開始進行領導者選舉。日誌

4.Raft的安全性能保證。blog

Raft保證如下安全屬性:

  • 選舉安全:在給定的任期內最多能夠選舉一位領導人。
  • 僅領導者追加:領導者只能將新條目追加到其日誌中(既不能覆蓋也不能刪除條目)。
  • 日誌匹配:若是兩個日誌包含具備相同索引和術語的條目,則直到給定索引的全部條目中的日誌都是相同的。
  • 領導者完整性:若是在給按期限內提交了日誌條目,則自該術語以來,它將出如今領導者的日誌中
  • 狀態機安全性:若是服務器已將特定的日誌條目應用於其狀態機,則沒有其餘服務器能夠對同一日誌應用不一樣的命令。

5.Kubernetes的數據存儲基於Raft。

Kubernetes由名爲etcd的分佈式鍵值存儲支持,該存儲用於存儲和複製集羣的狀態。在內部,etcd使用Raft來確保一致性和容錯能力。沒有etcd,Kubernetes將沒法在全部羣集上協調任務,例如配置,部署,服務發現,負載平衡,做業調度和運行情況監視,這些羣集能夠在多個位置的多臺機器上運行。

PS: 本文屬於翻譯,原文

相關文章
相關標籤/搜索