由於涉及多個分佈式的數據庫,我們特設了一個全局的事務管理器,他來負責協調各個數據庫的事務提交,爲了實現分佈式事務,需要兩個階段。
階段一:
全局的事務管理器向各個數據庫發出準備消息, 各個數據庫需要在本地把一切都準備好,執行操作,鎖住資源。記錄redo/undo日誌,但是並不提交,總而言之,要進入一種時刻準備提交或回滾的狀態,然後向全局的事務管理器報告是否準備好了
階段二:
如果所有的數據庫都報告說準備好了,那麼全局的事務管理器就下命令,提交,這個時候,各個數據庫才真正提交,由於之前已經萬事俱備,所以只需要快速完成提交即可。
如果有任何一個數據庫報告說沒準備好,那麼全局的事務管理器就下命令,放棄,這時候,各個數據庫要執行回滾操作,並且釋放在階段1鎖住的各種資源。
對於多數據下的系統 兩階段提交協議就是一個性能瓶頸,進一步演化就是使用最終一致性。