分布式事务实现-TCC模式

事务管理的过程

  • 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方法可以调用其他服务


    TCC模式的框架.png

微服务系统的分布式事务实现

  • 事务同步
  • 重试和幂等性
  • try-Confirm /Cancel
  • 根据微服务系统的架构具体情况具体分析

你可能感兴趣的:(分布式事务实现-TCC模式)