
参考《Spring Cloud Alibaba 微服务原理与实战》
上一篇介绍了分布式事务入门,这边文章来一起了解一下分布式事务的常见解决方案
微服务实战 05 分布式事务 入门
TCC ( Try - Confirm - Cancel ) 他把完成的业务差分为如下三个步骤

其实 TCC 就是两阶段提交的思想
基于可靠性消息的最终一致性方案是互联网公司比较常用的分布式数据一致性解决方案。
它主要利用消息中间件的可靠性机制来实现数据一致性投递。

支付服务收到支付结果通知后,先更新订单状态,再发送消息到消息队列,账户服务监听指定队列的消息并进行响应的处理,完成数据的同步。
在第四和第五步骤中,支付服务需要 操作订单数据库,发送消息到消息队列,在这里存在操作的原子性问题,要么两个操作都成功,要么都失败

最大努力通知型也是基于可靠性消息的最终一致性方案的方案类型,它是一种简单柔性事务解决方案,适用于对数据一致性要求不高的场景。
在下图中的第四步,如果 支付服务没有返回支付宝 “success” 状态码,那么这个支付结果回调请求会以衰减重试机制(即逐步拉大间隔时间进行通知)知道达到最大通知次数,如果达到最大次数后支付服务还没有返回确认,这种情况下,支付宝提供查询支付结果接口,根据返回结果支付服务可以更新订单状态。

支付宝网页端支付时序图
