分布式事務(wù)(4)XA規(guī)范

4.1 XA 規(guī)范

X/Open的組織定義了分布式事務(wù)的模型唆阿,這里面有幾個角色暖夭,AP(Application,應(yīng)用程序)两芳,TM(Transaction Manager摔寨,事務(wù)管理器),RM(Resource Manager怖辆,資源管理器)是复,CRM(Communication Resource Manager,通信資源管理器)疗隶。

全局事務(wù):X/Open組織定義了一套分布式事務(wù)的模型和規(guī)范佑笋。一個橫跨多個數(shù)據(jù)庫的事務(wù)。就是一個事務(wù)里斑鼻,涉及了多個數(shù)據(jù)庫的操作蒋纬,然后要保證多個數(shù)據(jù)庫中,任何一個操作失敗了坚弱,其他所有庫的操作全部回滾蜀备,這就是所謂的分布式事務(wù)。

DTP(Distributed Transaction Processing Reference Model):分布式事務(wù)處理模型荒叶。TM碾阁、RM、AP等角色的分布式事務(wù)的模型些楣。

JTA事務(wù):Java Transaction API脂凶,分布式事務(wù)的編程API泊脐,它是按照XA喉钢、DTP那套模型和規(guī)范來搞的,在J2EE中笆环,單庫的事務(wù)是通過JDBC事務(wù)來支持的鹅很,如果是跨多個庫的事務(wù)嘶居,是通過JTA API來支持的,通過JTA API可以協(xié)調(diào)和管理橫跨多個數(shù)據(jù)庫的分布式事務(wù)促煮,一般來說會結(jié)合JNDI邮屁。

4.2 2PC協(xié)議

2PC整袁,Two-Phase Commit,即二階段提交佑吝,二階段提交協(xié)議是將事務(wù)的提交過程分成了兩個階段來進(jìn)行處理坐昙。

MySQL支持的是2PC協(xié)議。


2PC協(xié)議.png

2PC協(xié)議的缺陷:

1芋忿、同步阻塞:在階段一里執(zhí)行prepare操作會占用資源民珍,一直到整個分布式事務(wù)完成,才會釋放資源盗飒,這個過程中嚷量,如果有其他人要訪問這個資源,就會被阻塞住逆趣。

2蝶溶、單點(diǎn)故障:TM是個單點(diǎn)。

3宣渗、事務(wù)狀態(tài)丟失:即使把TM做成一個雙機(jī)熱備的抖所,一個TM掛了自動選舉其他的TM出來,但是如果TM掛掉的同時(shí)痕囱,接收到commit消息的某個庫也掛了田轧,此時(shí)即使重新選舉了其他的TM,根本不知道這個分布式事務(wù)當(dāng)前的狀態(tài)鞍恢,因?yàn)椴恢滥膫€庫接收過commit消息傻粘,哪個接收過commit消息的庫也掛了。

4帮掉、腦裂問題:在階段二中弦悉,如果發(fā)生了腦裂問題,那么就會導(dǎo)致某些數(shù)據(jù)庫沒有接收到commit消息蟆炊,有些庫收到了commit消息稽莉。

4.3 3PC協(xié)議

3PC,Three-Phase Commit涩搓,即三階段提交污秆,是2PC的改進(jìn)版,其將二階段提交協(xié)議的"提交事務(wù)請求"過程一分為二昧甘,形成了CanCommit良拼、PreCommit和do Commit三個階段組成的事務(wù)處理協(xié)議。


3PC協(xié)議.png

3PC協(xié)議的缺陷:

如果TM在DoCommit階段發(fā)送了abort消息給各個庫疾层,結(jié)果因?yàn)槟X裂問題将饺,某個庫沒接收到abort消息贡避,自己還去進(jìn)行commit操作痛黎,導(dǎo)致數(shù)據(jù)出錯予弧。

4.4 JTA + Atomikos

XA分布式事務(wù):管理橫跨多個數(shù)據(jù)庫的分布式事務(wù)。一般用于單系統(tǒng)多庫的場景湖饱,要是多系統(tǒng)多庫掖蛤,比較麻煩。

