编辑: 摇摆白勺白芍 | 2019-07-17 |
【商标声明】 及其它腾讯云服务相关的商标均为腾讯云计算(北京)有限责任公司及其关联公司所有.本文档涉及的第三方主体 的商标,依法由权利人所有. 【服务声明】 本文档意在向客户介绍腾讯云全部或部分产品、服务的当时的整体概况,部分产品、服务的内容可能有所调整.您 所购买的腾讯云产品、服务的种类、服务标准等应由您与腾讯云之间的商业合同约定,除非双方另有约定,否则, 腾讯云对本文档内容不做任何明示或模式的承诺或保证. 腾讯微服务平台 版权所有:腾讯云计算(北京)有限责任公司 第3 共13页 文档目录 分布式事务 概述 开发文档 控制台基本操作 样例部署 腾讯微服务平台 版权所有:腾讯云计算(北京)有限责任公司 第4 共13页TSF 提供金融级别高可用分布式事务能力,保证大规模的分布式场景下的业务一致性.TSF 框架下的分布式事务基于 TCC(Try、Confirm 和Cancel 的简称)模式,支持跨数据库、跨服务的使用场景.为金融、制造业、互联网等行 业客户保驾护航. TCC 模式 TCC 模式是一种补偿性分布式事务,包含 Try、Confirm、Cancel 三种操作.其中 Try 阶段预留业务资源, Confirm 阶段确认执行业务操作,Cancel 阶段取消执行业务操作. TCC 模式解决了跨服务操作的原子性问题,对数据库的操作为一阶段提交,性能较好.因此,TCC 模式是现今被广 泛应用的一种分布式事务模式. 相关文档 事务管理词汇表 事务管理常见问题 分布式事务 概述 最近更新时间:2018-12-19 15:30:46 腾讯微服务平台 版权所有:腾讯云计算(北京)有限责任公司 第5 共13页 配置 TCC 事务 1. 添加依赖 通过 Maven 引入依赖,在项目的 pom 文件添加下述配置项: com.tencent.tsf tcc-transaction-core 1.10.1.TSF-RELEASE 2. 启用 TCC 事务 在Spring Cloud 的启动类加入注解 EnableTcc: @SpringBootApplication @EnableTcc public class App { public static void main(String[] args) { SpringApplication.run(App.class);
} } 3. 添加注解 您可以在事务的入口函数上添加 @TsfTcc 注解.建议将注解加在接口定义的方法上. TsfTcc注解有如下属性: serviceName:事务所属的服务名,必选. type:事务类型,TransactionType.ROOT表示主事务,TransactionType.BRANCH表示子事务,默认值为 Root,可选. timeout_ms:事务的超时时间,属性可选,默认为60秒,可选. confirmMethodName:confirm方法名,主事务可选,子事务必选. cancelMethodName:cancel方法名,主事务可选,子事务必选. autoRetry:事务超时后,是否由服务器托管继续自动重试. 开发文档 最近更新时间:2019-04-12 17:17:38 腾讯微服务平台 版权所有:腾讯云计算(北京)有限责任公司 第6 共13页 定义主事务 主事务函数只需要定义一个事务入口函数即可.type 选择 Root类型;
函数抛出 Throwable 异常,返回值没有特殊 要求;
建议业务将所需的参数都封装成一个对象,只使用这一个对象作为入参即可(所有的参数必须实现 Serializable 接口),一个主事务函数定义的样例如下: public class MainTransaction { @TsfTcc(serviceName = myTcc , type = TransactionType.ROOT, timeout_ms = 60000) public String beginTcc(MyParams params) throws Throwable { //这里写业务逻辑,调用子事务函数 } } 定义子事务 一个完整的子事务需要定义3个方法:Try、Confirm、Cancel. 其中只有 Try 方法需要加 TsfTcc 注解,在TsfTcc 标签中指定对应 Confirm 和Cancel 方法名即可. 子事务函数定义约束如下: Try、Confirm、Cancel 的前两个参数必须为 String txId 和long branchId(在主事务调用子事务的时候,这两个 参数分别为 null 和0即可),其中 txId 为主事务 ID,全局唯一;