Spring CloudjavaTCC框架

国内主要的开源TCC分布式事务框架包括

框架名称 Github地址 star数量
Tcc-Transaction(推介) https://github.com/changmingxie/tcc-transaction 5200
Hmily https://github.com/yu199195/hmily 3700
ByteTCC(学习这个) https://github.com/liuyangming/ByteTCC 2700
EasyTransaction https://github.com/QNJR-GROUP/EasyTransaction 2300

分布式事务研究以及功能测试相关结果(RPC、事务日志没有全部验证)

框架名称 幂等性 嵌套调用 RPC框架支持 默认支持事务日志存储方式 可靠性验证
Tcc-Transaction 框架不支持 嵌套调用尝试失败 不耦合RPC框架,提供:dubbo、http的相关demo DB、redis、zk、file 通过
Hmily 框架不支持 嵌套调用尝试失败 dubbo、motan、springcloud,提供:dubbo相关demo redis、mongodb、zk,file,DB 通过
ByteTCC 框架支持 嵌套调用尝试失败 dubbo、springcloud file 通过
EasyTransaction 框架支持,业务可选择启用(框架支持情况下影响性能) 嵌套调用尝试失败 Dubbo、SpringCloud、Ribbon/Eureka DB、Redis 通过

关于压力测试,这个可以自己使用JMaster测试,又或者看这里的结果: TCC 几个框架的测试情况记录

1.了解ByteTCC框架入门及讲解

入门Demo地址 gitee:https://gitee.com/ZIB/byte-tcc-demo.git

  • 这里demo使用的是TCC型服务的简化配置

1-1.Demo业务理解分析

项目 解析 备注
sample-eureka-server - - spring cloud eureka 端口:7000
sample-provider SampleProviderMain 启动类,相当于Application 提供接口服务器,端口:7070
AccountController 相当于执行业务的try的业务、confirm业务 通过添加注解@Compensable来处理业务,当中cancellableKey = “accountServiceCancel” 处理cancel的业务
IAccountService 金额添加、消费的业务接口 -
AccountServiceCancel 实现IAccountService接口,执行cancel业务 -
sample-consumer SampleConsumerMain 启动类,相当于Application 消费接口服务器,端口:7080
SimplifiedController 简化配置的controller 通过添加的注解@Compensable(interfaceClass = ITransferService.class, simplified = true)当中simplified = true为建议模式。
@CompensableCancel为执行cancel方法;
@CompensableConfirm为执行confirm方法
TransferController

1-2.ByteTCC 0.5.x版本使用教程

资料截取于:用户指南https://github.com/liuyangming/ByteTCC/wiki

截取资料

终于有人把“TCC分布式事务”实现原理讲明白了! springcloud结合bytetcc实现数据强一致性原理剖析