阅读:https://www.jianshu.com/p/f2caa8737b7b,以下是要点:
四种分布式事务模式,分别在不同的时间被提出,每种模式都有它的适用场景和注意事项:
- AT 模式是无侵入的分布式事务解决方案,适用于不希望对业务进行改造的场景,几乎0学习成本。但是要注意共享数据会存在脏写,如果是数据只由事务调用者单独控制,那么就没有问题。
- TCC 模式是高性能分布式事务解决方案,适用于核心系统等对性能有很高要求的场景。要注意并发、幂等,要解决空回滚、防悬挂控制
- Saga 模式是长事务解决方案,适用于业务流程长且需要保证事务最终一致性的业务系统,Saga 模式一阶段就会提交本地事务,无锁,长流程情况下可以保证性能,多用于渠道层、集成层业务系统。事务参与者可能是其它公司的服务或者是遗留系统的服务,无法进行改造和提供 TCC 要求的接口,也可以使用 Saga 模式。要注意幂等,要解决空补偿、防悬挂控制
- XA模式是分布式强一致性的解决方案,但性能低而使用较少。
空回滚、空补偿:例如,如果try或者是正操作网络超时引起回滚,事务没有接到try或者正操作请求,但是接到了回滚或逆向回滚操作,这时候就应当执行空回滚或空补偿。
防悬挂控制:例如,回滚操作请求早于try请求调用引起的数据异常。
要防止以上问题,每个分布式事务应当有唯一编号,单个事务执行时缓存此编号并记录已执行阶段,各个阶段执行时核验缓存。