1.前言?
一致的起點,難理解主要體現:為何如此設計協議以及如何證明其正確性。
2.基本概念
兩種Paxos:
(1)Single-Decree Paxos:決策單個 Value(本文只關注單 Paxos 的原理)
(2)Multi-Paxos:連續決策多個 Value,并且保證每個節點上的順序完全一致,多 Paxos 往往是同事運行多個單 Paxos 協議共同執行的結果。
2.1Paxos 協議中的三種角色( 可同時扮演 )
倡議者(Proposer):提出提議(數值或者操作命令)供投票表決
接受者(Acceptor):對提議投票,提議超半被選中
學習者(Learner):無投票權,從接受者獲知哪個被選
2.2 Paxos 的特點
多個節點可提議
系統必須針對所有提案中的某個提案達成一致(超過半數的接受者選中)
最多確定一個提議一致
超半數節點存活且互相通信,整個系統一定能達成一致狀態,選擇確定提議
3. Paxos 實際應用過程
多個節點同時提出各自提議,從中選一個確定值,保證一致性。
五個節點分布式系統,A 提議 X 值,E 提議 Y 值,其他沒提。
Paxos-1
A 廣播提議(也發自己),網絡延遲,只A,B,C 收到了。即使 A,E 同時到達某個節點,必然有先后順序,不是真正“同時”
Paxos-2
A,B,C第一次接收提議,acceptedProposal 和 acceptedValue 都空
Paxos-3
A 已收到超半數節點響應,acceptedValue 更新為 X。
Paxos-4
A,B,C 會發生 minProposal 給 A,A 檢查發現沒有大于 1 的 minProposal 出現,此時 X 已經被選中。D,E?acceptedValue 不是 X,不一致
Paxos-5
E?選擇 Proposal ID 為 2 發送 Prepare 請求,和上面不一樣了,C 已經接A ,不三心二意,告訴 E?它的選擇,E 也選A,發起 Accept 請求一致