Seate分布式事务
1.架构图
TM(Transaction Manager)发送提交/回滚命令
这个模块是全局事务管理器,负责开启全局事务、提交全局事务、回滚全局事务、查询全局事务的状态、上报本地事务状态等。(TransactionManager.java)
RM(Resource Manager)执行提交/回滚操作
这个是资源管理器,负责分支事务注册、分支事务提交、分支事务回滚、锁查询等操作。(DefaultResourceManager.java)
TC (Transaction Coordinator) 用于接收提交/回滚
事务的协调者。也可以看做是 Seata-server,用于接收我们的事务的注册,提交和回滚
实际上RM才是真正处理事务操作的地方
2.AT模式
检查方法是否携带@GroblaTransaction注解,存在开启全局事务
2.1执行本地事务
1.开启全局事务,并且获取Xid全局事务id
2.执行本地事务的代码(business.excute),执行过程中被seata的代码监管
3. commitGlobalTransaction/rollbackGlobalTransaction 提交当前分支事务,回滚当前分支事务
4. 执行一些托管到 TransactionHookManager 中的 complete hook 逻辑
5. 复原由事务传递属性改变的当前事务的状态,比如 REQUIRES_NEW 传递属性就将当前分布式事务 xid 挪走了,这一步 就讲 xid 重新放到当前线程的上下文中。
2.2执行全局commit
1. 关闭全局事务的状态,并将全局事务的状态设置为开始提交
2. 根据分布式事务的模式(AT、TCC、SAGA)选择是同步提交还是异步提交。目前只有 TCC 要求交操作是同步的,其它 的模式是异步提交全局事务。
3. 执行事务提交操作,异步则是将全局事务状态更新为 AsyncCommitting,更新到数据库,后面有由定时任务重新拉起, 执行同步提交事务;
同步提交事务,查询到当前全局事务下所有的分支事务,通知客户端提交分支事务,如果失败,则将状态更新为 CommitRetrying,由另一个线程反复重试,直到成功为止
2.2执行全局rollback
2.3隔离级别
2.3.1写隔离
写隔离的实现基本步骤:
•一阶段本地事务提交前,需要确保先拿到全局锁 。
•拿不到全局锁,不能提交本地事务。
•拿全局锁的尝试被限制在一定范围内,超出范围将放弃,并回滚本地事务,释放本地锁
2.3.1读隔离
Seata(AT 模式)的默认全局隔离级别是 读未提交(Read Uncommitted) 。
如果应用在特定场景下,必需要求全局的 读已提交 ,目前 Seata 的方式是通过 SELECT FOR UPDATE 语句的代理。这个代理在读之前,先去获取全局锁,获取不到则一直重试。
3.TCC模式
3.1基本原理
两阶段提交:
1. 执行 prepare 方法,锁定资源
2. 执行 Commit 或者 Rollback 方法,根据锁定资源的情况决定是提交事务还是回滚事务。
3.2常见问题
空回滚
空回滚就是 TCC 还没有执行 Prepare 方法,就已经执行了第二阶段的 Cancel 方法
幂等
幂等就是对于同一个分布式事务的同一个分支事务,重复去调用该分支事务的第二阶段接口,因此,要求 TCC 的二阶段 Confirm 和 Cancel 接口保证幂等,不会重复使用或者释放资源。
Seate分布式事务相关推荐
- 分布式事务与Seate框架:分布式事务理论
推荐阅读: 这套Github上40K+star学习笔记,可以帮你搞定95%以上的Java面试 毫不夸张的说,这份SpringBoot学习指南能解决你遇到的98%的问题 给跪了!这套万人期待的 SQL ...
- 分布式事务Seata原理
一.Seata 介绍: 1.Seata 简介: Seata 是一款开源的分布式事务解决方案,致力于提供高性能与简单易用的分布式事务服务,为用户提供了 AT.TCC.SAGA 和 XA 几种不同的事务模 ...
- 分布式事务seate-server的docker镜像的制作与部署
Seata 是一款开源的分布式事务解决方案,致力于提供高性能与简单易用的分布式事务服务,为用户提供了 AT.TCC.SAGA 和 XA 几种不同的事务模式.在 Seata 中主要有以下三种角色,其中 ...
- 「分布式专题」分布式事务 就这?太简单了吧
目录 基础概念 本地事务 分布式事务 基础理论 CAP理论 BASE理论 分布式事务解决方案 2PC TCC 可靠消息最终一致性 基础概念 本地事务 在计算机系统中,更多的是通过关系型数据库来控制事务 ...
- 分布式事务的五种解决方案
分布式事务的五种解决方案 分布式事务 微服务分布式服务问题 什么是分布是事务 分布式事务应用在哪些场景 分布式事务解决方案 1.基于XA协议的两阶段提交(2PC) 2.代码补偿事务(TCC) 3.本地 ...
- 还不会分布式事务,seata xa模式入门实战送上
文章目录 前言 一.什么是seata? 二.seata原理说明 1.角色说明 2.什么是 Seata 的事务模式? 三.SEATA 的分布式案例 1.业务逻辑说明 2.架构图 3.SEATA 的分布式 ...
- 关于分布式事务: 阿里开源的分布式事务框架 Seata 和 LCN的分析
之前使用过LCN分布式事务, 最近看到面试者简历中另一种方案 Seata, 通过它来在实战中解决分布式事务的问题.故 去简单了解了一下Seata是什么, 和LCN的区别在哪里, 如果是你 你怎么选择解 ...
- 分布式事务理论基础之初识Seata
分布式事务理论基础 CAP定理: Consistency(一致性):用户在访问分布式系统中的任意节点,得到的数据必须一致 Availablity(可用性):用户访问集群中的任意健康节点,必须能得到响应 ...
- rabbitmq 查询版本_基于rabbitmq解决分布式事务
分布式事务要解决的问题是保证二个数据库数据的一致性,本地事务ACID属于刚性事务,基于CAP理论,分布式事务的核心要点柔性事务,最终一致性. 基于rabbitmq解决分布式事务要点如下 生产者采用发送 ...
最新文章
- Python:处理一些格式规范的文字
- 零基础该如何学习Web前端知识?
- RDKit:计算不同分子或构象之间的RMSD
- stm32如何执行软复位_常见的单片机复位方式及其原理分析
- SpringCloud Feign注解导入失败
- 此处不允许使用分组函数_Excel中使用Vlookup函数实现数据分组
- c语言字符数组不写,C语言数组
- 字节跳动想取消大下周,遭到部分员工激烈反对
- 列车时刻管理c语言程序设计,列车时刻表信息管理系统实践报告C语言源代码
- 学了python能干啥举例-学了Python可以做哪些有趣的东西
- 空调微型计算机控制,空调自动控制
- 妙招防止非法入侵Win2000/XP系统(转)
- 航空公司客户价值数据的分析
- C#合并Excel单元格
- StringUtils的使用
- form-login属性详解
- 初识sscanf_s
- bp神经网络时间序列预测,bp神经网络数据预处理
- 西元发布智能管理系统工程技术实训室解决方案
- 一把王者的时间带你拿捏计算机原码、反码、补码的计算原理