您可以通過(guò)入門基礎(chǔ)樣例快速體驗(yàn)如何使用 GTS 實(shí)現(xiàn)分布式事務(wù)。

基礎(chǔ)樣例簡(jiǎn)介

樣例工程模擬了資金轉(zhuǎn)賬的應(yīng)用。包含 2 個(gè)數(shù)據(jù)源:

  • 賬戶 A 數(shù)據(jù)源:存儲(chǔ) A 的資金。
  • 賬戶 B 數(shù)據(jù)源:存儲(chǔ) B 的資金。

通過(guò) GTS 管理的分布式事務(wù),保障賬戶 A 和 B 之間交易的一致性。

步驟一:下載樣例工程

樣例工程詳情請(qǐng)參見(jiàn)gts-sample-simple

說(shuō)明 如果需要使用舊版入門樣例,請(qǐng)參見(jiàn)舊版樣例簡(jiǎn)介

步驟二:構(gòu)建樣例工程

  1. 初始化數(shù)據(jù)庫(kù)。
    1. 數(shù)據(jù)庫(kù)依賴 MySQL,準(zhǔn)備一個(gè)可用的 MySQL 環(huán)境(也可以是阿里云的 RDS)。
    2. 建立兩個(gè)用于運(yùn)行樣例的數(shù)據(jù)庫(kù),分別執(zhí)行工程中的 init-a.sqlinit-b.sql 腳本,建立相關(guān)表。
  2. 構(gòu)建工程。
    1. 構(gòu)建工程依賴 Maven,準(zhǔn)備一個(gè)可用的 Maven 環(huán)境。
    2. 進(jìn)入樣例工程的根目錄,執(zhí)行 build.bat (Windows)或 build.sh(Linux)腳本。
    運(yùn)行成功后 common/lib 目錄下會(huì)生成 GTS 的 SDK 包,包括:
    • 客戶端主包:txc-client-${gts.sdk.version}.jar
    • Spring Cloud 原生支持包:txc-client-springcloud-${gts.sdk.version}.jar

步驟三:導(dǎo)入樣例工程到 IDE

為了方便運(yùn)行和理解,建議您把工程導(dǎo)入到 IDE 中。

步驟四:運(yùn)行樣例工程

運(yùn)行樣例工程中 Application 的 Main 方法,結(jié)合代碼邏輯,查看 console 的日志輸出。

關(guān)鍵配置和運(yùn)行機(jī)制解讀

application.properties中,以 spring.cloud.txc 為前綴的一系列參數(shù)是 GTS 關(guān)鍵配置,說(shuō)明如下:

  • GTS 全局事務(wù)調(diào)用鏈路上的每個(gè)服務(wù)都要進(jìn)行這些配置,例如樣例中的 Business/Storage/Order/Account。
  • spring.cloud.txc.txcAppName:每個(gè)服務(wù)自定義一個(gè)全局唯一的應(yīng)用名。
  • spring.cloud.txc.txcServerGroup:GTS 服務(wù)實(shí)例(事務(wù)分組)名。
    • 在本地運(yùn)行通過(guò)公網(wǎng)訪問(wèn) GTS 服務(wù)時(shí),請(qǐng)使用公共的實(shí)例 txc_test_public.1129****3855****.QD 并配合使用下面的 spring.cloud.txc.url 配置。
    • 在正式環(huán)境 ECS 上運(yùn)行時(shí),請(qǐng)使用您訂購(gòu)的 GTS 服務(wù)實(shí)例全名,并配合使用下面的 spring.cloud.txc.accessKeyspring.cloud.txc.accessKey 配置。
  • spring.cloud.txc.url:公網(wǎng)訪問(wèn) GTS 服務(wù)的接入地址,固定值 https://test-cs-gts.aliyuncs.com 。這個(gè)配置僅在本地公網(wǎng)訪問(wèn)時(shí)需要。
  • spring.cloud.txc.accessKeyspring.cloud.txc.secretKey:在 ECS 上正式運(yùn)行,這里配置您 GTS 服務(wù)實(shí)例使用者的 AccessKey ID 和 AccessKey Secret 用于鑒權(quán)。默認(rèn)是使用訂購(gòu) GTS 服務(wù)實(shí)例的用戶(即實(shí)例全名中間部分賬號(hào)ID 對(duì)應(yīng)用戶)的 AccessKey ID 和 AccessKey Secret。也可以使用 RAM 授權(quán)的用戶 AccessKey ID 和 AccessKey Secret,具體方法請(qǐng)參見(jiàn)為RAM用戶授權(quán)事務(wù)分組