該樣例工程介紹 TCC 模式下預留型事務的簡單使用方法,即如何通過 GTS 保證下訂單、扣庫存兩個操作事務的一致性。

前提條件

在搭建預留型事務樣例前,需要先完成以下操作:

背景信息

TCC 模式下,GTS 允許應用介入事務的兩階段提交。預留型事務中,應用在第一階段預留業務資源,在第二階段提交時實現真正的業務邏輯。

樣例邏輯說明

本樣例的業務邏輯是 A 賬戶給 B 賬戶轉賬 500 次(50 個線程,每個線程 100 次)。其中 A 和 B 分別位于在兩個數據庫中,使用 GTS 事務保證 A 和 B 賬戶總額始終不變。

在 TCC 模式下,對于每一個業務表,需要創建一個臨時業務表,用于臨時存儲業務數據。例如對于 account 表需要創建對應的臨時表 temp_table,臨時表必須包含 xid 和 branchid 兩個字段。

構建樣例工程

  1. 在兩個 RDS 實例中分別通過 sample-txc-mt-reserve-simple.sql 創建 account 表和 temp_table 表。
  2. 下載樣例 txc-yun-sample 并上傳到 ECS 上。
  3. sample-txc-mt-reserve-simple /src/main/resources 路徑下打開 mt-client-context.xml 文件,修改樣例配置。
    1. 將該文件中的兩個數據源分別替換為兩個 RDS 的數據源。
    2. 將該文件中 constructor-arg value 的值替換為此前申請的 GTS 事務分組 ID。
    3. 將該文件中 accessKeysecretKey 的值修改為您實際賬號的值。
  4. 在 sample-txc-mt-reserve-simple 目錄下執行 build.sh,編譯樣例工程。

結果驗證

編譯完成后,在 sample-txc-mt-reserve-simple/client/bin 目錄下執行 run.sh,查看運行結果。