springcloud(八) - 分布式事务seata
术语
TM(transaction manage)事务管理器: 分布式事务的发起和终结者,负责提交和回滚全局事务。
TC(transaction coordinatorr)事务协调器: 协调全局事务和本地事务的运行。
RM(resource manage)资源管理器:本地事务的运行。
分布式事务执行流程
1. Business服务为TM 向TC申请创建全局事务和创建XID。
2. TM获取XID后,携带XID进行远程调用。
3. 各本地事务获取到XID后,创建本地事务后与TC通信报告本地事务执行结果
4. TM根据TC返回结果决定全局事务的提交还是回滚。
5. TC调度XID下所有的本地事务进行提交或回滚。
事务模式 - AT(默认)
mysql回滚表结构
上图中的stock服务,执行了update product set name = 'GTS' where name = 'TXC'; ,内部执行步骤如下
第一阶段:更新语句与本地事务提交,并把结果反馈给TC
1. 解析SQL, 获取表product, 类型update、条件name = 'TXC'
2. 查询SQL, 获取查询前的镜像 select id,name , since from product;
3. 执行update
4. 查询更新后的镜像 select id,name , since from product;
5. 回滚语句插入回滚表,包含修改前和修改后的值。
6. 提交update和事务,并把提交结果报告给TC
第二阶段:
本地事务有回滚,则全局事务回滚。本地事务根据回滚log表再开启事务执行回滚语句并把执行接口告知TC.
无回滚,则删除本地回滚语句。
写隔离设计
原因:回滚查询log的时候可能修改后的值被别人改了,这样就需要设置锁保证数据一致性。
tx1 tx2两个事务都需要对a表中的m列进行修改,正常的执行步骤如下
1. tx1先获取本地锁 执行update语句,等待获取全局锁就能提交,释放本地锁。
2. tx2获取本地锁 执行update语句,等待获取全局锁。
3. tx1全局锁释放后,tx2才能获取到全局锁,才能提交并且释放本地锁。
参考:https://blog.csdn.net/qq1309664161/article/details/126548748
事务模式 - XCC
事务模式 - SAGA
事务模式 - XA
springcloud(八) - 分布式事务seata的更多相关文章
- SpringCloud整合分布式事务Seata 1.4.1 支持微服务全局异常拦截
项目依赖 SpringBoot 2.5.5 SpringCloud 2020.0.4 Alibaba Spring Cloud 2021.1 Mybatis Plus 3.4.0 Seata 1.4. ...
- SpringCloud系列之集成分布式事务Seata应用篇
目录 前言 项目版本 项目说明 Seata服务端部署 Seata客户端集成 cloud-web module-order module-cart module-goods module-wallet ...
- 阿里分布式事务seata入门(采坑)
1. 阿里分布式事务seata入门(采坑) 1.1. 前言 seata是feascar改名而来,这是阿里在19年年初开源出来的分布式事务框架,当初刚出来的时候就想研究下了,一直拖到了现在,目前是0.8 ...
- 分布式事务 Seata Saga 模式首秀以及三种模式详解 | Meetup#3 回顾
https://mp.weixin.qq.com/s/67NvEVljnU-0-6rb7MWpGw 分布式事务 Seata Saga 模式首秀以及三种模式详解 | Meetup#3 回顾 原创 蚂蚁金 ...
- 分布式事务(Seata)原理 详解篇,建议收藏
前言 在之前的系列中,我们讲解了关于Seata基本介绍和实际应用,今天带来的这篇,就给大家分析一下Seata的源码是如何一步一步实现的.读源码的时候我们需要俯瞰起全貌,不要去扣一个一个的细节,这样我们 ...
- spring boot:使用分布式事务seata(druid 1.1.23 / seata 1.3.0 / mybatis / spring boot 2.3.2)
一,什么是seata? Seata:Simpe Extensible Autonomous Transcaction Architecture, 是阿里中间件开源的分布式事务解决方案. 前身是阿里的F ...
- springcloud整合分布式事务LCN
一.创建eureka注册中心 a.pom文件 <properties> <java.version>1.8</java.version> <spring-cl ...
- 出席分布式事务Seata 1.0.0 GA典礼
前言 图中那个红衣服的就是本人 什么是分布式事务 分布式事务就是指事务的参与者.支持事务的服务器.资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上. 简单的说,就是一次大的操作由不同的小 ...
- 微服务开发的最大痛点-分布式事务SEATA入门简介
前言 在微服务开发中,存在诸多的开发痛点,例如分布式事务.全链路跟踪.限流降级和服务平滑上下线等.而在这其中,分布式事务是最让开发者头痛的.那分布式事务是什么呢? 分布式事务就是指事务的参与者.支持事 ...
- 分布式事务(Seata) 四大模式详解
前言 在上一节中我们讲解了,关于分布式事务和seata的基本介绍和使用,感兴趣的小伙伴可以回顾一下<别再说你不知道分布式事务了!> 最后小农也说了,下期会带给大家关于Seata中关于sea ...
随机推荐
- jquery(三:jquery的动画)
动画 一:1.显示 show() 参数:1.代表动画执行的时长,毫秒数,也可以是代表时长的字符串 fast normal slow 2.代表方法执行完毕的回调函数 默认的是:normal $(func ...
- 详解神经网络基础部件BN层
摘要:在深度神经网络训练的过程中,由于网络中参数变化而引起网络中间层数据分布发生变化的这一过程被称为内部协变量偏移(Internal Covariate Shift),而 BN 可以解决这个问题. 本 ...
- MySQL视图、存储过程、函数、触发器、定时任务、流程控制总结
视图的增删改查 视图相当于一张只能读的表,不可以修改.当组成视图的表发生数据变化的时候,视图会相对应的进行改变. 存储过程的练习 创建存储过程: create [if not exists] proc ...
- 钓鱼攻击之:Flash 网页钓鱼
钓鱼攻击之:Flash 网页钓鱼 目录 钓鱼攻击之:Flash 网页钓鱼 1 准备资料 2 具体钓鱼流程 3 生成后门并捆绑flash的安装程序 4 处理WEB站点过程 1 准备资料 Flash网站克 ...
- Linux学习之文件目录指令(部分)
包括了 ls pwd cd mkdir rmdir touch cp rm mv cat echo more less head tail > >>指 ...
- 40.Ribbon和Feign
优先级:全局代码 < 全局属性 < 细粒度代码 < 细粒度属性 推荐属性配置
- 【剑指Offer】【树】序列化二叉树
题目:请实现两个函数,分别用来序列化和反序列化二叉树 二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存.序列化可以基于先序. ...
- python 读取xls文件
import xlrdfrom xlrd import xldate_as_tuplefrom IPScriptUtil import *from serverTest import *import ...
- [学习计划]mysql常用语句-随学随整理
<> 不等于 三元表达式 select *, if (num=1, "第一", "其他") as 别名 from 表 COUNT 统计总数并按某 ...
- 10. watch的实现原理
watch的实现原理 watch和computed一样, 也是基于 Watcher 的 组件内部使用的watch 和 外部使用的 vm.$watch()都是调用的Vue.prototype.$watc ...