XA 解決方案:↓ ↓ ↓數據庫
2PC的傳統方案是在數據庫層面實現的,如Oracle、MySQL都支持2PC協議,爲了統一標準減小行業內沒必要要的對 接成本,編程
須要制定標準化的處理模型及接口標準,國際開放標準組織Open Group定義了分佈式事務處理模型 DTP(Distributed Transaction Processing Reference Model)。 分佈式
爲了讓你們更明確XA方案的內容程,下面新用戶註冊送積分爲例來講明:ide
執行流程以下: 性能
一、應用程序(AP)持有用戶庫和積分庫兩個數據源。 spa
二、應用程序(AP)經過TM通知用戶庫RM新增用戶,同時通知積分庫RM爲該用戶新增積分,RM此時並未提交事 務,此時用戶和積分資源鎖定。 中間件
三、TM收到執行回覆,只要有一方失敗則分別向其餘RM發起回滾事務,回滾完畢,資源鎖釋放。 blog
四、TM收到執行回覆,所有成功,此時向全部RM發起提交事務,提交完畢,資源鎖釋放。接口
DTP 模型定義以下角色: 事務
AP (Application Program):即應用程序,能夠理解爲使用DTP分佈式事務的程序。
RM (Resource Manager):即資源管理器,能夠理解爲事務的參與者,通常狀況下是指一個數據庫實例,經過 資源管理器對該數據庫進行控制,資源管理器控制着分支事務。
TM (Transaction Manager):事務管理器,負責協調和管理事務,事務管理器控制着全局事務,管理事務生命 週期,並協調各個RM。
全局事務 是指分佈式事務處理環境中,須要操做多個數據庫共同完成一個工做,這個 工做便是一個全局事務。
DTP 模型定義TM和RM之間通信的接口規範叫XA,簡單理解爲數據庫提供的2PC接口協議,基於數據庫的XA 協議來實現2PC又稱爲XA方案。
以上三個角色之間的交互方式以下:
1)TM向AP提供 應用程序編程接口,AP經過TM提交及回滾事務。
2)TM交易中間件經過XA接口來通知RM數據庫事務的開始、結束以及提交、回滾等。
總結:
整個2PC的事務流程涉及到三個角色AP、RM、TM。
AP指的是使用2PC分佈式事務的應用程序;RM指的是資 源管理器,它控制着分支事務;TM指的是事務管理器,它控制着整個全局事務。
1)在準備階段RM執行實際的業務操做,但不提交事務,資源鎖定;
2)在提交階段TM會接受RM在準備階段的執行回覆,只要有任一個RM執行失敗,TM會通知全部RM執行回滾操 做,不然,TM將會通知全部RM提交該事務。提交階段結束資源鎖釋放。
XA方案的問題:
一、須要本地數據庫支持XA協議。
二、資源鎖須要等到兩個階段結束才釋放,性能較差。
Face your past without regret. Handle your present with confidence.Prepare for future without fear. keep the faith and drop the fear.
面對過去無怨無悔,把握如今充滿信心,備戰將來無所畏懼。保持信念,克服恐懼!一點一滴的積累,一點一滴的沉澱,學技術須要不斷的積澱!