该样例工程介绍 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,查看运行结果。