1.提交請求
依次詢問參與者是否可以執(zhí)行請求艰匙,如果參與者執(zhí)行事物操作、并完成寫入redo抹恳、uodo日之后员凝,全部回答yes,將進入下一個階段提交事物奋献;如果參與者沒有成功執(zhí)行事物健霹,就反饋協(xié)調(diào)者No響應(yīng)旺上,表示事物不可以提交,將進入下一個階段提回滾事物骤公。通過這一階段最終會產(chǎn)生事物是否可以提交的決斷抚官。
2.提交事務(wù)-分為兩種情況
(1)提交事務(wù)-一階段的結(jié)果是可以提交事務(wù)
依次發(fā)送commit命令給各個參與者,參與者全部順利收到(這里可能出現(xiàn)網(wǎng)絡(luò)問題導(dǎo)致參與者沒收到)commit命令阶捆,全部執(zhí)行成功后返回ack給協(xié)調(diào)者凌节,事物完成
(2)回滾事務(wù)
當(dāng)任意參與者執(zhí)行階段一反饋no給協(xié)調(diào)者或者協(xié)調(diào)者超時等待
則會執(zhí)行階段二的事物中斷操作,開始回滾事務(wù)如圖洒试”渡荩回滾事務(wù)時參與者執(zhí)行undo日志后,反饋事物回滾結(jié)果垒棋,收到所有ack消息后完成事物中斷卒煞。
兩階段協(xié)議存在的問題:
(1)協(xié)調(diào)者的單點問題:協(xié)調(diào)者被重度依賴整個二階段的過程中,一旦發(fā)生問題將不能自動回滾或者釋放資源等等
(2)同步阻塞:參與者在必須等待其它參與者的執(zhí)行叼架,無法進行其他操作
(3)數(shù)據(jù)不一致:比如提交事務(wù)階段 協(xié)調(diào)者異常畔裕,誰也不能保證所有參與者都執(zhí)行完成事物
(4)過于保守:參與者與協(xié)調(diào)者之間出現(xiàn)網(wǎng)絡(luò)異常時,只能依賴等待超時機制乖订,沒有完善的容錯機制