事务管理的过程
- do
- commit/rollback
JTA事务管理的过程
- do
- prepare/rollback
- commit/rollback
TCC模式的事务管理
- try
- commit(confirm) /cancel
TCC模式实现思路
- 每个需要实现事务的接口,都需要3个接口,分别是: tryXX():业务检查,预留资源
confirmXX(): 执行业务,使用资源
cancelXX():回滚业务,释放资源
TCC模式协调器的功能
- 接管事务管理,类似JTA的独立事务管理器(非两阶段提交)
- 保存每个资源上的事务记录:跟踪状态,检查超时
- 保证每个资源上的事务性
- 处理各种错误:超时、重试、网络异常、服务不可用
TCC 模式实现分布式事务
- 借鉴XA的统一资源管理器,又不是两阶段提交
- 不同资源之间没有锁,事务过程数据没有锁、没有隔离
- 出错时可能多次调用Confirm/cancel 方法、以及顺序无法保证
- confirm /cancel方法需要满足幂等性,即重复调用时结果一致
基于TCC模式的开发
- 没有统一的规范,也没有广泛使用框架
- 协调器的开发比较复杂:需要保证各种出错情况下的最终一致性
- 协调器监控事务:事务及其参数、返回值保存在数据库中
- TCC模式的服务组件的服用性
基于TCC模式开发的注意事项
- 合理设计try/confirm/cancel方法的功能
- 保证confirm/cancel方法的幂等性
-
设计合理的服务间调用:try方法可以调用其他服务
微服务系统的分布式事务实现
- 事务同步
- 重试和幂等性
- try-Confirm /Cancel
- 根据微服务系统的架构具体情况具体分析