分布式事务学习

分布式事务全套解决方案

1.分布式场景中数据一致性问题如何解决?
2.分布式事务问题的回答思路,在面试中如何把握?
3.完整介绍一下两阶段提交协议、三阶段提交协议?
4.组合存储组件(Redis、Mysql),如何解决数据一致性?
5.什么是TCC(Try Confirm Cancel)解决方案?
6.如何利用本地事件表实现分布式事务?
7.最大努力通知方案是什么?

分布式场景

  1. 支付回调场景
    在这里插入图片描述

  2. 下单业务
    在这里插入图片描述

什么是事务

事务:
用户定义的一系列数据库操作,
这些操作可以视为一个完整的逻辑处理工作单元,
要么全部执行,要么全部不执行,
是不可分割的工作单元。

在这里插入图片描述
BEGIN TRANSACTION
业务逻辑
COMMIT/ROLLBACK
BEGIN TRANSACTION表示事务的开启标记
COMMIT表示事务的提交操作,表示该事务的结束,此时将事务中处理的数据刷到磁盘中物理数据库磁盘中去。
ROLLBACK表示事务的回滚操作,表示事务异常结束,此时将事务中己经执行的操作撤销回原来的状态。

@Transaction
在这里插入图片描述

分布式事务

在这里插入图片描述
分布式事务是指会涉及到操作多个数据库(服务)的事务。
其实就是将对同一数据库(服务)事务的概念扩大到了对
多个数据库(服务)的事务

目的是为了保证分布式系统中的数据一致性。

分析原因:事情做了无法后悔。
在这里插入图片描述
解决方案:彩排

思路分析
分布式事务处理的关键是必须有一种方法可以知道事务在任何地方所做的所有动作,提交或回滚事务的决定必须产生统一的结果(全部提交或全部
回滚)

分布式事务:引入协调者
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
XA规范:总之一句话:
就X/Open DTP 定义的 事务协调者与数据库之间的接口规范(即接口函数),事务协调者用它来通知数据库事务的开始、结束以及提交、回滚等。
XA 接口函数由数据库厂商提供
XA规范的实现:
分布式集群的情况下,一般加代理层来充当TM的角色,实现对事务的支持。
二阶提交协议(2PC)和三阶提交协议(3PC)就是根据这一思想衍生出来的。
两阶段提交主要保证了分布式事务的原子性:即所有结点要么全做要么全不做)

2PC 两阶段提交协议

实际中:西式婚礼
2pc生活中例子:西式婚礼:1PC
我愿意
你愿意娶这个女人吗?爱她、忠诚于她,无
论她贫困、患病或者残疾,直至死亡。
你愿意吗?
我愿意
你愿意嫁给这个男人吗?爱他、忠诚于他,
无论他贫困、患病或者残疾,直至死亡。
你愿意吗?

既然如此:现在请你们面向对方,握住对方的
我们将一起面对人生的一切,去分享我们的梦想,作
为平等的忠实伴侣,度过今后的一生。
双手,作为妻子和丈夫向对方宜告誓言

我一一某某某,全心全意娶你做我的妻子,无论是顺
境或逆境,富裕或贫穷,健康或疾病,快乐或优忧愁,
我都将毫无保留地爱你,我将努力去理解你,完完全
全信任你。我们将成为一个整体,互为彼此的一部分,
我们将一起面对人生的一切,去分享我们的梦想,
作为平等的忠实伴侣,度过今后的一生。

我全心全意嫁给你作为你的妻子,无论是顺境或逆
境,富裕或贫穷,健康或疾病,快乐或忧愁,我都
将毫无保留的爱你,我将努力去理解你,完完全全
信任你,我们将成为一个整体,互为彼此的一部分,
我们将一起面对人生的一切,去分享我们的梦想,
作为平等的忠实伴侣,度过今后的一生。

在这里插入图片描述
2pc:提交
第一阶段操作都为同意时
在这里插入图片描述
2pc:回滚
1.有一个参与者返回no。
2.协调者在规定时间内,没有收到所有参与者反馈。
在这里插入图片描述
在这里插入图片描述

seata对两阶段的优化

Transaction Coordinator (TC): 事务协调器,它是独立的中间件,需要独立部署运行,它维护全局事务的运 行状态,接收TM指令发起全局事务的提交与回滚,负责与RM通信协调各各分支事务的提交或回滚。

Transaction Manager ™: 事务管理器,TM需要嵌入应用程序中工作,它负责开启一个全局事务,并最终 向TC发起全局提交或全局回滚的指令。

Resource Manager (RM): 控制分支事务,负责分支注册、状态汇报,并接收事务协调器TC的指令,驱动分 支(本地)事务的提交和回滚。

3PC三阶段提交协议

在这里插入图片描述
在这里插入图片描述
Can commit结果
Can commit所有参与者返回yes
pre commit:

在这里插入图片描述
Can commit结果
1.有参与者返回no。
2.协调者等待超时。
3.参与者没收到协调者的指令
abort commit:

在这里插入图片描述
pre commit结果
Pre commit段都是yes
do commit

在这里插入图片描述
pre commit结果
1.有参与者返回no。
2.协调者等待超时。
abort commit
在这里插入图片描述
超时机制:参与者
pre commit:
回滚
do commit:
提交

TCC (Try Confirm Cancel)
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

消息队列+本地事件表+定时任务

在这里插入图片描述

最大努力通知方案

在这里插入图片描述
1、重复通知机制。
2、消息校对机制。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值