JTA負(fù)責(zé)Atomikos框架的一個指揮和調(diào)度井厌,讓它按照事務(wù)的基本步驟來走蚓庭,Atomikos框架相當(dāng)于是DTP模型里的TM,跟各個MySQL(RM)通信仅仆,XA START器赞、XA END、XA COMMIT墓拜、XA ROLLBACK等符合XA規(guī)范的一套接口調(diào)用港柜。

實(shí)現(xiàn)原理:創(chuàng)建分布式事務(wù)的時(shí)候,創(chuàng)建一個代表了分布式事務(wù)的對象咳榜。在各個SQL執(zhí)行的時(shí)候夏醉,必須從 自定義的DataSource里面獲取Connection,對Connection的prepareStatement()方法的調(diào)用涌韩,需要進(jìn)行攔截畔柔,去對各個庫執(zhí)行XA START指令,以及定義好SQL臣樱;在提交事務(wù)的時(shí)候靶擦,需要去對各個庫執(zhí)行XA PREPARE指令,如果都成功雇毫,就執(zhí)行XA COMMIT指令奢啥,如果失敗,就執(zhí)行XA ROLLBACK指令嘴拢。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末桩盲,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子席吴,更是在濱河造成了極大的恐慌赌结,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件孝冒,死亡現(xiàn)場離奇詭異柬姚,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)庄涡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進(jìn)店門量承,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事撕捍∧醚ǎ” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵忧风,是天一觀的道長默色。 經(jīng)常有香客問我,道長狮腿,這世上最難降的妖魔是什么腿宰? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮缘厢,結(jié)果婚禮上吃度,老公的妹妹穿的比我還像新娘。我一直安慰自己贴硫,他們只是感情好规肴,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著夜畴,像睡著了一般拖刃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上贪绘,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天兑牡,我揣著相機(jī)與錄音,去河邊找鬼税灌。 笑死均函,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的菱涤。 我是一名探鬼主播苞也,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼粘秆!你這毒婦竟也來了如迟?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤攻走,失蹤者是張志新(化名)和其女友劉穎殷勘,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體昔搂,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡玲销,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了摘符。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贤斜。...
    茶點(diǎn)故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡策吠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出瘩绒,到底是詐尸還是另有隱情猴抹,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布草讶,位于F島的核電站,受9級特大地震影響炉菲,放射性物質(zhì)發(fā)生泄漏堕战。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一拍霜、第九天 我趴在偏房一處隱蔽的房頂上張望嘱丢。 院中可真熱鬧,春花似錦祠饺、人聲如沸越驻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缀旁。三九已至,卻和暖如春勺鸦,著一層夾襖步出監(jiān)牢的瞬間并巍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工换途, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留懊渡,地道東北人。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓军拟,卻偏偏與公主長得像剃执,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子懈息,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 1肾档、事務(wù)簡介 ? 事務(wù)(Transaction)是訪問并可能更新數(shù)據(jù)庫中各種數(shù)據(jù)項(xiàng)的一個程序執(zhí)行單元(u...
    逗逼程序員閱讀 672評論 0 1
  • 本文從以下幾個方面介紹分布式事務(wù)的解決方案: 為什么會有分布式事務(wù)分布式事務(wù)經(jīng)典模型分布式事務(wù)解決方案 為什么會有...
    匠丶閱讀 6,321評論 0 37
  • 念先生好:晚飯時(shí),所有菜上桌后辫继,媽媽端出一碗昨天的剩菜阁最,四條油炸的小魚,有點(diǎn)咸骇两,我根本沒打算吃速种。媽媽小聲地對爸爸說...
    唐糖老師閱讀 249評論 0 1
  • 人生如夢,朋友如霧低千。 在我心里配阵,無話不說算不得知己馏颂,而是有些話只想對你一個人說,不必理解棋傍,無需寬慰救拉,只靜靜的聽了便...
    錄一閱讀 463評論 0 3