這篇文章粗略講一下兩階段提交協議,即2PC,Two Phase Commitment Protocol。之因此稱爲兩階段提交,是相對於單庫的事務提交方式來講的。咱們在單庫上完成相關的數據庫操做後,就會直接提交或者回滾,而在分佈式系統中,在提交以前增長了準備的階段,因此稱爲兩階段提交。
圖1顯示的就是第一階段提交的狀況,能夠看到,參與操做的是事務管理器與兩個資源。數據庫
圖1 第一階段網絡
圖2所示的是第二階段的狀況。分佈式
圖2 第二階段日誌
此外還會遇到的另一種狀況,就是在準備階段有一個資源失敗,那麼在第二階段的處理就是回滾全部資源,如圖3和圖4所示。事務
圖3 出現問題的第一階段資源
圖4 第一階段出現問題後的第二階段it
前面對兩階段提交的介紹都是在理想狀態下的狀況。在實際當中,因爲事務管理器自身的穩定性,可用性的影響,以及網絡通訊中可能產生的問題,出現的狀況會複雜不少。此外,事務管理器在多個資源之間進行協調,它自身要進行不少日誌記錄的工做。網絡上的交互次數的增多以及引入事務管理器的開銷,是使用兩階段提交協議使分佈式事務的開銷增大的兩個方面。
所以,在進行垂直拆分或者水平拆分後,須要想清楚是否必定要引入兩階段的分佈式事務,在必要的狀況下才建議使用。
im