該樣例工程介紹 TCC 模式下預留型事務的簡單使用方法,即如何通過 GTS 保證下訂單、扣庫存兩個操作事務的一致性。
前提條件
- 開通 GTS(創建事務分組)。
- 準備兩個 RDS 實例和一個 ECS 實例,用于部署本應用。
背景信息
TCC 模式下,GTS 允許應用介入事務的兩階段提交。預留型事務中,應用在第一階段預留業務資源,在第二階段提交時實現真正的業務邏輯。
樣例邏輯說明
本樣例的業務邏輯是 A 賬戶給 B 賬戶轉賬 500 次(50 個線程,每個線程 100 次)。其中 A 和 B 分別位于在兩個數據庫中,使用 GTS 事務保證 A 和 B 賬戶總額始終不變。
在 TCC 模式下,對于每一個業務表,需要創建一個臨時業務表,用于臨時存儲業務數據。例如對于 account 表需要創建對應的臨時表 temp_table,臨時表必須包含 xid 和 branchid 兩個字段。
構建樣例工程
- 在兩個 RDS 實例中分別通過 sample-txc-mt-reserve-simple.sql 創建 account 表和 temp_table 表。
- 下載樣例 txc-yun-sample 并上傳到 ECS 上。
- 在 sample-txc-mt-reserve-simple /src/main/resources 路徑下打開 mt-client-context.xml 文件,修改樣例配置。
- 將該文件中的兩個數據源分別替換為兩個 RDS 的數據源。
- 將該文件中 constructor-arg value 的值替換為此前申請的 GTS 事務分組 ID。
- 將該文件中 accessKey 和 secretKey 的值修改為您實際賬號的值。
- 在 sample-txc-mt-reserve-simple 目錄下執行 build.sh,編譯樣例工程。
結果驗證
編譯完成后,在 sample-txc-mt-reserve-simple/client/bin 目錄下執行 run.sh,查看運行結果。