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

1.分布式事务

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

分布式事务产生的背景:

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

在这里插入图片描述

强一致性:

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

弱一致性:

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

最终一致性:

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

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

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

在这里插入图片描述

订单表:

在这里插入图片描述

派单表:

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

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

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

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

1.1生产者返出订单号

在这里插入图片描述

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

在这里插入图片描述

2.1消费者:

在这里插入图片描述

问题:

在这里插入图片描述

解决:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值