大家好,我是Leo。
这是开端的第三次循环了。当前正在正处于RocketMQ基础原理。
本章概括
分布式事务
由何而来
我们在使用MQ在解决实际业务场景中的问题时,往往伴随诸多问题!比如如下图
上述两种可能都会导致数据不一致,在业务系统中是 致命的问题!
这个时候我们就要保证事务消息。要不全部成功,要不全部失败。来达到订单服务,购物车服务的数据一致性!
对于购物车服务收到订单创建成功消息清理购物车这个操作来说,失败的处理比较简单,只要成功执行购物车清理后再提交消费确认即可,如果失败,由于没有提交消费确认,消息队列会自动重试。
解决了购物车服务问题,剩下的就是订单服务这边的创建订单,生产消息这两步了。要么全部成功,要么全部失败,不允许一个成功,一个失败的情况。
一旦订单控制不住,购物车那边也是控制不住的! 这就是事务需要解决的问题了!
什么是分布式事务
事务就是为了保证这些数据的完整性和一致性,我们希望这些更新操作要么全部成功,要么全部失败。这就是我们通过对事务的理解。如果严格来说,MQ的事务和MySQL一样,都具有四种属性 ACID
- 原子性:一个事务操作不可分割,要么成功&