SpringCloud Alibaba Seata 工作机制

SpringCloud Alibaba Seata

Seata 工作机制

说明

之所以放在后面说工作机制是因为如果一开始就说的话理解困难

所以我们有了前面的列子和说明我们在结合本节内容会收获的多理解相对容易点

分布式事务过程分析

  1. Seata 分布式事务处理过程-ID+三组件模型

image.png

image.png

image.png

debug

image.png

梳理: 术语

先说出现了几个术语XID, TC, TM, RM上图展示了一个分布式事务在Seata的处理过程

  1. Transaction ID XID: 全局唯一的事务ID
  2. Transaction Coordinator(TC) : 事务协调器,维护全局事务的运行状态,负责协调并驱动全局事务的提交或回滚
  3. Transaction Manager™ : 控制全局事务的边界,负责开启一个全局事务,并最终发起全局提交或全局回滚的决议;
  4. Resource Manager(RM) : 控制分支事务,负责分支注册,状态汇报,并接收事务协调器的指令,驱动分支(本地)事务的提交和回滚

梳理: 执行过程

  1. TM向TC申请开启一个全局事务,全局事务创建成功并生成一个全局唯一的XID XID在微服务调用链路的上下文中传播;
  2. RM 向TC注册分支事务,将其纳入XID 对应全局事务的管辖
  3. TM 向TC 发起针对XID 的全局提交或回滚决议
  4. TC 调度XID下管辖的全部分支事务完成提交或回滚请求。

Seata 事务模式

  1. 地址: https://seata.io/zh-cn/

image.png

  1. AT(默认模式)

  2. TCC

  3. SAGA

  4. XA

AT 无侵入模式

文档: https://seata.io/zh-cn/docs/overview/what-is-seata.html

一阶段加载

在一阶段,Seata 会拦截 业务SQL

image.png

image.png

  1. 解析SQL 语义,找到"业务SQL"要更新的业务数据,在业务数据被更新前,将其保存成"before image" (前置镜像)
  2. 执行"业务SQL"更新业务数据,在业务数据更新之后, 其保存成"after image"/后置镜像
  3. 最后生成行锁
  4. 以上操作全部在一个数据库事务内完成,这样保证了一阶段操作的原子性

二阶段提交

image.png

  1. 二阶段如果是顺利提交
  2. 因为"业务SQL"在一阶段已经提交至数据库,所以Seata 框架只需将一阶段保存的快照数据和行锁删掉,完成数据清理即可

二阶段回滚

image.png

  1. 二阶段如果是回滚的话,Seata 就需要回滚一阶段已经执行的"业务SQL",还原业务数据。
  2. 回滚方式便是用"before image"还原业务数据;但在还原前要首先要校验脏写,对比"数据库当前业务数据"和"after image 如果两份数据完全一致就说明没有脏写,可以还原业务数据
  3. 如果不一致就说明有脏写,出现脏写就需要转人工处理。

AT 事务模式Debug 验证

SEATA 的分布式交易解决方案

image.png

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

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

相关文章

ShardingSphere笔记(三):自定义分片算法 — 按月分表·真·自动建表

ShardingSphere笔记(二):自定义分片算法 — 按月分表真自动建表 文章目录 ShardingSphere笔记(二):自定义分片算法 — 按月分表真自动建表一、 前言二、 Springboot 的动态数据库三、 实现我们自己的动态数…

如何创建springboot项目

SpringBoot 优点 可快速构建spring应用直接嵌入tomcat、jetty、undenrtow服务器(无须部署war文件)提供依赖启动器(starter)简化构建配置极大程度的自动化配置Spring和第三方库提供生产就绪功能,例如指标监控检测、外部…

函数(C语言程序设计)

目录 一、函数定义 二、函数调用 三、递归函数 四、局部变量和全局变量 一、函数定义 1、无参函数的定义 类型名 函数名() /*函数首部*/ { 函数体 } 或 类型名 函数名(void) /*函数首部*/ { 函数体 } void类型的函数不…

因为修改系统设置导致edge浏览器打不开的最快解决办法

设置-应用-应用与功能,然后找到Microsoft edge点击修改进行修复🤗

Microsoft Edge打不开了怎么办

相信许多小伙伴都遇到过win10自带浏览器microsoft edge打不开的问题吧,接下来我就教大家怎么做 1.首先,右键单击开始菜单 2.之后单击设置,进入设置。 3.之后分别找到应用-Microsoft Edge,之后单击修改,之后等待修复就…

edge浏览器打不开,有网络能正常上网,但是edge浏览器无法浏览

