2015-12-15 111 views
4

下圖是基本的Paxos的消息流,在相位2a中,組長選擇值Vn其proposal1併發送接受!(1,VN)的每一個受體。我的問題是:如果三條消息中的兩條丟失了,該怎麼辦?我的意思是隻有接受者1(不是多數)接受接受!(1,Vn)。受讓人1會接受這個請求嗎?然後播放給每個學習者?這個值是選擇? enter image description here的Paxos階段2a消息丟失

+0

應該避免接受第一不正確的答案,只是因爲這是你所期望的答案。 – simbo1905

+2

JensG的回答是正確的。基本的Paxos算法沒有負面響應的概念,因此缺少響應被解釋爲否定確認。 Simbo1905的答案也是正確的,但是引用了超出核心算法要求的實際擴展。純算法的優點是它避免了現實世界實現中涉及的大部分複雜性。在實際實施中有效檢測和處理這些故障情況可能相當複雜和具有挑戰性。所以,在第一次學習Paxos時最好忽略這些細節。 – Rakis

+0

@Rakis加上你認真的評論。我已經編輯了我的答案,明確表示它將幫助用paxos構建真正的解決方案,而不是通過關於該主題的cs考試。在我實施paxos的經驗中,我發現使用不實用的合成單輪協議來證明正確性的學術方法可能是人們感到困惑和複雜的主要原因。所以即使它不會幫助任何人通過大學筆試,我也會離開我的實際幫助答案。 – simbo1905

回答

2

提議者沒有得到足夠數量的接受答覆(讀數爲法定人數),因此整個回合失敗。

3

的Paxos是容忍重複消息,因此它是安全的,最佳的,對於投保人重新發送或者準備或接收消息,如果它沒有得到大多數迴應。假設有一個短暫而短暫的網絡問題,只有那些信息丟失了。如果響應超時,然後重新發送消息,則消息將通過,並且該回合可以成功。這比由於丟失信息而失敗並開始新一輪更有效。

編輯我要指出,作爲@Rakis的評論指出,其實我在談論的Paxos的實際應用,而不是其目的是爲了證明該方法的正確性算法的理論描述。如果有人正在對該主題進行考試,則堅持學術描述。如果您實際上正在編寫an implementation,則超時和重新發送是由於瞬時消息丟失而有效處理丟失的消息的方式。

編輯的回答「全面失敗」意味着有通過啓動新一輪採取行動這一事實超時。超時在文件Paxos Made Simple中未實際提及。因此,如果有人想堅持算法的學術描述,那麼消息丟失的確切答案是「世界停止時沒有任何事情發生」。請注意,該文件表示它不會及時發佈事件,只會導致不會出現不正確的結果。顯然沒有合理的實施將只會無所作爲;它應該超時並且做一些事情。這突出表明了該算法的學術描述僅用於證明正確性的事實;它故意忽略瞭如何使用該算法實際構建實際解決方案的實際考慮。該文件暗示說,您可以添加諸如負面響應之類的內容,以幫助構建實用的實現而不會影響正確性。所以像trex這樣的實用解決方案會返回否定確認,以加快使用該算法的故障恢復恢復。然後沒有得到迴應與獲得否定回答不一樣;所以在消息丟失的情況下,輪次不會失敗,但它有一個不確定的結果。進一步的消息(重新發送)可以安全地發送以確定實際結果。

+0

由於接受者根本沒有收到消息,所以他們不太可能發送回覆。 – JensG

+0

我的回答是,發件人應該在響應上超時並重新發送。 – simbo1905

+0

我同意你的實際應用,但差別確實在細節上。正如你正確的寫道:「發送者**應該重新發送*」。雖然這可能是一個很好的建議,但在情況發生之後,它仍然在談論*可以*做些什麼。發件人決不是有義務重發郵件。換句話說,如何處理這種情況是(僅)一個選項,而不是強制性的。並且可能有些情況下開始新一輪比賽可能是更好的選擇,例如當舊輪在很長的超時後很可能失敗。 – JensG