分布式事務(wù)相關(guān)

名詞理解:

1.XA規(guī)范

XA是由X/Open組織提出的分布式事務(wù)的規(guī)范。
XA規(guī)范主要定義了(全局)事務(wù)管理器(Transaction Manager)和(局部)資源管理器(Resource Manager)之間的接口。XA接口是雙向的系統(tǒng)接口,在事務(wù)管理器(Transaction Manager)以及一個或多個資源管理器(Resource Manager)之間形成通信橋梁。XA引入的事務(wù)管理器充當上文所述全局事務(wù)中的“協(xié)調(diào)者”角色。事務(wù)管理器控制著全局事務(wù),管理事務(wù)生命周期,并協(xié)調(diào)資源。資源管理器負責控制和管理實際資源(如數(shù)據(jù)庫或JMS隊列)。

目前,Oracle、Informix、DB2、Sybase和PostgreSQL等各主流數(shù)據(jù)庫都提供了對XA的支持。

XA規(guī)范中,事務(wù)管理器主要通過以下的接口對資源管理器進行管理

xa_open,xa_close:建立和關(guān)閉與資源管理器的連接。
xa_start,xa_end:開始和結(jié)束一個本地事務(wù)。
xa_prepare,xa_commit,xa_rollback:預(yù)提交、提交和回滾一個本地事務(wù)。
xa_recover:回滾一個已進行預(yù)提交的事務(wù)。

2.JTA(Java Transaction API)

java 平臺上的事務(wù)規(guī)范接口
作為java平臺上事務(wù)規(guī)范JTA(Java Transaction API)也定義了對XA事務(wù)的支持,實際上,JTA是基于XA架構(gòu)上建模的。在JTA 中,事務(wù)管理器抽象為javax.transaction.TransactionManager接口,并通過底層事務(wù)服務(wù)(即Java Transaction Service)實現(xiàn)。像很多其他的Java規(guī)范一樣,JTA僅僅定義了接口,具體的實現(xiàn)則是由供應(yīng)商(如J2EE廠商)負責提供,目前JTA的實現(xiàn)主要有以下幾種:

J2EE容器所提供的JTA實現(xiàn)(如JBoss)。
獨立的JTA實現(xiàn):如JOTM(Java Open Transaction Manager),Atomikos。這些實現(xiàn)可以應(yīng)用在那些不使用J2EE應(yīng)用服務(wù)器的環(huán)境里用以提供分布事事務(wù)保證。

3. 2PC(Two Phase Commit)

解決跨數(shù)據(jù)庫的事務(wù)管理

提供分布式事務(wù)接口,提供跨數(shù)據(jù)庫連接的事務(wù)管理,二階段提交,是將事務(wù)的提交操作分成了prepare、commit兩個階段。其事務(wù)處理方式為:1、 在全局事務(wù)決定提交時,a)逐個向RM發(fā)送prepare請求;b)若所有RM都返回OK,則逐個發(fā)送commit請求最終提交事務(wù);否則,逐個發(fā)送rollback請求來回滾事務(wù);2、 在全局事務(wù)決定回滾時,直接逐個發(fā)送rollback請求即可,不必分階段。


image.png

假設(shè)有A、B、C三個數(shù)據(jù)庫,A作為一個事務(wù)發(fā)起者,稱為“主庫”,B和C則稱為”從庫”。假設(shè)需要執(zhí)行一個在A、B和C三個庫的某個表中插入一行數(shù)據(jù)的事務(wù)。

準備階段(Prepare Phase),A鎖定表,并將事務(wù)寫入自己的預(yù)寫日志;A將事務(wù)發(fā)給從庫B和C,B和C也各自鎖定自己的表,并把事務(wù)寫入預(yù)寫日志,完成后返回告訴A準備階段完成;
提交階段(Commit Phase),A開始執(zhí)行自己的事務(wù),并通知B和C提交事務(wù)。如果在這個過程中沒有任何錯誤,那么操作將在A、B和C庫中完成;如果發(fā)生錯誤,比如從庫C超時無響應(yīng),或者從庫C磁盤空間不足…A將通知所有參與事務(wù)的B和C回滾該事務(wù),并且回滾A自己的事務(wù)。

4.TCC(try-confirm-commit)

解決多個服務(wù)之間的分布式事務(wù)

針對的是業(yè)務(wù)層面的事務(wù),適用于微服務(wù)

image.png

https://blog.csdn.net/zhousenshan/article/details/72808855
https://blog.csdn.net/lileLife/article/details/84327098
https://yq.aliyun.com/articles/608872
https://yq.aliyun.com/articles/379964?spm=5176.10695662.1996646101.searchclickresult.29d9640bL61ohb#4

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容