分布式事務-XA強一致性

場景

業(yè)務按領域垂直分庫后,在某些場景下,就必然會出現(xiàn)同一個事務上下文中,需要協(xié)調(diào)多個資源(數(shù)據(jù)庫)以保證業(yè)務的一致性。如訂單創(chuàng)建服務中生成訂單數(shù)據(jù)、和預占資源(扣減庫存)。

實現(xiàn)方式

XA事務

事務管理器、RM1、RM2、RM3、...

  • 第一階段:準備,READY/就緒、RRAD_ONLY/只讀、NOT_READY/未準備好。任一RM回答“未準備好”,則整個事務回滾;全部回答READY,進入第二階段提交;某個回答只讀,第二階段處理中排除掉。
    所有RM在預備階段必須完成所有的約束檢查,并確保后續(xù)提交或放棄時所需要的數(shù)據(jù)已持久化?。ǚ艞??)
    準備階段,由于各RM已完成數(shù)據(jù)的持久化,因此各數(shù)據(jù)已被加鎖,并要等到第二階段的提交操作完成才會釋放鎖!因此,整體上看,兩階段事務方式下,每個RM上的操作,鎖的時間都變長了,所以會降低并發(fā)處理能力(鎖等待)和增加系統(tǒng)異常幾率(死鎖)。

  • 第二階段:提交

實現(xiàn)

  • TX接口(APP - TM)、XA接口(TM - RM)
    事務管理器通常由專門的中間件提供,資源管理器如數(shù)據(jù)庫、消息隊列等產(chǎn)品一般會提供對XA接口的支持。

總結(jié)

  • 核心思想:前面給予充分的處理時間和出錯機會,第二階段一致性提交確認做的事情足夠少,保證最小不一致幾率。(焦點是解決多個參與者的協(xié)調(diào)&同步問題!在最短的時間內(nèi)完成一致性同步/協(xié)調(diào)!)
  • 單機鎖時間消耗微秒級,分布式事務下鎖時間消耗毫秒級,1000倍的差異!
  • 系統(tǒng)處理上的吞吐率與資源上的時間消耗成反比,即阿姆達爾定理!
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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

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