兩階段提交

一個特定的商業邏輯操作可能涉及多個程式在多台電腦上執行。 在此設計中,除非所有相關程式成功執行,否則交易不被視為完整。 為了驗證所有參與該交易的其他程式是否已完成交易,必須採用兩階段提交(2PC)協定。

「交易」一詞(或其衍生性商品,如交易性)可能具有誤導性。 在許多情況下,交易一詞指的是在大型主機上執行且不使用 2PC 協定的單一程式。 但在其他情況下,它用來表示由多個程式在多台使用 2PC 協定的電腦上執行的操作。

2PC 協定之所以得名,是因為它在執行操作前會經過以下兩個階段:

  • 第一階段——準備。 在此階段,交易中涉及的每個程式會向 TP 管理器發送訊息,例如Microsoft分散式交易協調器(MS DTC),告知TP管理器已準備好並有能力執行其部分操作。 此階段也稱為預備階段,因為軟體程式已準備好要提交變更或回復變更。 若 TP Manager 從每個相關計畫獲得確認,則進入第二階段。

  • 第二階段——提交或回滾。 在此階段,TP Manager 指示每個程式確認或復原交易中所請求的所有變更。 正確執行的回滾應該能將系統恢復到其原始狀態。

備註

介於第一階段與第二階段之間的狀態稱為「疑慮狀態」。 在應用程式中使用 .NET 的開發者可以決定哪些部分需要存取 TP,哪些部分不需要。 TI 也將此選擇擴展到大型主機,處理需要交易的呼叫與不需要交易的呼叫。 對於需要完全整合基於 Windows 的兩階段提交和大型主機的同步第二級交易的應用程式,TI 提供所有必要的功能。 TI 可以做到這點,不需要你更改客戶端應用程式,也不需要將可執行程式碼放到大型主機上,且對大型主機的 TP 幾乎沒有或幾乎沒有修改。 用戶端應用程式不需要區分 TI 元件與其他元件參考。

下圖展示了基於 Windows 的用戶端應用程式如何隱含地使用 Microsoft 分散式交易協調器(DTC)來協調涉及 SQL Server 與 CICS TP 的分散式交易的兩階段提交。 DTC 負責協調兩件電腦的交易。

此圖片顯示一個用戶端應用程式使用 Transaction Integrator 與 DTC 協調 SQL Server 與 CICS 應用程式之間的兩階段提交。
用戶端應用程式使用 Transaction Integrator 和 DTC 來協調 SQL Server 與 CICS 應用程式之間的兩階段提交

備註

交易整合器僅支援透過 LU 6.2(APPC)並以 Windows 發起處理連接大型主機時的 2PC。 直接透過 TCP/IP 連接時,TI 沒有支援雙電腦。

用戶端應用程式使用 TI 與 DTC

兩階段提交(2PC)交易包含多個元件。 要成功使用交易整合器(TI),您必須了解以下 2PC 元件及術語:

同步點等級2
TP 可透過使用 LU6.2 協定,在三個同步層級之一互動:同步等級 0、同步等級 1 或同步等級 2。 這三個同步等級中,只有一個 Sync Level 2 使用 2PC 協定。 同步等級 0 沒有訊息完整性,而同步等級 1 則支援有限的資料完整性。

TP 管理器
交易程式(TP)管理器是一項系統服務,負責協調交易結果,以實現原子性。 TP 管理器確保資源管理器能一致決定交易是否應該提交或中止。 Windows TP Manager 是 MS DTC。

重新同步服務
LU6.2 重新同步服務是主機整合伺服器(Host Integration Server)中的一個元件,與 MS DTC 合作,在兩件電腦交易中任一節點失敗時自動恢復至一致狀態。 安裝主機整合伺服器時,LU6.2 重新同步服務會預設安裝。

Resource Manager
資源管理器是一種管理持久資料的系統服務。 伺服器應用程式使用資源管理器來維護應用程式的持久狀態,例如可用庫存、待處理訂單及應收帳款的紀錄。 資源管理器與交易管理器合作,為應用程式提供原子性與隔離性的保證(透過 2PC 協定)。 Microsoft、SQL Server™ 和 TI 就是資源管理器的例子。

另請參閱

Windows 交易與大型主機交易
線上交易處理