簡體   English   中英

簡單 Paxos 中的多重共識

[英]Multiple Consensus in Simple Paxos

一個小組如何在不同的時間點達成多個共識。 讓我試着用一個例子來解釋這個問題。 讓我們假設有 10 個進程,其中 3 個是提議者(P0,P1,P2)。 Paxos 輪結束,每個人都同意 P0 提出的值(比如 v0)。 P0 崩潰並從組中刪除。 現在,如果 P1 和 P2 提出新的價值觀,那么小組成員之間如何就新提出的價值觀達成共識。 任何具有更高提案編號的值都將始終僅在 v0 上建立共識。 我們可以map這個例子到Leader選舉的情況下,在當前的Leader P0崩潰后,P1和P2想成為Leader。

正如您所說 - 在大多數接受者同意價值(在您的情況下為 v0)之后 - 沒有其他價值可以覆蓋它。 畢竟,這是共識的重點——大多數人同意並且永遠不會改變主意。

那么當我們確實需要就新值達成一致時,我們如何使用 paxos - 例如,因為舊領導者離線。 這里的答案是使用 Multi-paxos——這基本上意味着系統可能會有幾輪共識輪次發生。 當系統認為leader宕機時,系統會發起新的paxos輪次以獲得新的協議。

multi-paxos 的一個非常典型的方法是使用 epoch 或 term——每次運行 paxos 共識運行時總是增加 integer。 所以在 epoch 1 中,leader 是 v0 - 所以共識是 epoch 1 中的 leader 是 vo。 系統認為 v0 宕機后,會為更高的 epoch 執行新的共識 - 因此 v1 將成為 epoch 2 的領導者; 等等。

始終增加紀元數有助於系統確定系統的最新 state 是什么。 因此,如果參與者收到較舊時期的消息 - 該參與者可能會忽略它。

對於上下文 - 很多人,包括我自己:) - 最初對如何在實踐中應用 paxos 感到困惑,因為 paxos 的單個實例永遠不會改變約定的值。

假設你學習共識系統,我的建議是實現(或只是玩)paxos,然后是 multi-paxos,然后是 raft。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM