Paxos協議
1、Paxos算法
Paxos算法是萊斯利·蘭伯特(Leslie Lamport,就是 LaTeX 中的"La",此人在微軟研究院)1990年提出的一種基於消息傳遞的一致性算法。
1.1 、目的 :
解決分佈式環境下一致性的問題。基於消息傳遞通信模型的分佈式系統中,進程可能會慢、被殺死或者重啓,消息可能會延遲、丟失、重複,在基礎Paxos場景中,保證不論發生以上任何異常,都不會破壞決議的一致性。
2、Paxos詳解
2.1 三個角色
Proposer(提議者):提議一個值
Acceptor(接受者):對每個提議進行投票;
Learner(學習者):被告知投票的結果,不參與投票過程。
2.2 提交步驟
2.2.1 第一階段
1、proposer向網絡內超過半數的acceptor發送prepare消息
2、acceptor正常情況下回復promise消息
2.2.2 第二階段
1、 在有足夠多acceptor回覆promise消息時,proposer發送accept消息
2、 正常情況下acceptor回覆accepted消息
3、 當 Learner 發現有大多數的 Acceptor 接收了某個提議,那麼該提議的提議值就被 Paxos 選擇出來
因爲在整個過程中可能有多個proposer針對同一件事情發出以上請求,所以在每個過程中都會有些特殊情況處理,這也是爲了達成一致性所做的事情。如果在整個過程中沒有多個proposer來競爭,那麼這個操作的結果就是確定無異議的。表示了多個節點達成共識的複雜性。