深度解读分布式事务Seata入门到实践 -尚马教育

news2024/12/24 8:46:55

目录

  • 一、事务的回顾
    • 1、什么是事务
    • 2、事务的特性
    • 3、事务的隔离级别
    • 4、事务的分类
  • 二、分布式事务
    • 1、什么是分布式事务
    • 2、分布式事务产生的背景
    • 3、分布式事务产生的场景
    • 4、分布式事务理论
      • ==4.1 CAP理论==
      • 4.2 Base理论
    • 5、分布式事务的解决方案
  • 三、强一致性介绍
    • 3.1 基本理解
    • 3.2 DTP模型
    • 3.3 落地协议XA
    • 3.4 ⼆阶段提交模型
    • 3.5 ⼆阶段提交的问题
    • 3.6 navicat操作xa
  • 四、XA强一致性实战
    • 4.1 XA强⼀致性JDBC实战
    • 4.2 XA强⼀致性Mybatis操作实战

一、事务的回顾

1、什么是事务

事务表示逻辑上的⼀组操作,⼀个不可分割的执⾏单元,这个单元中的所有操作要嘛全部执⾏成功,要嘛全部执⾏失败

2、事务的特性

在这里插入图片描述

3、事务的隔离级别

4、事务的分类

在这里插入图片描述

  • 扁平事务
    扁平事务是最常⻅的事务,扁平事务⼀般以 start transaction或者begin开始 以rollback或者commit结束,中间的操作都在⼀个事务中。

  • 扁平事务(保存点)
    在这里插入图片描述

  • 链式事务

  • 嵌套事务

  • 分布式事务

二、分布式事务

1、什么是分布式事务

一组操作会产⽣多个数据库session会话 此时就会出现分布式事务

2、分布式事务产生的背景

1)数据库的数据量大,最终拆库拆表,把一个数据库中的数据,放到多台数据库中
⽐如: shardingSphere 再⽐如 springBoot项⽬配置多数据源等等

2)项目架构的转变
项⽬从单体架构->垂直架构->分布式架构->soa架构->微服务架构

3、分布式事务产生的场景

1) 跨数据库
⽐较典型的就是单体项⽬数据层进⾏拆库拆表,或者单体项⽬多数据源的情况

2)跨进程
⽐如多个服务访问的是同⼀个数据库 这种情况下 很少⻅ 但是照样会出现分布式事务

3)跨jvm进程,跨数据库
比较典型的就是微服务项目,一个事务的执行需要牵扯到多个服务,每个服务又有自己的数据库,跨项⽬ ⼜ 跨数据库

【总结】

不管是跨进程,还是跨数据库,还是多服务访问单数据库,都有一个本质的特点,操作时可能存在多个session会话,我们可以理解为如果一组操作会产⽣多个数据库session会话 此时就会出现分布式事务

4、分布式事务理论

4.1 CAP理论

CAP理论指:分布式事务中,不能同时满足一致性,可用性,分区容忍性

  • C:表示⼀致性(Consistency)
  • A : 表示可⽤性(Availability)
  • P:表示分区容忍性(Partition Tolerance)

一致性:一致性表示用户对数据的修改操作,在所有的副本中,要么全部执行成功,要么全部执行失败。(强调的是数据必须一致,允许锁等待和超时)

可⽤性:表示数据库节点可⽤即可,即客户端访问数据的时候 不存在超时 错误响应 能够快速响应结果。此时节点中的数据可以⼀致 也可以不⼀致,可⽤性的关注点就是系统可⽤,访问时可以快速给响应即可。

⽐如 mysql的读写分离 当对主机添加数据时,从机会复制这条数据 当客户端读取从机时 不能超时报错必须得有响应。此时允许读取的数据不是最新的。从机还不能被锁定

分区容忍性:表示把存储系统部署在多个节点中,并且这些节点在不同的⽹络节点中,这就形成了⽹络分区,由于⽹络问题节点之间的通讯可能失败,分区容忍性表示 就算节点通讯失败 照样能对外提供服务

【总结】一致性和可用性是矛盾的
在这里插入图片描述

4.2 Base理论

对 cap中的ap模式做客一个拓展,它牺牲了一致性,换来可用性

在base理论中 强调了三点:

1)基本可用

是指在分布式系统中 如果出现故障,允许系统损失部分功能,但是要保证系统基本可⽤ ⽽不是整个系统死掉(⽐如我们购买⽕⻋票时 下订单经常出错 当下订单功能出错时 我们还可⽤正常查询⻋票 ⽽不是整个12306瘫痪)

2)软状态
软状态指允许系统存在中间状态,中间状态不会影响系统的整体可⽤性,允许系统各个节点中数据同步延迟。

3)最终一致性
最终⼀致性表示 允许分布式系统中各个节点的数据存在不⼀致的情况 但是经过⼀段时间,各
个节点上的数据 最终还是⼀致的。

5、分布式事务的解决方案

强⼀致性 cp:XA协议(数据库级别的规范,需要数据库的支持)

弱⼀致性 ap

  • TCC
  • 可靠消息⼀致性
  • 其他⽅式

