xa和兩階段提交
分布式事務處理是指乙個事務可能涉及多個資料庫操作,分布式事務處理的關鍵是必須有一種方法可以知道事務在任何地方所做的所有動作,提交或回滾事務的決定必須產生統一的結果(全部提交或全部回滾)。
x/open組織(即現在的open group)定義了分布式事務處理模型。x/open dtp模型(1994)包括應用程式(ap)、事務管理器(tm)、資源管理器(rm)、通訊資源管理器(crm)四部分。一般,常見的事務管理器(tm)是交易中介軟體,常見的資源管理器(rm)是資料庫,常見的通訊資源管理器(crm)是訊息中介軟體。為表述方便起見,在本文中直接以其常見表現形式進行描述。
一般情況下,某一資料庫無法知道其它資料庫在做什麼,因此,在乙個dtp環境中,交易中介軟體是必需的,由它通知和協調相關資料庫的提交或回滾。而乙個資料庫只將其自己所做的操作(可恢復)影射到全域性事務中。
xa就是x/open dtp定義的交易中介軟體與資料庫之間的介面規範(即介面函式),交易中介軟體用它來通知資料庫事務的開始、結束以及提交、回滾等。xa介面函式由資料庫廠商提供。
通常情況下,交易中介軟體與資料庫通過xa 介面規範,使用兩階段提交來完成乙個全域性事務,xa規範的基礎是兩階段提交協議。
在第一階段,交易中介軟體請求所有相關資料庫準備提交(預提交)各自的事務分支,以確認是否所有相關資料庫都可以提交各自的事務分支。當某一資料庫收到預提交後,如果可以提交屬於自己的事務分支,則將自己在該事務分支中所做的操作固定記錄下來,並給交易中介軟體乙個同意提交的應答,此時資料庫將不能再在該事務分支中加入任何操作,但此時資料庫並沒有真正提交該事務,資料庫對共享資源的操作還未釋放(處於上鎖狀態)。如果由於某種原因資料庫無法提交屬於自己的事務分支,它將回滾自己的所有操作,釋放對共享資源上的鎖,並返回給交易中介軟體失敗應答。
在第二階段,交易中介軟體審查所有資料庫返回的預提交結果,如所有資料庫都可以提交,交易中介軟體將要求所有資料庫做正式提交,這樣該全域性事務被提交。而如果有任一資料庫預提交返回失敗,交易中介軟體將要求所有其它資料庫回滾其操作,這樣該全域性事務被回滾。
weblogic
我不明白用xa driver建連線池目的是什麼?為了用jta嗎?
是不是要用為了用jta,就必須用xa 型驅動。
xa driver就是遵循x/open協議的兩階段提交驅動
在j2ee裡jta可以用jts協作xa的資料來源實現兩階段提交,如果驅動不支援xa,jts就不能協調工作了(可以模擬,但一般不推薦使用).
今天我又查了一下,好像就是 x/open cae 的縮寫。反正就是遵循的協議。
特點是支援分布式事務的兩階段提交。應該對吧。
追問一句,所謂txdatasource,是不是也就是對應於xa型驅動的連線池的datasource.
XA兩階段提交協議
因為事務需要實現acid,即原子性 一致性 隔離性 永續性,所以需要採用一定的機制來保證,通常採用的是分階段提交的方式。xa xa協議,規定事務管理器和資源管理器介面,採用二階段提交協議。一階段提交協議相對簡單,如下圖 當然,前提是開啟了事務,然後在應用程式發出提交 回滾請求後,資料庫執行操作,而後...
兩階段提交協議
閱讀次數 142次 類別 我的文章 永久鏈結 trackback 實現分布式事務的關鍵就是兩階段提交協議。在此協議中,乙個或多個資源管理器的活動均由乙個稱為事務協調器的單獨軟體元件來控制。實現分布式事務的關鍵就是兩階段提交協議。在此協議中,乙個或多個資源管理器的活動均由乙個稱為事務協調器的單獨軟體元...
兩階段提交協議
兩階段提交協議 實現分布式事務的關鍵就是兩階段提交協議。在此協議中,乙個或多個資源管理器的活動均由乙個稱為事務協調器的單獨軟體元件來控制。此協議中的五個步驟如下 應用程式呼叫事務協調器中的提交方法。事務協調器將聯絡事務中涉及的每個資源管理器,並通知它們準備提交事務 這是第一階段的開始 為 了以肯定的...