86.基于RabbitMQ最新解决分布式事务方案

1.分布式事务

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
分布式
跨库
2个@Transactional注解没有关系

分布式事务产生的背景:

1.在rpc通讯中,每个服务都有自己独立的数据源,每个数据源都互不影响;。
2.在单个项目存在多个不同jdbc连接(多数据源)。
每个jdbc 连接都有自己独立的事务数据源,

在这里插入图片描述

强一致性:

强一致性:也就是我们的线程b读取到的结果一定是为mayikt而不是yusheng jun;
解决方案:要么数据库A非常迅速的速度将数据同步给数据库B,或者数据库A没有同步完成之前数据库B不能够读取userName。。

弱一致性:

弱一致性:允许读取数据是为老的数据允许读取的结果不一致性。

最终一致性:

因为在分布式系统,数据的同步走网络通讯、多多少少可能会收到网络的延迟、抖动数据会.产生延迟,这是非常正常现象。。
所以呢,短暂的数据延迟是允许的,但是最终结果一定要同步

在这里插入图片描述
1.往订单表中插入一-条数据
2.插入数据成功的话,发送派单消息

数据一致:
订单表有一条订单记录 并且 派单表有一条派单记录

在这里插入图片描述

订单表:

在这里插入图片描述

派单表:

在这里插入图片描述
在这里插入图片描述

扫描二维码关注公众号,回复: 8814847 查看本文章

如何基于我们的MQ解决我们的分布式事务的问题(最终一致性概念)

如何基于我们的MQ解决我们的分布式事务的问题(最终一致性概念)。

  1. 确保我们的生产者往我们的MQ投递消息一定要成功(生产消息确认confirm机制) 实
    现重试。。
    2.确保我们的消费者能够消费成功(手动的ack机制)如果消费失败的情况下,MQ自
    动帮消费者重试|
  2. 确保我们的生产者第一事务先执行成功,如果执行失败采用补单队列
    在这里插入图片描述

1.1生产者返出订单号

在这里插入图片描述

1.2生产者若失败,递归重试:

在这里插入图片描述

2.1消费者:

在这里插入图片描述

问题:

在这里插入图片描述

解决:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

发布了119 篇原创文章 · 获赞 12 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_44722978/article/details/103587408