前言
大家好,我是田螺。
分享一道京东的场景面试题:如何利用RocketMQ事务消息实现分布式事务?比如下单清空购物车场景。
我们如何更好回答这个问题呢?可以按照以下这几个维度:
1. 什么是分布式事务
分布式事务是指在多个独立的系统或数据库之间执行的事务操作,它确保所有参与者要么全部成功提交,要么全部回滚,以维持数据一致性。
通常保证分布式事务的方案有:消息队列的事务消息、TCC(Try-Confirm-Cancel)模式、Seata、二阶段提交等。
2.一条消息从产生到消费历程
我们先来看看:RocketMQ的一条普通的消息,从产生到被消费,经历的流程:
其实,在RocketMQ中,消费完消息后,消息不会立即被删除,而是根据消息的过期时间和消费进度进行管理。消费者确认消费后,RocketMQ会记录该消息的消费状态,并在达到设定的过期时间后,从存储中删除该消息。这种机制确保了消息的可靠性和持久性。
3. 消息队列的事务消息流程
在开始之前,我们先来了解一下,什么是半消息?
这个半消息,它不是说消息内容不完整,它包含的内容就是完整的消息内容。它跟普通消息的唯一区别是,在事务提交之前,对于消费者来说,这个消息是不可见的。
4. 事务消息下的单清空购物车场景
我们看下,下订单清空购物车的例子吧。订单系统创建完订单后,然后发消息给下游系统的购物车系统,清空购物车。
本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载者并注明出处:https://jmbhsh.com/toutiao/34325.html