2016-02-28 33 views
0

什麼時候可能2階段提交塊,以便它不再進步?什麼時候可能2階段提交沒有進展?

假設協調員和4位參與者在這裏。

假設參與者P2在發送「投票 - 提交」消息後立即崩潰(即協調員成功接收到該消息)並且沒有進一步失敗,則協調器等待來自P2的「確認」,並繼續發送「全局提交「後超時。協調員被阻止;其他參與者不被阻止。

有沒有其他的情況?

回答

0

如果任何消息被延遲或丟失,或任何參與者隨時崩潰(停止響應),則2階段落實不起作用。

2PC可以有幾種不同的方式失敗。這裏有一些我發現使用Molly

  • 協調器可以發送vote-commit消息之後崩潰,但是在發送global-commit/global-abort之前。這意味着所有投票提交的客戶都等待協調員的迴應。
  • 網絡可能會延遲或丟失global-commit消息,導致這些消息的收件人被阻止,從而等待他們可能永遠不會收到的消息。
  • 網絡可能會延遲或放棄投票提交或中止,導致協調器阻塞,等待它可能永遠不會收到的消息。
  • 網絡可能會延遲或丟棄查詢,即協調器發送給其他參與者的消息,詢問他們是否準備好提交或不提交。協調員將阻止,等待這些參與者的迴應。
相關問題