GTS SDK 2.8.31 版本開始,GTS 全面支持原生 Spring Cloud 應用,包括 RestTemplate 和 Feign 兩種方式。

前提條件

在使用原生 Spring Cloud 應用樣例前,請先完成以下工作:
  • 數據庫依賴 MySQL,準備一個可用的 MySQL 環境(也可以是阿里云的 RDS)。
  • 構建樣例工程依賴 Maven,準備一個可用的 Maven 環境。

樣例簡介

該樣例模擬了一個用戶訂購商品的業務系統,包含 3 個微服務:

  • Storage:庫存服務,扣減指定商品的庫存數量。
  • Order:訂單服務,根據采購請求生成訂單。
  • Account:賬戶服務,從用戶賬戶中扣減金額。

訂購商品的業務流程如下圖所示:

樣例場景-Spring Cloud
  1. Business 開啟一個 GTS 管理的全局事務。
  2. Business 調用 Storage 和 Order。
  3. Order 調用 Account。

GTS 將保障整個服務調用鏈路上的數據一致性。

步驟一:下載樣例工程

樣例工程詳情請參見 Spring Cloud原生支持樣例源代碼。

步驟二:構建樣例工程

  1. 創建一個用于運行樣例的數據庫,執行工程中的 init.sql 腳本,建立相關表。
  2. 構建樣例工程。
    1. 構建樣例工程依賴 Maven,準備一個可用的 Maven 環境。
    2. 在樣例工程的根目錄下,執行mvn clean install命令。
    SDK 包是由common/lib里的download-maven-plugin插件通過wget命令從 GTS 官網下載的。如果您的環境不能執行wget命令,上面的 Maven 構建會失敗。這種情況下,請您按以下方式操作:
    1. 手工下載最新的 SDK 開發包,并放在 common/lib 目錄下。
    2. 在工程 pom.xml 文件的 modules 中將common 刪掉。
      <modules>
       <!--<module>common</module>-->
       <module>bussiness</module>
       <module>account</module>
       <module>storage</module>
       <module>order</module>
       <module>eureka</module>
      </modules>                            
    3. 重新執行 mvn clean install 命令。
    運行成功后common/lib目錄下會生成 GTS 的 SDK 包,包括:
    • 客戶端主包:txc-client-${gts.sdk.version}.jar
    • Spring Cloud 原生支持包:txc-client-springcloud-${gts.sdk.version}.jar

步驟三:導入樣例工程到 IDE

為了方便運行和理解,建議您把工程導入到 IDE 中。

步驟四:運行樣例工程

  1. 分別運行樣例工程中 5 個 module 的 Main 方法,啟動服務。
    • Eureke:EurekaServerApplication
    • Storage:StorageApplication
    • Order:OrderApplication
    • Account:AccountApplication
    • Business:BusinessApplication
  2. 服務啟動成功后,通過瀏覽器訪問 http://127.0.0.1:8084/purchase 來調用訂購業務。
    說明 可選的調用參數請閱讀樣例中的 BusinessController.java 的代碼來了解。

關鍵配置和運行機制解讀

application.properties中,spring.cloud.txc 前綴的一系列配置是 GTS 關鍵配置,說明如下:

  • GTS 全局事務調用鏈路上的每個服務都要做這些配置,例如樣例中的 Business/Storage/Order/Account。
  • spring.cloud.txc.txcAppName:為每個服務定義一個全局唯一的名字。
  • spring.cloud.txc.txcServerGroup:GTS 服務實例名。

    • 在本地運行通過公網訪問 GTS 服務時,請使用公共的實例 txc_test_public.1129361738553704.QD 并配合使用下面的 spring.cloud.txc.url 配置。
    • 在正式環境 ECS 上運行時,請使用您訂購的 GTS 服務實例全名,并配合使用下面的 spring.cloud.txc.accessKeyspring.cloud.txc.accessKey 配置。
  • spring.cloud.txc.url:公網訪問 GTS 服務的接入地址,固定值 https://test-cs-gts.aliyuncs.com 。這個配置僅在本地公網訪問時需要。
  • spring.cloud.txc.accessKeyspring.cloud.txc.secretKey:在 ECS 上正式運行,這里配置您 GTS 服務實例使用者的 AccessKey ID 和 AccessKey Secret 用于鑒權。默認是使用訂購 GTS 服務實例的用戶(即實例全名中間部分賬號ID 對應用戶)的 AccessKey ID 和 AccessKey Secret。也可以使用 RAM 授權的用戶 AccessKey ID 和 AccessKey Secret,具體方法請參見為RAM用戶授權事務分組。