采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师,你好。 微服务中,如果订单系统给用户系统发送mq成功了,然后订单系统执行剩下的业务逻辑,那么整个订单系统中的流程走完了,订单系统也落了它自己的数据,事务也提交了,但是用户系统突然执行对应业务逻辑失败了。这时候怎么回滚订单库中的事务?
用户系统要先多次retry。报警。人工干预。
也可以自动触发回滚,就是生产多个消息,去回滚之前多个数据。发到其他的消息队列里面。可以标记优先级给每个消息.
对于一部分非关键的业务,放在消息的后面,如果出错了,就及时报警,采用人工干预,往往的最简单直接的。 retry的前提的是没有业务逻辑上的错误(例如购买商品,库存不足这种,属于业务逻辑上的失败流程)。 所以,开始处理前先进行业务逻辑验证很重要。
这就是在分布式系统中处理事务的逻辑,每个系统只负责自己的流程,订单系统保证订单处理完成,用户系统处理自己支付逻辑。 如果用户系统处理支付流程失败了,那就由用户系统处理自己的错误,如果错误无法修复,那就触发一个订单失败的流程,发给订单系统。
登录后可查看更多问答,登录/注册
掌握分布式事务实现技术,是架构师必备技能。
1.2k 13
1.1k 13
1.6k 12
1.5k 8
1.6k 7