分布式事务实现-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
  • 根据微服务系统的架构具体情况具体分析
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容