国内主要的开源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 |
