术语

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的更多相关文章

  1. 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. ...

  2. SpringCloud系列之集成分布式事务Seata应用篇

    目录 前言 项目版本 项目说明 Seata服务端部署 Seata客户端集成 cloud-web module-order module-cart module-goods module-wallet ...

  3. 阿里分布式事务seata入门(采坑)

    1. 阿里分布式事务seata入门(采坑) 1.1. 前言 seata是feascar改名而来,这是阿里在19年年初开源出来的分布式事务框架,当初刚出来的时候就想研究下了,一直拖到了现在,目前是0.8 ...

  4. 分布式事务 Seata Saga 模式首秀以及三种模式详解 | Meetup#3 回顾

    https://mp.weixin.qq.com/s/67NvEVljnU-0-6rb7MWpGw 分布式事务 Seata Saga 模式首秀以及三种模式详解 | Meetup#3 回顾 原创 蚂蚁金 ...

  5. 分布式事务(Seata)原理 详解篇,建议收藏

    前言 在之前的系列中,我们讲解了关于Seata基本介绍和实际应用,今天带来的这篇,就给大家分析一下Seata的源码是如何一步一步实现的.读源码的时候我们需要俯瞰起全貌,不要去扣一个一个的细节,这样我们 ...

  6. 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 ...

  7. springcloud整合分布式事务LCN

    一.创建eureka注册中心 a.pom文件 <properties> <java.version>1.8</java.version> <spring-cl ...

  8. 出席分布式事务Seata 1.0.0 GA典礼

    前言 图中那个红衣服的就是本人 什么是分布式事务 分布式事务就是指事务的参与者.支持事务的服务器.资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上. 简单的说,就是一次大的操作由不同的小 ...

  9. 微服务开发的最大痛点-分布式事务SEATA入门简介

    前言 在微服务开发中,存在诸多的开发痛点,例如分布式事务.全链路跟踪.限流降级和服务平滑上下线等.而在这其中,分布式事务是最让开发者头痛的.那分布式事务是什么呢? 分布式事务就是指事务的参与者.支持事 ...

  10. 分布式事务(Seata) 四大模式详解

    前言 在上一节中我们讲解了,关于分布式事务和seata的基本介绍和使用,感兴趣的小伙伴可以回顾一下<别再说你不知道分布式事务了!> 最后小农也说了,下期会带给大家关于Seata中关于sea ...

随机推荐

  1. Javascript中0.1+0.2===0.3?怎么解决这个问题?

    一.问题分析 计算机存储以二进制的方式,而0.1 在二进制中是无限循环的一个数字,所以会出现裁剪,精度丢失会出现,0.100000000000000002 === 0.1,0.200000000000 ...

  2. Vulhub 漏洞学习之:AppWeb

    Vulhub 漏洞学习之:AppWeb 目录 Vulhub 漏洞学习之:AppWeb 1 AppWeb认证绕过漏洞(CVE-2018-8715) 1.1 漏洞利用原理 1.2 漏洞利用过程 1 App ...

  3. 电子辅助的个体化严密控制策略比常规方法更有效地帮助早期RA实现全面控制病情[EULAR2015_THU0122]

    电子辅助的个体化严密控制策略比常规方法更有效地帮助早期RA实现全面控制病情 THU0122 A TAILORED TELEMONITORING TIGHT CONTROL STRATEGY FOR P ...

  4. C#计时器 Stopwatch 使用demo

    Stopwatch st = new Stopwatch(); st.Start(); for(int i =0; i<100000; i++) { console.writeLine('输出' ...

  5. 使用python编写简单的api接口

    先安装flask模块 pip install Flask py文件 from flask import Flask, request, jsonify app = Flask(__name__) @a ...

  6. 通过 Pulsar 源码彻底解决重复消费问题

    背景 最近真是和 Pulsar 杠上了,业务团队反馈说是线上有个应用消息重复消费. 而且在测试环境是可以稳定复现的,根据经验来看一般能稳定复现的都比较好解决. 定位问题 接着便是定位问题了,根据之前的 ...

  7. PostgreSQL TOAST技术解析

    一.TOAST是什么? TOAST是"The Oversized-Attribute Storage Technique"(超尺寸字段存储技术)的缩写,主要用于存储一个大字段的值. ...

  8. LeetCode-838 推多米诺

    来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/push-dominoes 题目描述 n 张多米诺骨牌排成一行,将每张多米诺骨牌垂直竖立.在开始时 ...

  9. 28.yield return 语法

    一.yield return 该语句可以实现在 foreach 循环中,在其他方法边遍历边输出.如下: class Program { private List<int> list = n ...

  10. [网鼎杯2020]boom

    [网鼎杯2020]boom 分析 感觉比较友善,主要考查数学运算. 解析 解压之后发现是个exe文件,运行得到一个md5 查询: 输入明文得到: 下个挑战是解三元一次方程: 拿matlab算一下. s ...