SAGA TCC 的本质就是一个 workflow, 用 activiti, conductor 或 zeebee 都可以实现. saga, tcc 依赖的状态机模型在 workflow 引擎一直在用, 二者并无本质不同, 并且 workflow 较之更通用.
当然, 专用也有专用的价值. 不管在 tcc 还是 saga, 用几个 annotation 就可以实现事务的串联进行和回滚(引擎会"自动"找到相应的接口), 但对于引擎来说, 完全没有必要诞生专门的 tcc/saga server. 毕竟 workflow 也很常用, 无法幂等的场景也不胜枚举.
来两个例子:
第一个案例是阿里云卖它的 Serverless 时给出的分布式事务解决方案: 分布式多步骤事务
第二个 Using Zeebe’s workflows instead of Sagas in Axon
相关讨论:
可能 GraphQL 也能达到同样的效果.