三、强一致性介绍

3.1 基本理解

相关特点
强⼀致性解决⽅案要求在任何时间点 任何时刻查询 参与全局事务的各个节点的数据都必须是⼀致的

解决思想

  • DTP模型
  • 2PC⼆阶段提交模型

3.2 DTP模型

DTP模型是X/Open组织定义的⼀套分布式事务标准, 这个标准定义了解决分布式事务的规范和API接⼝,由各地⼚商实现。

DTP模型提出三⼤组件
1:应⽤程序(AP) : 应⽤程序就是我们的项⽬ 控制着事务的开始和结束
2:资源管理器(RM): 资源管理器就是指事务的参与者 在实际中就是我们的数据库
3:事务管理器™: 负责管理协调事务 负责分配事务的唯⼀标识

DTP模型,规范了分布式事务的模型设计(三⼤组件)

3.3 落地协议XA

XA规范
XA则规范了TM与RM之间的通信接⼝,在TM与多个RM之间形成⼀个双向通信桥梁 是数据库级别的规范

规范如下
xa_start 开启⼀个分⽀事务
xa_end 取消分⽀事务
xa_prepare 询问资源管理器是否做好了提交事务的准备
xa_commit 通知资源管理器提交事务
xa_rollback 通知事务管理器回滚事务
xa_recover 列出需要恢复的事务分⽀

mysql的innoDB引擎是⽀持XA的 是基于XA的2阶段提交 可以使⽤show engines \G查看

具体语法 xid表示事务唯⼀标识符
1: 开启XA事务
xa start xid
2: 结束XA事务
xa end xid
3: 准备提交XA事务
xa prepare xid
4: 提交xa事务
xa commit xid
5: 回滚xa事务
xa rollback xid

3.4 ⼆阶段提交模型

是基于 DTP模型的
表示在规范的情况下,事务的完成分为2个阶段
1:prepare阶段
2:Commit rollback阶段

第⼀个阶段: 资源服务器执⾏xa prepare。
事务管理器通知资源管理器,让资源管理器为提交事务做准备,资源管理器收到消息后,执⾏sql 执⾏本地事务,执⾏完毕之后不会提交事务,向事务管理器说我执⾏sql没有出现问题 已经准备好了提交

第⼆个阶段:
如果各个资源管理器都执⾏成功,事务管理器则向各个资源管理器发送提交事务的请求,各个资源管理器收到请求之后 执⾏本地事务提交然后释放资源。
如果有资源管理器返回的是失败 事务管理器则向各个资源管理器发送回滚事务的请求,各个资源管理器收到请求之后 执⾏事务回滚 然后释放资源

成功模型图
在这里插入图片描述

失败模型图
在这里插入图片描述

3.5 ⼆阶段提交的问题

在这里插入图片描述

3.6 navicat操作xa

四、XA强一致性实战

4.1 XA强⼀致性JDBC实战

4.2 XA强⼀致性Mybatis操作实战

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1308251.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

arm-none-eabi-gcc not find

解决办法:安装:gcc-arm-none-eabi sudo apt install gcc-arm-none-eabi; 如果上边解决问题了就不用管了,如果解决不了,加上下面这句试试运气: $ sudo apt-get install lsb-core看吧方正我是运气还不错,感…

环境搭建及源码运行_java环境搭建_mysql安装

1、介绍 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle旗下产品。MySQL是最流行的关系型数据库管理系统之一 1、源码中涉及到的表:mysql 表:订单、意见反馈、用户基础信息、商品、购物车等表 2、订单属于…

Qt/C++视频监控安卓版/多通道显示视频画面/录像存储/视频播放安卓版/ffmpeg安卓

一、前言 随着监控行业的发展,越来越多的用户场景是需要在手机上查看监控,而之前主要的监控系统都是在PC端,毕竟PC端屏幕大,能够看到的画面多,解码性能也强劲。早期的手机估计性能弱鸡,而现在的手机性能不…

自动反冲洗过滤器直通式工作原理介绍和附反冲洗原理图动画讲解

​ 1:自动反冲洗过滤器直通式设备介绍 自动反冲洗过滤器是一种先进、高效且易操作的精密设备,广泛应用于冶金、化工、石油、造纸、医药、食品、采矿、电力、城市给水等领域。 在过滤过程中,待过滤的水由进水口进入过滤器机体,流…

Java版工程行业管理系统源码-专业的工程管理软件-提供一站式服务—鸿鹄工程管理系统

鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 项目背景 随着公司的快速发展,企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,公司对内部工程管理的提…

Python(七)操作JSON

程序员的公众号:源1024,获取更多资料,无加密无套路! 最近整理了一波电子书籍资料,包含《Effective Java中文版 第2版》《深入JAVA虚拟机》,《重构改善既有代码设计》,《MySQL高性能-第3版》&…

基于Java SSM框架实现个性化影片推荐系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现个性化影片推荐系统演示 摘要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,个性化影片推荐系统当然也不能排除在外。个性化影片推荐系统是以实际运用…