在edge浏览器设置中,隐私功能往下找到服务提供商 我的是选择的第二个,自己提供服务供应商,后面打不开了 如果是自己填的服务提供商,直接点击第一个,或者直接点击关闭。 速度嘎嘎快

Edge浏览器打不开任何网页!!!

错误代码: STATUS_INVALID_IMAGE_HASH 1、电脑搜索注册表 win键,然后输入“注册表” 2、增加项 找到路径:“计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Edge” 没有Edge的,直接在Microsoft下新建一个Edge文件夹 在Edge下&#…

windows11,打不开IE浏览器,自动跳转到edge浏览器

目前的 暂时解决办法是, 1. 打开 Edge浏览器,--设置 2. 点击左上角 设置--默认浏览器 3. Internet Explorer模式页面--添加 ‘自己需要IE浏览器打开的网址’,然后 就会在 Edge中,再次打开网址尝试;(次模式 会保…

Windows11更新后打不开Edge浏览器解决办法

前几天吐槽win11更新版本后打不开Microsoft Edge浏览器了,特别影响我使用,然后找网上方法,大多让去设置里 修复,就这样,然而没什么卵用,这应该是win11新版本的bug了。 后来看到b站博主 https://b23.tv/QKUh…

微软浏览器Edge打不开怎么办

ctrl shift esc 打开任务管理器 点击窗口内,使其获得焦点,然后切换到英文输入法,输入m(因为edge全称是m开头,这样可以快速找到) 右键,关闭所有edge有关程序,然后进入此目录 C:\Users\(你的用…

Microsoft Edge浏览器不兼容解决办法

Microsoft Edge浏览器不兼容解决办法 报错代码:STATUS_INVALID_IMAGE_HASH 步骤 1、按win R键,打开运行命令框。 2、输入 regedit ,打开注册表编辑器 3、注册表编辑器窗口中,依次展开到以下路径: HKEY_LOCAL_MACHIN…

Microsoft Edge 嗯...无法访问此页面解决办法

目录 【问题描述】 嗯...无法访问此页面,短短半年遇到两次这个问题,具体如下图所示。 【解决步骤】 1.设置 2.高级设置 3.打开代理设置 4.开启 自动检测设置 (初始如图:处于关闭状态) 5.恢复正常 【问题描述】…

Win11重置后edge打不开了?

最近有用户发现电脑升级Win11系统,edge浏览器老是出现一些问题,比如edge打不开,无法启动,这该怎么办?针对这一问题,小编给大家带来了详细的解决方法,操作非常简单,快来试试&#xff…

【解决方案】Microsoft Edge 浏览器 出现“无法访问该页面”问题

前言 今天Microsoft Edge 浏览器上网,突然发现输入任何网址都出现了“无法访问该页面”问题。 网上搜了半天发现了一个比较好的解决方法,本人也尝试成功了。 问题分析 浏览器“出现了“无法访问该页面”问题”——网络明明连接正常&#xff0c…

windows更新导致edge打开不了任何页面的解决办法

昨天我电脑上的windows10更新了,也不知道更新了个啥东西 结果今天edge浏览器就打不开网页了(如下图),甚至连设置页面也打不开,然而其他浏览器都好好的 查了网上说可能是edge缓存太大,但由于我在edge浏览器连…

数据库服务器

数据库服务器,联系Web服务器与DBMS的中间件是负责处理所有的应用程序服务器,包括在web服务器和后台的应用程序或数据库之间的事务处理和数据访问。 基本信息 中文名 数据库服务器 外文名 database server 功能 数据库服务器建立在数据库系统基础上&a…

edge浏览器无法打开任何界面包括设置、扩展页面

问题复现 昨晚,edge 突然什么网页都不能打开,包括设置,扩展等,但是网络正常,隔壁 chrome 正常使用 解决方案(亲测有效) 1、打开文件所在位置,一般在 C:\Program Files (x86)\Micro…

关于《更新win11之后我的edge浏览器打不开》这件事

win11更新后打不开edge浏览器的解决方法 1.打开此电脑,打开路径C:\Program Files (x86)\Microsoft\Edge\Application下的106.0.1370.42文件夹(版本可能不同,总之找到全是数字的文件夹) 2.找到msedgewebview2.exe文件,…

edge浏览器打不开网页如何解决?

edge浏览器是微软官方旗下的浏览器,但是有时候也会遇到edge浏览器打不开网页的情况,这该如何解决?下面就来看看详细的内容。 edge浏览器打不开网页解决方法 1、点击左下角开始,选择windows系统打开“控制面板”。 2、在控制面板中…