分布式事務(wù)模型( X/Open DTP)
X/Open DTP(X/Open Distributed Transaction Processing Reference Model)
--分布式事務(wù)卒暂,也就是跨越多個資源的保證數(shù)據(jù)一致性丈甸。
X/Open DTP 定義了三個組件: AP,TM,RM
DTP中定義了 XA 接口
DTP概念:
事務(wù):一個事務(wù)是一個完整的工作單元淳梦,由多個獨(dú)立的計(jì)算任務(wù)組成,這多個任務(wù)在邏輯上是原子性的
全局事務(wù): 對于一次性操作多個資源管理器的事務(wù),就是全局事務(wù)
分支事務(wù):在全局事務(wù)中,某一個資源管理器有自己獨(dú)立的任務(wù)季眷,這些任務(wù)的集合作為這個資源管理的分支任務(wù)
控制線程: 用來表示一個工作線程,主要是關(guān)聯(lián)AP卷胯,TM瘟裸,RM三者的一個線程,也就是事務(wù)上下文環(huán)境诵竭,簡單的說
话告,就是需要表示一個全局事務(wù)以及分支事務(wù)的關(guān)系。
AP(Application Program):也就是應(yīng)用程序卵慰,可以理解為使用DTP的程序
RM(Resource Manager): 資源管理器沙郭,這里可以理解為一個DBMS系統(tǒng),或者消息服務(wù)器管理系統(tǒng)裳朋,應(yīng)用程序通過資源管理器對
資源進(jìn)行控制病线。資源必須實(shí)現(xiàn)XA定義的接口
TM(Transaction Manager): 事務(wù)管理器,負(fù)責(zé)協(xié)調(diào)和管理事務(wù)鲤嫡,提供給AP應(yīng)用程序編程接口以及管理資源管理器
image.png
image.png介紹
其中AP可以和TM以及RM通信送挑,TM和RM互相之間可以通信,DTP模型里面定義了XA接口暖眼,TM和RM
通過XA接口進(jìn)行雙向通信惕耕,例如: TM通知RM事務(wù)提交或者回滾,RM把提交結(jié)果通知給TM诫肠,AP和
RM之間則通過RM提供的Native API 進(jìn)行資源控制(各個廠商有各自的實(shí)現(xiàn)司澎,oracle / mysql)
XA
XA是由X/Open組織提出的兩階段提交協(xié)議,分布式事務(wù)的規(guī)范栋豫。XA規(guī)范主要定義了(全局)事務(wù)管理器(Transaction
Manager)和(局部)資源管理器(Resource Manager)之間的接口挤安。
什么時候應(yīng)該使用XA?
僅在同一個事務(wù)上下文中需要協(xié)調(diào)多種資源(即數(shù)據(jù)庫丧鸯,以及消息主題活隊(duì)列)時蛤铜,才有必要使用XA接口
兩階段提交協(xié)議(2pc)
如果一個事務(wù)管理器管理著多個資源管理器,如果控制全局事務(wù)和分支事務(wù)丛肢,在DTP里面說明兩階段提交的協(xié)議
第一階段:準(zhǔn)備階段
事務(wù)管理器通知資源管理器準(zhǔn)備分支事務(wù)围肥,資源管理器告知事務(wù)管理器準(zhǔn)備結(jié)果
第二階段:提交階段
事務(wù)管理器通知資源管理器提交分支事務(wù),資源管理器告知事務(wù)管理器結(jié)果
第一階段.png
第二階段.png
參考: https://www.cnblogs.com/aigongsi/archive/2012/10/11/2718313.html
分布式理論
CAP理論
一致性(Consistency) : 客戶端知道一系列的操作都會同時發(fā)生(生效)
可用性(Availability) : 每個操作都必須以可預(yù)期的響應(yīng)結(jié)束
分區(qū)容錯性(Partition tolerance) : 即使出現(xiàn)單個組件無法可用,操作依然可以完成
網(wǎng)絡(luò)無法保證百分百可靠摔踱,所有分區(qū)容錯性是一種必然現(xiàn)象
CP
AP
參考:
https://www.cnblogs.com/savorboard/p/distributed-system-transaction-consistency.html
BASE
基本可用
軟狀態(tài)(允許中間狀態(tài)的存在)-> 最終一致性
最終一致性(異步消息隊(duì)列 人工對賬 定時任務(wù)查詢)
什么是分布式事務(wù)
其實(shí)就是分布式數(shù)據(jù)一致性(也就是分布在不同節(jié)點(diǎn)上的數(shù)據(jù)在某個時間或?qū)崟r達(dá)到數(shù)據(jù)一致)