场景
A 和 B 两个账户的数据分别位于两个 RDS 数据库中。A 转账给 B,转账10次,前5次成功,后5次失败。使用 GTS 事务保证 A 和 B两个账户的总金额始终不变。
准备工作
样例工程文件:通过样例的形式可以更加快速的部署、使用 GTS。首先,请 下载样例工程,样例工程的说明请参考 样例工程简介。
资源:两台 RDS(经典网络版),一台 ECS(经典网络版)用于部署 GTS。并确保 ECS 上已经安装了 Maven。
数据库:请在 RDS 实例中,运行如下样例工程中的文件:
txc_sample1.sql
txc_sample2.sql
txc_undo_log.sql
事务分组资源:通过 GTS 控制台,申请事务分组。
操作步骤
将样例工程压缩包拷贝到 ECS 实例上,并解压。
在样例工程解压目录(src/main/resources)下的 txc-client-context.xml 文件中,配置数据源。
在 ECS 实例的样例工程安装目录(src\main\resources)下,找到并打开文件:txc-client-context.xml。
将两个数据源的 URL 中的 IP 地址替换为样例所在的 RDS 的内网地址。
替换 RDS 内网地址
说明:RDS 的内网地址可以在您阿里云账号名下控制台的资源管理页面进行查询。
查询 RDS 内网 IP
将申请的事务分组名称(系统生成的名称)填写到 constructor-arg 的 value中;将 AccessKey 和 SecretKey 的 property 分别替换为您阿里云账户的 Access Key ID 和 Access Key Secret。
替换 AK/SK
在样例工程根目录下,执行 build.sh/bat 脚本。
构建完成后会自动跳转到运行脚本所在目录,执行 run.sh/bat 脚本来运行样例程序。
注意:源代码在 /src/main/java/com/taobao/txc/tests 目录下,请参考。
结果验证
执行 run.sh/bat 的终端窗口会打印样例程序运行的过程及结果信息。
看到程序正常并正确运行完成的信息,即说明成功调用了 GTS 服务。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
基于您提供的场景和操作步骤,这里简要概述了如何使用阿里云的全局事务服务(GTS)来确保跨RDS数据库账户转账操作的事务一致性。GTS能帮助解决分布式系统中的事务问题,确保在多个数据库或服务之间操作的原子性,即要么全部成功,要么全部失败。
txc-client-context.xml
文件,设置两个RDS实例的内网地址作为数据源URL,确保应用能够访问到这两个数据库。build.sh/bat
编译项目,然后用run.sh/bat
启动示例程序。如果一切配置无误且示例程序运行顺利,您将看到所有转账操作按照预期执行的结果,尤其是当部分转账失败时,GTS会自动进行事务回滚,保证A和B账户的总金额不会因失败的转账而发生改变,从而实现了业务逻辑上的正确性和数据的一致性。