分布式事务

分布式事务场景

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

什么是事务

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

ACID原则
A 原子性 通过锁保证
C 一致性 通过日志保证
I 隔离性 通过锁保证
D 持久性 通过日志保证

BEGIN TRANSACTION业务逻辑
COMMIT/ROLLBACK

BEGIN TRANSACTION表示事务的开启标记

COMMIT 表示事务的提交操作,表示该事务的结束,此时将事务中处理的数据刷到磁盘中物理数据库磁盘中去。

ROLLBACK 表示事务的回滚操作,表示事务异常结束,此时将事务中已经执行的操作撤销回原来的状态。

分布式事务概念

分布式事务是指会涉及到操作 多个数据库(服务) 的事务。

其实就是将对同一数据库(服务)事务的概念扩大到了对多个数据库(服务)的事务

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

分布式事务思路分析

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

XA规范

AP 应用程序
TM 事务管理器
RM 资源管理器(DB)
在这里插入图片描述
XA规范:总之一句话:
就X/Open DTP 定义的 事务协调者与数据库之间的接口规范(即接口函数),事务协调者用它来通知数据库事务的开始、结束以及提交、回滚等。
XA 接口函数由数据库厂商提供

XA规范的实现:
分布式集群的情况下,一般加代理层来充当TM的角色,实现对事务的支持。

二阶提交协议(2PC)和三阶提交协议(3PC)就是根据这一思想衍生出来的。
两阶段提交主要保证了分布式事务的原子性:即所有结点要么全做要么全不做(3PC在开发中没人会去使用)

2PC

在这里插入图片描述
1阶段:准备(投票)阶段
2阶段:执行事务
在这里插入图片描述
在这里插入图片描述

2PC的缺点

单点故障 协调者出错事务会失败 解决方案:搭建集群解决,防止单节点挂了
阻塞资源 占用数据库连接性能低
二阶段出错 数据不一致

3pc提交协议

can commit
pre commit
do commit
在这里插入图片描述

can commit
在这里插入图片描述
can commit中止提交abort commit
1.有参与者返回no
2.协调者等待超时
3.参与者没有收到协调者的指令
在这里插入图片描述

can commit 所有参与者返回yes,继续执行pre commit
在这里插入图片描述
pre commit阶段都是yes,执行do commit
若有这些情况则abort commit
1.有参与者返回no
2.协调者等待超时

在这里插入图片描述
超时机制:参与者
pre commit :
回滚
do commit:
提交

TCC (Try Confirm Cancel)

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

事件表解决方案

消息队列+本地事件表+定时任务
在这里插入图片描述

最大努力通知方案

特点:
1、重复通知机制。
2、消息校对机制。
适用于做让第三方接入的开放平台
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值