GTS 從 2.8.18 版本開始支持 Dubbo。您無需再關心全局事務上下文 XID 在服務調用鏈路上的傳播,進一步簡化了編程模型。

前提條件

在使用樣例前,請先完成以下工作:
  • 準備兩個 RDS 實例,用戶創建數據庫。
  • 準備一個 ECS 實例,用于部署本樣例。

實現原理

基于 Dubbo 的 Filter 機制,GTS 的 SDK 內置了專門用于在調用鏈路上傳播事務上下文的 TransactionPropagationFilter ,有需要有用戶可以對這個類進行 DEBUG 來了解事務傳播的機制。

說明
  • Java 運行環境的最低要求是 1.8。
  • 只支持 2.7.0 及以上版本的 Dubbo,即 org.apache.dubbo Group 的 Dubbo。

樣例邏輯說明

該樣例模擬了用戶下訂單、減庫存的業務邏輯。客戶端(Client)通過調用訂單服務(OrderService)創建訂單,之后通過調用庫存服務(StockService)扣庫存。其中在訂單服務讀寫訂單數據庫、庫存服務讀寫庫存數據庫過程中,GTS 將保證跨服務事務的一致性。

搭建樣例

  1. 初始化數據庫。
    1. 進入 txc-yun-sample/sql 目錄中,執行 txc_undo_log.sql,在兩個 RDS 實例中分別創建 txc_undo_log 表。
    2. 在 RDS1 中創建 orders 表,在 RDS2 中創建 stock 表。
      建表語句位于 txc-yun-sample/sqlsample-txc-dubbo.sql 文件中。
  2. 下載樣例 txc-yun-sample并上傳到 ECS 上。
  3. 在 IDE 中修改樣例配置。
    1. resource 目錄下每個 xml 文件中 constructor-arg value 的值替換為申請好的 GTS 事務分組 ID。
    2. resource 目錄下每個 xml 文件中 accessKeysecretKey 的值修改為您實際賬號的值。
      說明 請使用主賬戶的 Access Key ID/Access Key Secret。如果使用 RAM 子賬戶的 Access Key ID/Access Key Secret,需要先使用主賬戶對子賬戶進行授權。
    3. urlusernamepassword 的值修改為您實際使用的值。
  4. txc-yun-sample/sample-txc-dubbo 目錄下執行 build.sh 腳本,編譯樣例。
    編譯后會在 sample-txc-dubbo/client/bin 目錄下生成 stock_run.shorder_run.shclient_run.sh 三個運行腳本,分別對應庫存服務、訂單服務以及客戶端。
  5. txc-yun-sample/sample-txc-dubbo 目錄下執行 run.sh 腳本,啟動樣例。
    該腳本會依次啟動 order_run.sh(訂單服務)、stock_run.sh(庫存服務)和 client_run.sh(客戶端程序)。