天天看點

分布式事務2PC協定之——XA方案概述舉栗​​​​​​​總結

概述

2PC方案是在傳統資料庫層面實作的,如Oracle和MySQL都支援2PC協定,為了統一标準減少在行業内不必要的對接成本,需要制定标準化的處理模型以及接口标準,國際開放标準組織Open Group定義了分布式事務處理模型DTP(Distributed Transaction Processing Reference Model)。

2PC協定可以參考我的另一篇文章:分布式事務解決方案——2PC(兩階段送出)概念

舉栗

用新使用者注冊送積分為例來解釋一下XA方案

分布式事務2PC協定之——XA方案概述舉栗​​​​​​​總結
  1. 應用程式(AP)連接配接使用者庫和積分庫兩個資料源
  2. 應用程式通過TM(事務管理器)通知使用者庫和積分庫執行準備階段的事務:通知RM新增使用者,之後通知積分庫RM為該使用者新增積分,兩個RM此時都沒有送出事務,此時使用者和積分的資料資源被鎖定
  3. TM收到執行結果回複隻要有一方失敗則分别向其他所有的RM發起復原事務,復原完畢,資料庫資源鎖釋放
  4. TM收到執行結果回複全部成功,此時向所有RM發起送出事務的指令,送出完畢,資料庫資源鎖釋放

DTP模型角色定義如下:

  • AP(application program):即應用程式,可以了解為使用DTP分布式事務的程式
  • RM(Resource Manager):即資料總管,可以了解為事務的參與者,一般情況下是指一個資料庫執行個體,通過資料總管對該資料庫進行空值,資料總管控制着各個分支事務
  • TM(Transaction Manager):事務管理器,負責協調和管理事務,事務管理器控制着全局事務,管理事務生命周期,并協調各個RM。全局事務是指分布式事務處理環境中,需要操作多個資料庫共同完成一個工作,這個工作即是全局事務。

DTP模式定義TM和RM直接通訊的接口規範叫XA,簡單了解為資料庫提供的2PC接口協定,基于資料的XA協定來實作2PC協定又稱為XA方案

以上三種角色之間的互動方式如下:

  • TM向AP提供應用程的程式設計接口,AP通過TM送出以及事務復原
  • TM中間件通過XA協定接口來通知RM資料庫事務的開始、結束以及送出和復原等

​​​​​​​總結

整個2PC的事務流程涉及到三個角色AP、RM、TM。AP是使用2PC分布式事務的應用程式,TM是事務管理器,管理協調整個全局事務,RM是資料總管,負責控制自身的分支事務。

  1. 在準備階段RM執行實際的業務操作,但不是送出事務,資源鎖定
  2. 在送出階段TM會接受RM在準備階段的執行回複,隻要有任何一個RM執行失敗,TM會通知所有的RM執行復原操作,沒有一個RM操作失敗,TM将通知所有RM送出自身事務。送出所有事務之後資料庫資源釋放

XA方案的問題:

  1. 需要本地資料庫支援XA協定
  2. 資源鎖需要等到兩個階段都完成之後才能釋放,性能受影響。

繼續閱讀