1. 星速云首页
  2. 阿里云文档

阿里云全局事务服务 GTS入门基础样例

样例展示 GTS 最基本的用法。

样例说明

1. 下载样例工程

样例源代码

2. 构建样例工程

数据库初始化

数据库依赖 MySQL,请您自行确保一个可用用的 MySQL 环境(也可以是阿里云的 RDS),具体方法这里不做赘述。

建立两个用于运行样例的数据库,分别执行工程中的 init-a.sql 和 init-b.sql 脚本,建立相关表。

工程构建

构建依赖 maven,请您自行确保一个可用用的 maven 环境,具体方法这里不做赘述。

在样例工程目录下,执行 build 脚本。

运行成功后 common/lib 目录下会生成 GTS 的 SDK 包,包括:

  • 客户端主包:txc-client-${gts.sdk.version}.jar
  • Spring Cloud 原生支持包:txc-client-springcloud-${gts.sdk.version}.jar

3. 导入样例工程到 IDE

为了方便运行和理解,建议您把工程导入到 IDE 中。

样例工程结构

样例工程模拟了资金转账的应用。包含 2 个数据源:

  • 帐户 A 数据源: 存储 A 的资金。
  • 帐户 B 数据源: 存储 B 的资金。

通过 GTS 管理的分布式事务,保障帐户 A 和 B 之间交易的一致性。

5. 运行样例工程

运行样例工程中 Application 的 Main 方法,结合代码逻辑,查看 console 的日志输出。

6. 关键配置和运行机制解读

关键配置

application.properties 中,spring.cloud.txc 前缀的一系列配置是 GTS 关键配置,说明如下:

  • 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.accessKey 和 spring.cloud.txc.secretKey:在 ECS 上正式运行,这里配置您 GTS 服务实例使用者的 AK 和 SK 用于鉴权。默认是使用订购 GTS 服务实例的用户(即实例全名中间部分 账号ID 对应用户)的 AK 和 SK。也可以使用 RAM 授权的用户 AK 和 SK,具体方法参考:为 RAM 用户授权事务分组

以下是老版本的样例,如果没有特定的需要,可以忽略。

样例(老版本)

业务逻辑说明

该样例是 GTS 的入门样例,案例的业务逻辑是从 A 账户转账给 B 账户,其中 A 和 B 分别位于两个数据库中,使用 GTS 事务保证 A 和 B 账户钱的总数始终不变。

阿里云环境搭建方法

1. 准备部署环境

  1. 准备两台 RDS (经典网络)和一台 ECS (经典网络), 用于部署本应用。

  2. 在两个 RDS 实例中分别创建执行 txc_undo_log 表。

  3. 在 RDS1 中创建 user_money_a 表,在 RDS2 中创建 user_money_b 表。

    建表语句位于 txc-yun-sample/sql/sample-txc-simple.sql 文件中.

2. 修改配置。

  1. 数据源配置。

    1. 把该工程拷贝到 ECS 服务器上。

    2. 找到 sample-txc-simple/src/main/resources 目录下的 txc-client-context.xml 文件,对该文件中的两个数据源信息进行修改,分别替换为两个 RDS 的数据源。

  2. scanner 配置。

    1. 在 txc-client-context.xml 文件中将 <constructor-arg value="xxx"/> 的 xxx 替换为申请好的 GTS 事务分组 ID。

    2. 在 txc-client-context.xml 文件中将 <property name=" accessKey" value="xxx"/><property name=" secretKey" value="xxx"/> 的 xxx 分别替换为您阿里云账户的 Access Key ID 和 Access Key Secret。

3. 编译工程

在 sample-txc-simple 目录下执行 build.sh 命令。

4. 运行样例

在 sample-txc-simple 目录下执行 run.sh 命令,可以看到运行结果。

公网环境搭建方法

注意:

  • mysql-connector-java 的版本需要和 MySQL 数据库版本匹配。样例 pom.xml 中推荐的 5.1.38 版本已经在 5.0.55、5.6.16、5.6.21 三个 MySQL 数据库版本上运行过。
  • MySQL 数据库的库名、表名和字段名需要设置为大小写不敏感。

1. 准备本地数据库环境

  1. 准备一台能连接公网的电脑,配置 Java 环境和 Maven 环境。

  2. 安装 MySQL 数据库软件,并创建两个数据库 db1 和 db2。

  3. 在 db1 和 db2 中分别创建 txc_undo_log 表。

  4. 在 db1 库中创建 user_money_a 表,在 db2 库中创建 user_money_b 表。

    建表语句位于 txc-yun-sample/sql/sample-txc-simple.sql 文件中。

2. 修改配置

  1. 下载 txc-yun-sample 到本地。

  2. 数据源配置。

    打开 txc-yun-sample/sample-txc-simple/src/main/resources 目录下的 txc-client-context.xml 文件,将数据源的 url、username、password 修改为实际值。

  3. scanner 配置。

    将 txc-client-context.xml 中的 scanner 配置修改为:

    1. <bean class="com.taobao.txc.client.aop.TxcTransactionScaner">
    2. <constructor-arg value="myapp"/>
    3. <constructor-arg value="txc_test_public.1129361738553704.QD"/>
    4. <constructor-arg value="1" />
    5. <constructor-arg value="https://test-cs-gts.aliyuncs.com" />
    6. </bean>

3. 编译工程

  • Mac OS 或 Linux 系统

    在 sample-txc-simple 目录下执行 build.sh 命令。

  • Windows 系统

    在 sample-txc-simple 目录下执行 build.bat 命令。

4. 运行样例

  • Mac OS 或 Linux 系统

    在 txc-yun-sample/sample-txc-simple/client/bin 目录下执行 run.sh 命令。

  • Windows 系统

    启动 cmd.exe,在 txc-yun-sample/sample-txc-simple/client/bin 目录下执行 start.bat 命令。

注明:本文为星速云原创版权所有,禁止转载,一经发现将追究版权责任!

发表评论

登录后才能评论
问答社区 QQ客服
微信客服
微信客服
分享本页
返回顶部