分散式事務_DTP模型和JTA分散式事務
DTP模型
DTP(Distributed Transaction Processing)分散式事務模型。
什麼是分散式事務DTP模型?
AP:應用程式,例如訂單服務、庫存服務
RM:資源管理器可以把理解為一個數據庫(mysql)AP通過RM對資源進行控制。資源必須實現XA定義的介面。
TM:事務管理器負責分配事務唯一標識,監控事務的執行進度,並負責事務的提交,回滾等。
分散式通訊協議XA規範
在DTP分散式事務模型中,XA規範除了定義的RM-TM互動的介面,即TM與資料庫之間的介面規範,TM用它來通知資料庫事務的開始、結束以及提交回滾等。而XA介面函式由資料庫廠商提供(例如:mysql,oracle)
第一步:AP建立了RM1,RM2的JDBC連線。
第二步:AP通知生成全域性事物ID,並把RM1,RM2註冊到全域性事務ID
第三步:執行二階段協議中的第一階段prepare
第四步:根據第一階段中的prepare請求,決定整體提交或回滾。
JTA分散式事務
Java事務API(JTA:Java Transaction API)和它的同胞Java事務服務(JTS:Java Transaction Service),為J2EE平臺提供了分散式事務服務(distributed transaction)的能力。 某種程度上,可以認為JTA規範是XA規範的Java版,其把XA規範中規定的DTP模型互動介面抽象成Java介面中的方法,並規定每個方法要實現什麼樣的功能。
JTA事務模型
在DTP模型中,規定了模型的五個組成元素:應用程式(Application)、資源管理器(Resource Manager)、事務管理器(Transaction Manager)、通訊資源管理器(Communication Resource Manager)、 通訊協議(Communication Protocol)。
在JTA規範中,模型中又多了一個元素Application Server,如下所示: