欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

分布式事物 - 基于RPC调用 - TCC模式

程序员文章站 2022-05-18 19:32:10
前提 前端业务(主服务)可以以同步或异步调用TCC框架,或者TCC框架本身就是同步异步兼备的. 假定TCC框架拥有断电后的自动恢复能力.同时,在下游业务出现无限失败的情况下,也会进行无限的重试,以达到最终一致 正式开始 正常流程 一切安好. 可以观察到,confirm操作完全交由TCC调用.在同步状 ......

前提

  • 前端业务(主服务)可以以同步或异步调用tcc框架,或者tcc框架本身就是同步异步兼备的.
  • 假定tcc框架拥有断电后的自动恢复能力.同时,在下游业务出现无限失败的情况下,也会进行无限的重试,以达到最终一致

正式开始

正常流程

分布式事物 - 基于RPC调用 - TCC模式

一切安好.
可以观察到,confirm操作完全交由tcc调用.在同步状态下,无论最终成功与失败,可能出现前端等待时间过长的问题.
个人认为,try阶段,也可以直接注册到tcc中,并完全交由tcc框架调用,客户端只访问其保留的接口.

预留失败

分布式事物 - 基于RPC调用 - TCC模式

因下游业务或网络问题导致了预留失败.
与正常流程相同,不过此时调用了tcc的cancel操作

总结

  • 实施tcc方案时,最好在立项伊始就要做好相应的数据库设计与接口定义方案.能在数据库中保存"预留"数据,同时相关代码提供"预留","确认","取消"方法的接口定义以用作实现.
  • 整体来说,业务级人员减小了业务开发难度(虽然工作量变大了).同时将重心转移到了"tcc框架"的实现.它需要保证高可用,数据安全,幂等,甚至需要能处理代码迭代引起的版本差异的问题
  • 因为设计到事物管理问题,其框架开发难度也变大了,可以使用开源框架如:
    1. easytransaction
    2. bytetcc
    3. ...