通過使用某種協(xié)議進(jìn)行通信來完成分布式事務(wù),被稱為
兩段式提交。從名字上看,您可能已經(jīng)知道有兩個階段:
- 第一個階段,即預(yù)提交:
- 事務(wù)協(xié)調(diào)器給每個事務(wù)管理器發(fā)送準(zhǔn)備操作的信號。
- 事務(wù)管理器將操作(通常是數(shù)據(jù)更新)步驟(或細(xì)節(jié))寫入事務(wù)日志。如果失敗,事務(wù)管理器使用這些步驟重復(fù)操作。
- 事務(wù)管理器本地創(chuàng)建事務(wù)并通知資源管理器對資源(例如,數(shù)據(jù)庫或消息服務(wù)器)執(zhí)行操作。
- 資源管理器執(zhí)行操作并向事務(wù)管理器報告成功(準(zhǔn)備提交信號)或失敗(準(zhǔn)備回滾)。
- 資源管理器等待事務(wù)管理器進(jìn)一步的指令。
- 事務(wù)管理器向事務(wù)協(xié)調(diào)器報告成功或失敗。
- 第二階段,即提交階段:在第二階段中,第一階段的結(jié)果將傳送給所有事務(wù)管理器。如果任何事務(wù)管理器報告失敗,所有的事務(wù)參與者都必須回滾。
- 事務(wù)協(xié)調(diào)器讓所有事務(wù)管理器提交(或回滾)。
- 所有事務(wù)管理器將提交或回滾信息傳遞給其資源管理器。
- 資源管理器將成功或失敗提示返回給事務(wù)管理器。
- 事務(wù)管理器向事務(wù)協(xié)調(diào)器報告成功或失敗。