从永远到永远-分布式事务-我没实践学不会应付面试用吧-垃圾

我连个分布式都没干过的学前班级程序员,面个试还能被问到分布式事务。没办法,这个逼良为娼的社会呀!
学!

以后把事务、数据库那块、spring的事务、分布式事务做下整合。

一、基础理论:
1、分布式事务本质上:解决不同数据库间的数据一致性问题。
2、分布式架构基础理论在这里插入图片描述

3、Base原则
CAP理论的三个原则是不能兼顾的,base算有一个这种方案吧。
在这里插入图片描述

二、解决方案:
1.基于两阶段提交的解决方案。
1)什么是两阶段提交-2PC/XA
在这里插入图片描述
流程分为两个阶段,也就是我们常说的两阶段提交,第一阶段事务管理器跟各个资源管理器(笼统认为是数据库就好)确认他们是否准备好,都确认准备好可以进行提交了,就进行第二阶段的提交。
在这里插入图片描述
2)实现,原生代码实现比较复杂,通常使用框架处理。
在这里插入图片描述
是一个基于Java事务和XA规范的一个框架。

2.基于消息的解决方案
基于两阶段提交的方案,在两个阶段处理过程中,是一直抓着资源不放的(数据库的连接等等)。所以衍生出了基于消息的分布式事务的解决方案。
1)理论部分
在这里插入图片描述
消息中间件的基本流程
在这里插入图片描述
2)解决方案
1>在这里插入图片描述
先发送消息说我要做一个事务操作,正常处理业务逻辑,最后再发送确认事务操作。消息队列只有收到确认发送消息才会允许消费者消费消息。
幂等性的意思:比如说consumer收到produce的消息后,处理完业务逻辑,但是因为某种原因消息消费成功的信息没有发送给消息队列。其中是可以通过手段使其再进行一次操作。幂等性就是必须保证这次消费消息处理的结果是和上次一样的,防止出现重复消费。
2>
在这里插入图片描述
其实就是执行的业务操作和发送消息操作都进行本地持久化,通过定时任务检查本地数据库有没有要发送的消息,有待发送消息就将其发送给消息中间件,之后流程与前边基本类似基本是是一样的。

这个方案是不是实现最终一致性的时间太长了点????多加了一个本地持久化,再从本地持久化发消息,消费完还要再返信息处理本地消息。感觉有点二比
3>上边的变种方案,感觉更二比,又拆出来一步。
在这里插入图片描述

3、TCC
功能强大,但是开发维护等成本极高,难度极大。
在这里插入图片描述
在这里插入图片描述
4、LCN国内框架 玛德感

感谢公开课视频:https://www.bilibili.com/video/av51670855/?spm_id_from=333.788.videocard.0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值