raft原理的動畫演示
阿新 • • 發佈:2018-11-19
轉自:https://blog.csdn.net/zl1zl2zl3/article/details/79621937
過去, Paxos一直是分散式協議的標準,但是Paxos難於理解,更難以實現,Google的分散式鎖系統Chubby作為Paxos實現曾經遭遇到很多坑。
來自Stanford的新的分散式協議研究稱為Raft,它是一個為真實世界應用建立的協議,主要注重協議的落地性和可理解性。
在瞭解Raft之前,我們先了解Consensus一致性這個概念,它是指多個伺服器在狀態達成一致,但是在一個分散式系統中,因為各種意外可能,有的伺服器可能會崩潰或變得不可靠,它就不能和其他伺服器達成一致狀態。這樣就需要一種Consensus協議,一致性協議是為了確保容錯性,也就是即使系統中有一兩個伺服器當機,也不會影響其處理過程。
為了以容錯方式達成一致,我們不可能要求所有伺服器100%都達成一致狀態,只要超過半數的大多數伺服器達成一致就可以了,假設有N臺伺服器,N/2 +1 就超過半數,代表大多數了。
Paxos和Raft都是為了實現Consensus一致性這個目標,這個過程如同選舉一樣,參選者需要說服大多數選民(伺服器)投票給他,一旦選定後就跟隨其操作。Paxos和Raft的區別在於選舉的具體過程不同。
在Raft中,任何時候一個伺服器可以扮演下面角色之一:
- Leader: 處理所有客戶端互動,日誌複製等,一般一次只有一個Leader.
- Follower: 類似選民,完全被動
- Candidate候選人: 類似Proposer律師,可以被選為一個新的領導人。
raft原理的動畫演示:
http://thesecretlivesofdata.com/raft/