2012-07-22 86 views
0

在2階段提交中,在參與事務的所有組件都投票「是」之後,事務協調員發出「提交」命令。然後每個參與者都承諾自己的交易。2階段提交 - 提交失敗步驟

如果任何參與者在「提交」步驟失敗會發生什麼情況?雖然此組件失敗,但其他可能已經提交了它們的事務。 如果發生這種情況,交易協調員是否能夠向所有參與者發出回滾命令。

謝謝。

回答

2

第一階段的全部目的是確保在提交階段沒有任何失敗。至少由於數據完整性或業務流程的觀點。所以如果提交的準備階段沒有問題,那麼可以假定提交將起作用,除了網絡/通信失敗之外。

所有參與系統必須同意一個或辦理情況

1.Auto提交的其他方式。如果協調員未明確調用回滾(在給定時間內),則交易將被視爲由相應的參與系統承諾。

2.交易協調員重試每個失敗的組件。在網絡故障的情況下,重試可能仍然有效。

3.補償。在指定的重試次數之後,事務協調器假定事務已經以不一致的狀態結束。然後它可以嘗試補償。 (注意:這不一定是回滾,這就像事務失敗時要採取的行動)。

現在想想這個。所有資源經理的薪酬本身可能並不成功。

某些業務流程可能還需要人工補償!因此,您需要記錄日誌,發出警報,並且可能需要手動補償才能使系統恢復到原始狀態。