分佈式事務詳解

分佈式事務詳解

1、兩個基礎理論

1. CAP理論

  • CAP:數據庫

    • Consistency(一致性)
    • Available(可用性)
    • Partition tolerance(分區容錯性)

2.BASE理論

  • BASE:網絡

    • Basically Available(基本可用)
    • Soft state(軟狀態)
    • Eventually consistent (最終一致性)

2、幾種分佈式事務

1. XA 方案

​ XA 是 X/Open CAE Specification (Distributed Transaction Processing)模型,它定義的 TM(Transaction Manager)與 RM(Resource Manager)之間進行通訊的接口。併發

​ 具體依賴於數據庫廠商對jdbc-driver的實現。分佈式

​ 在 XA 規範中,數據庫充當 RM 角色,應用須要充當 TM 的角色,即生成全局的 txId ,調用 XAResource 接口,把多個本地事務協調爲全局統一的分佈式事務。性能

  • 一階段提交(1PC)

    1PC

    1PC也叫弱XA。如上圖,接口

    • 這種方式去掉了XA中的prepare階段,來減小資源鎖定範圍,從而提高併發能力。
    • 弱 XA 相對性能損耗比較低,但在事務提交的執行過程當中,若出現網絡故障、數據庫宕機等預期以外的異常,將會形成數據不一致,且沒法進行回滾。
  • 二階段提交(2PC)

    2PC

    2PC也叫強XA,是XA的標準實現。分爲兩個階段,如上圖。事務

    • 第一個階段:Prepare。TM要求每一個涉及到事務的數據庫預提交(precommit)此操做,並反映是否能夠提交。
    • 第二階段:TM要求每一個數據庫提交數據,或者回滾數據。

    開啓XA事務以後,全部子事務會按照本地默認的隔離級別鎖定資源。這時會記錄數據庫的undo和redo log。ci

    • 當全部子事務反饋的結果爲 「yes」 時,TM 再發起 commit 。資源

    • 若其中任何一個子事務反饋的結果爲「no」,TM 則發起 rollback 。it

    • 若是在prepare階段反饋「yes」,可是在commit階段數據庫宕機,可根據XA recover再次進行commit進行補償,保證數據一致性。

2. TCC 方案

3. 本地消息表

4. 可靠消息最終一致性方案

5. 最大努力通知方案

6. SAGA

7. 基於補償的分佈式事務

相關文章
相關標籤/搜索