全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 智能硬件
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 更多
全局事务服务 GTS

sample-txc-mt-reserve-simple 样例工程

更新时间:2018-06-12 22:24:06

业务逻辑说明

本案例的业务逻辑是 A 账户转账给 B 账户500次(50个线程,每个线程100次),其中 A 和 B 分别位于在两个数据库中,使用 GTS 事务保证了 A 和 B 账户总额始终不变。

该样例展示了 GTS 在 MT 模式下,预留型事务的使用方式。MT 模式下,GTS 允许应用介入事务的两阶段提交。预留型事务中,需要应用在一阶段预留业务资源,第二阶段提交时实现真正的业务逻辑。在 MT 模式下,对于每一个业务表,需要创建一个临时业务表用于临时存储业务数据。例如对于 account 表需要创建对应的临时表 temp_table,临时表必须包含 xid 和 branchid 两个字段。

案例搭建方法

  1. 从 GTS 控制台申请事务分组。

  2. 需要两台 RDS,一台 ECS 用于部署本应用。

  3. 在两个 RDS 实例中分别通过 sample-txc-mt-reserve-simple.sql 创建 account 表和 temp_table 表。

  4. 把该工程拷贝到 ECS 服务器上,找到 sample-txc-mt-reserve-simple /src/main/resources 目录下的 mt-client-context.xml 文件。

    1. 对该文件中的两个数据源进行修改,分别替换为两个 RDS 的数据源。

    2. 将该文件中 <constructor-arg value="xxx"/>的 xxx 替换为此前申请的 GTS 组 ID。

    3. 将该文件中 <property name=" accessKey" value="xxx"/><property name=" secretKey" value="xxx"/>的 xxx 分别替换为您阿里云账户的 Access Key ID 和 Access Key Secret。

  5. 在 sample-txc-mt-reserve-simple 目录下执行 build.sh 编译本工程。编译完成后在 sample-txc-mt-reserve-simple/client/bin 目录下执行 run.sh 可以看到运行结果。

  6. Java 源代码在 /sample-txc-mt-reserve-simple /src/main/java/com/taobao/txc/tests 目录下,可以根据业务需求修改。

本文导读目录