分布式事务:消息最终一致性方案,消费方出现异常,是否只能进行补偿?

如上层业务系统为支付系统,下层业务系统为库存系统
如果支付完成走到库存这一块,但是遇到库存不足的情况。是否只能手动写补偿机制?

最后想问下,分布式事务有好的文章可以推荐下的嘛。谢谢!

阅读 255
评论 更新于 2019-12-05
    2 个回答

    如果按照你图中的流程,那就需要引入分布式事务。
    如果是基于XA协议(两阶段提交),这种叫做刚性事务,侵入性小,方案成熟,但是不适合高并发高性能的环境,因为会锁定全局资源。
    可以考虑柔性事务,强调最终一致性。方案有最大努力送达、Saga、TCC(TCC需要业务方改造代码)。可以看下蚂蚁开源的Seeta。
    相关的文章我比较喜欢的还是《未来架构:从服务化到云原生》里面9.4.2节,讲了分布式事务的基本理论,现有方案的对比等。博客看了一些但没有印象深刻的。(微信读书有无限卡的话可以免费阅读。整一大章节讲的是数据库。)
    希望可以帮到你。

    评论 赞赏 2019-12-06
      vms_g
      • 2
      • 新人请关照

      首先业务上肯定是下单成功才会去支付,下单时肯定要预留出这一个订单的量,如果不涉及第三方支付(只是本系统钱包),比较成熟的是两阶段提交方案

      评论 赞赏 2019-12-05
        撰写回答

        登录后参与交流、获取后续更新提醒