【源码解析】flink sql执行源码概述:flink sql执行过程中有哪些阶段,这些阶段的源码大概位置在哪里

文章目录 一. sql执行流程源码分析1. Sql语句解析成语法树阶段(SQL - > SqlNode)2. SqlNode 验证(SqlNode – >Operation)3. 语义分析(Operation - > RelNode)4. 优化阶段(RelNode - &…

uni-app 一些实用的页面模板

时间倒计时 <!-- 时间倒计时 --> <template><view class"container"><view class"flex-row time-box"><view class"time-item">{{ laveTimeList[0] }}</view><text>天</text><view class&qu…

喜讯 | 同立海源生物入选2023年国创中心细胞疗法“揭榜挂帅”技术攻关项目

近日&#xff0c;2023年国家生物药技术创新中心细胞疗法“揭榜挂帅”技术攻关拟立项目名单公示&#xff0c;北京同立海源生物科技有限公司&#xff08;简称“同立海源生物”&#xff09;参评的 “细胞分选激活磁珠研发项目” 凭借公司多年在细胞分选磁珠领域的技术沉淀和创新性…

【期末考复习向】transformer的运作机制

1.transformer的encoder运作 transformer的encoder部分包括了输入和处理2大部分。首先是输入部分inputs&#xff0c;这里初始的inputs是采用独热向量进行表示的&#xff0c;随后经过word2vec等操作把独热向量&#xff08;采用独热向量的好处就是可向量是正交的&#xff0c;可以…

K8S(五)—命名空间与资源配额

目录 命名空间(Namespace)命令计算资源配额创建命名空间绑定一个ResourceQuota资源将命名空间和资源限制对象进行绑定尝试创建第二个 Pod查看ResourceQuota 绑定第二个ResourceQuota为命名空间配置默认的 CPU 、memory请求和限制&#xff08;1&#xff09;Pod 中所有容器都没有…

样本空间的一个划分

假设试验E的样本空间为S&#xff0c;为E的一组事件&#xff0c;如果这组事件满足如下条件&#xff1a; &#xff0c;其中&#xff0c;&#xff0c;即事件两两之间互不相容 那么就称为样本空间S的一个划分。

3D Font

在游戏中使用3D文本 只需添加预制件并立即生成您的文本。 特点: *真实3D字母&#xff0c;可用作游戏对象*移动友好低聚 *VR兼容 *WebGL兼容 *30种以上不同字体 *材料和颜色可定制 WebGL演示 https://indiechest.itch.io/3d-font-engine 下载&#xff1a; ​​Unity资源商店链…

redis:二、缓存击穿的定义、解决方案(互斥锁、逻辑过期)的优缺点和适用场景、面试回答模板

缓存击穿的定义 缓存击穿是一种现象&#xff0c;具体就是某一个数据过期时&#xff0c;恰好有大量的并发请求过来&#xff0c;这些并发的请求可能会瞬间把DB压垮。典型场景就是双十一等抢购活动中&#xff0c;首页广告页面的数据过期&#xff0c;此时刚好大量用户进行请求&…

Linux的五种IO模型

众所周知&#xff0c;出于对 OS 安全性的考虑&#xff0c;用户进程是不能直接操作 I/O 设备的。必须通过系统调用请求操作系统内核来协助完成 I/O 动作。 下图展示了 Linux I/O 的过程。 操作系统内核收到用户进程发起的请求后&#xff0c;从 I/O 设备读取数据到 kernel buff…

使用PM2,在生产环境稳定运行你的node项目

PM2 一个 node&#xff0c;本身就用几行代码&#xff0c;就可以启动个 server 进程&#xff0c;监听个端口&#xff0c;为大家提供 Web 服务 一、依赖安装 npm install pm2 -g 二、命令行启动 普通执行启动 pm2 start <js 文件路径 >.js 携带参数启动 pm2 start < 某种…

AR眼镜_AR智能眼镜整机硬件方案定制

AR眼镜的主要模块包括显示、光学模组、传感器和摄像头、主板、音频和网络连接等。其中&#xff0c;光学显示、主板处理器是决定AR眼镜成本的关键&#xff0c;光机占整体AR眼镜成本43%、处理器占整体成本31%。 AR眼镜的主板设计难点在于尺寸要足够小且要处理好散热问题。主板上的…

Fuzz入门教学——污点分析

1、简介 污点分析是一种用于检测和防止安全漏洞的技术。它关注数据流中的敏感信息&#xff08;污点&#xff09;如何在程序中传播&#xff0c;从而导致安全风险。这种分析通常用于发现潜在的安全漏洞&#xff0c;例如隐私数据泄露或者对数据完整性的威胁。污点分析标记程序中的…

集成显卡Intel® UHD Graphics 630 安装Pytorch

安装Pytorch是为了搭建maskrcnn环境。 查了一圈发现&#xff1a; 显卡Intel UHD Graphics 630是集成显卡&#xff0c;所以不能安装cuda和cudann&#xff0c;也不能使用GPU加速 所以也需要放弃在该电脑上的用VMware新建Ubuntu虚拟机&#xff0c;然后安装有cuda版本的Pytorch&a…