2013-08-21 18 views
0

Node_1是領導者,node_2意外死亡,Node_1需要重新運行Paxos,因爲Paxos值與當前節點死亡或生活有關。 但是隻有1個節點(node_1本身)同意這個建議,node_2不會迴應。這個條件不能達到「通過一半節點同意,即2個節點」。 它如何工作?paxos如何與2個節點一起工作?

+0

我不明白,node_1是接受者還是提議者? –

+0

node_1是提議者 – procr

回答

0

如果node_1只是提議者,那麼系統無法決定提案。如果node_1(比方說v)和node_2(比方說v')都是接受者和提議者,那麼算法可以決定接受的提案。假設節點v嘗試提出v值,節點v'嘗試提出v'值。所以,讓我們看看下面的例子。提議者v發送一個編號爲3的數字。接受者具有先前的值,因此將以前的提議發送回ACK-prepare。然後v'意外死亡。但是「v」接受者繼續運行並接受v提議者提出的提案v'。然後,接受者發送ACK-proposal並且系統以決定結束。

Paxos Paradigm

爲了使我們的例子更加高效,公認的價值是投保人V」的值(已去世)。但在死亡之前,將v'值與最終決定的值2相關聯。

算法有以下假設:

  • 網絡可延緩包
  • 重新排序分組
  • 輸包
  • 但不破壞分組

,如果您還沒有閱讀this,看看..

2

除非兩個節點都在工作,否則Paxos不能與兩個節點一起工作。爲了生存F節點失敗,總共需要n> = 2F + 1個節點。這意味着,如果您需要三節點羣集,則無法通過一個節點。兩個故障需要五個節點。這是因爲只有在接受多數時才選擇一個值。如果我們有兩個節點,大多數是兩個節點,並且兩個節點都必須接受要選擇的值。如果我們有三個節點,那麼大多數是兩個節點,我們可以在單個節點故障中倖存下來。

相關問題