分布式事务,有哪些解决方案?

提问者:Rae 问题分类:微服务
分布式事务,有哪些解决方案?
1 个回答
Rae
Rae 提问者
1、执行业务逻辑前,先插入流水任务,如果中间过程调用外部RPC接口服务或者本地数据库操作失败时,流水任务会被定时调度任务周期性触发、重试,直到成功。前提条件,所有接口服务都要实现幂等。当执行成功时,流水记录会被删除。
2、基于事务消息,能保证本地数据库一定成功,其他业务系统做为订阅方,通过重试机制保证最终一致性,但要注意接口幂等。
3、两阶段提交
4、引入业务状态机,初始为 init 状态(对外不可见),待所有依赖的RPC接口全部调用一遍,待所有接口的数据全部初始化,然后开始第二轮调用,将状态置为对外可见。当然,此阶段可能会部分调用失败,需要多次重试
5、TCC 模式。Try:尝试待执行的业务;Confirm:执行业务;Cancel:回滚执行的业务
6、Seata 阿里开源框架,把分布式事务定义为由若干本地事务(分支)组成的全局事务。被全局事务管理的全部分支,将在协调器的协调下,保证一起成功或一起回滚。
发布于:1个月前 (11-08) IP属地:四川省
我来回答