分布式事務(wù)(XA、2PC抡句、3PC介紹)

XA簡單介紹

XA是由X / Open發(fā)布的規(guī)范探膊,用于DTP(分布式事務(wù)處理)。
DTP分布式模型主要含有

  • AP: 應(yīng)用程序
  • TM: 事務(wù)管理器
  • RM: 資源管理器(如數(shù)據(jù)庫)
  • CRM: 通訊資源管理器(如消息隊(duì)列)

XA主要就是TM和RM之間的通訊橋梁待榔。

2PC

兩階段提交協(xié)議(The two-phase commit protocol逞壁,2PC)是 XA 用于在全局事務(wù)中協(xié)調(diào)多個資源的機(jī)制。
2PC將事務(wù)的提交過程分為兩個階段來進(jìn)行處理

  • 準(zhǔn)備階段
    1. TM向所有RM發(fā)送事務(wù)內(nèi)容锐锣,詢問是否可以提交事務(wù)腌闯,并等待所有RM答復(fù)。
    2. RMs執(zhí)行事務(wù)操作雕憔,將操作信息記入事務(wù)日志中,但不提交事務(wù)
    3. 如RM執(zhí)行成功姿骏,給TM反饋YES;如執(zhí)行失敗斤彼,給TM反饋NO分瘦。
  • 提交階段
    1. 所有RM均反饋YES時,即提交事務(wù)
    2. 任何一個RM反饋NO時琉苇,即中斷事務(wù)并進(jìn)行回滾嘲玫。

3PC

3PC是2PC的改進(jìn)版,其將二階段提交協(xié)議的“準(zhǔn)備階段”一份為二并扇,形成了cancommit去团,precommit,docommit三個階段。

  • CanCommit階段
    1. TM向RMs發(fā)送CanCommit請求土陪。詢問是否可以執(zhí)行事務(wù)提交操作昼汗。然后開始等待RM的響應(yīng)。
    2. RMs接到CanCommit請求之后旺坠,正常情況下乔遮,如果可以順利執(zhí)行事務(wù)扮超,則返回Yes,并進(jìn)入預(yù)備狀態(tài)取刃。否則反饋No
  • PreCommit階段
    • 正常情況:所有RM均反饋YES時,即提交事務(wù)
      1. TM向RM發(fā)送PreCommit請求出刷,并進(jìn)入Prepared階段璧疗。
      2. RM接收到PreCommit請求后,會執(zhí)行事務(wù)操作馁龟,并將undo和redo信息記錄到事務(wù)日志中崩侠。
      3. 如果RM成功的執(zhí)行了事務(wù)操作,則返回ACK響應(yīng)坷檩,同時開始等待最終指令却音。
    • 有任何一個RM向TM發(fā)送了No響應(yīng),或者等待超時之后矢炼,TM都沒有接到RM的響應(yīng)系瓢,那么就執(zhí)行事務(wù)的中斷。
      1. TM向所有RM發(fā)送abort請求句灌。
      2. RM收到來自TM的abort請求之后(或超時之后夷陋,仍未收到TM的請求),執(zhí)行事務(wù)的中斷胰锌。
  • doCommit階段
    • 正常
      1. TM接收到RM發(fā)送的ACK響應(yīng)骗绕,那么他將從預(yù)提交狀態(tài)進(jìn)入到提交狀態(tài)。并向所有RM發(fā)送doCommit請求资昧。
      2. RM接收到doCommit請求之后酬土,執(zhí)行正式的事務(wù)提交。并在完成事務(wù)提交之后釋放所有事務(wù)資源格带。
      3. 事務(wù)提交完之后诺凡,向TM發(fā)送Ack響應(yīng)。
      4. TM接收到所有RM的ack響應(yīng)之后践惑,完成事務(wù)腹泌。
    • TM沒有接收到RM發(fā)送的ACK響應(yīng)(可能是TM發(fā)送的不是ACK響應(yīng),也可能響應(yīng)超時)尔觉,那么就會執(zhí)行中斷事務(wù)凉袱。
      1. TM向所有RM發(fā)送abort請求。
      2. RM接收到abort請求之后,利用其在階段二記錄的undo信息來執(zhí)行事務(wù)的回滾操作专甩,并在完成回滾之后釋放所有的事務(wù)資源钟鸵。
      3. RM完成事務(wù)回滾之后,向TM發(fā)送ACK消息涤躲。
      4. TM接收到RM反饋的ACK消息之后棺耍,執(zhí)行事務(wù)的中斷。

小結(jié)

2PC的主要問題有三點(diǎn):

  • 兩個階段事務(wù)處于阻塞狀態(tài)
  • TM出現(xiàn)問題种樱,一直修復(fù)不了的話蒙袍,RM會一直阻塞
  • 由于網(wǎng)絡(luò)問題或者TM發(fā)送一半掛了 ,只有部分RM收到commmit請求嫩挤,會導(dǎo)致數(shù)據(jù)的不一致

3PC在二害幅、三階段引入超時自動提交事務(wù)的機(jī)制RM完成事務(wù)后釋放資源,有效的防止2PC的前兩種情況岂昭。
3PC數(shù)據(jù)一致性的問題還是存在以现,doCommit時,TM發(fā)送abort請求约啊,但由于網(wǎng)絡(luò)問題邑遏,部分RM沒有接受到。這樣就會出現(xiàn)部分RM執(zhí)行commit,另外一部分執(zhí)行abort,從而導(dǎo)致數(shù)據(jù)不一致的問題恰矩。

refer

https://www.infoq.cn/article/xa-transactions-handle/
https://blog.csdn.net/u013679744/article/details/79188945

博客

個人博客同步更新

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末记盒,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子枢里,更是在濱河造成了極大的恐慌孽鸡,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件栏豺,死亡現(xiàn)場離奇詭異彬碱,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)奥洼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進(jìn)店門巷疼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人灵奖,你說我怎么就攤上這事嚼沿。” “怎么了瓷患?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵骡尽,是天一觀的道長。 經(jīng)常有香客問我擅编,道長攀细,這世上最難降的妖魔是什么箫踩? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮谭贪,結(jié)果婚禮上境钟,老公的妹妹穿的比我還像新娘。我一直安慰自己俭识,他們只是感情好慨削,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著套媚,像睡著了一般缚态。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上凑阶,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天猿规,我揣著相機(jī)與錄音衷快,去河邊找鬼宙橱。 笑死,一個胖子當(dāng)著我的面吹牛蘸拔,可吹牛的內(nèi)容都是我干的师郑。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼调窍,長吁一口氣:“原來是場噩夢啊……” “哼宝冕!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起邓萨,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤地梨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后缔恳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宝剖,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年歉甚,在試婚紗的時候發(fā)現(xiàn)自己被綠了万细。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡纸泄,死狀恐怖赖钞,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情聘裁,我是刑警寧澤雪营,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站衡便,受9級特大地震影響献起,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一征唬、第九天 我趴在偏房一處隱蔽的房頂上張望捌显。 院中可真熱鬧,春花似錦总寒、人聲如沸扶歪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽善镰。三九已至,卻和暖如春年枕,著一層夾襖步出監(jiān)牢的瞬間炫欺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工熏兄, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留品洛,地道東北人。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓摩桶,卻偏偏與公主長得像桥状,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子硝清,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評論 2 348

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