Seata的工作模式

news/2025/3/19 15:05:19/文章来源:https://www.cnblogs.com/hj2542/p/18781082

Seata的分布式模型中各个角色的作用:

1.TM(事务管理器)

是分布式事务的发起方,负责定义全局事务的边界(开始,提交,回滚),并于TC交互协调事务状态。

核心职责:

​ 通过@GlobalTransctional注解标记全局事务的起点。

​ 向TC注册全局事务

​ 根据业务逻辑决定全局事务的提交或回滚

2.TC(事务协调器)

是Seata的核心组件,负责协调全局事务的提交或回滚,维护全局事务和分支事务的状态。

核心职责:

​ 接收TM的全局事务注册请求,生成全局唯一的XID。

​ 管理分支事务的注册和状态。

​ 驱动两阶段提交(1.分支事务提交预操作 2.全局提交或回滚)

关键特性:

​ TC是独立部署的服务,需高可用以保证事务一致性

3.RM(资源管理器)

RM管理本地资源(如数据库、消息队列),负责分支事务的执行和状态报告。

核心职责:

​ 向TC注册分子事务,绑定到全局事务XID。

​ 执行本地事务的提交或回滚操作。

​ 生成并管理undo_log数据,用于事务回滚时的数据恢复。

实现机制:

​ RM通过JDBC代理拦截SQL,生成前后镜像,记录到updo_log表。

4.undo_log表

用户实现Seata的AT模式,记录事务操作的前后镜像,支持事务回滚时的数据恢复。

工作流程:

​ 1.事务提交前: RM执行SQL时,生成前后镜像并写入undo_log表。

​ 2.事务回滚时:根据undo_log中的before image恢复数据,删除对应的undo_log记录。

​ 3.事务提交后: 异步清理已提交事务的undo_log记录。

1.AT模式

如图展示了AT模式的总体工作流程

1.由TM(事务管理器)开启全局事务至TC中,生成XID

2.将XID传递到RM中所有参与事务的服务

3.:RM向TC注册分支事务,并拦截本地资源操作并于XID关联

4.在RM执行操作前将数据备份至undo_log表中

5.RM执行操作,并向TC提交事务状态

6.由TM提醒TC事务结束

7.由TC检查所有分支的事务状态

8.若所有事务都成功,则删除快照(即删除undo_log表中的数据)

​ 反之则将undo_log表中的数据回滚,将数据变为执行操作前的状态,完成后删除undo_log表中的数据

2.XA模式

RM一阶段的工作:

  1. 注册分支事务到TC
  2. 执行分支业务sql但不提交
  3. 报告执行状态到TC

TC二阶段的工作:

  1. TC检测各分支事务执行状态
  2. 如果都成功,通知所有RM提交事务
  3. 如果有失败,通知所有RM回滚事务

3.TCC模式

TCC模式与AT模式非常相似,每阶段都是独立事务,不同的是TCC通过人工编码来实现数据恢复。需要实现三个方法:

  • Try:资源的检测和预留;
  • Confirm:完成资源操作业务;要求 Try 成功 Confirm 一定要能成功。
  • Cancel:预留资源释放,可以理解为try的反向操作。

4.Saga

  • 核心原理
    将长事务拆分为多个本地事务,通过 补偿操作 实现最终一致性。
  • 工作流程
    1. 按顺序执行多个本地事务。
    2. 若某个事务失败,依次触发已提交事务的补偿操作。
  • 特点
    • 无全局锁:适合长事务(如订单创建后异步通知物流)。
    • 异步补偿:通过状态机(State Machine)管理事务和补偿流程。
    • 适用场景:跨服务长流程(如订单创建 + 物流调度 + 支付)。

四种模式的对比

XID的解释

在 Seata 中,XID(全局事务 ID) 是分布式事务的唯一标识符,用于在分布式系统中追踪和协调一个全局事务的所有分支事务。

1. XID 的定义

  • 核心作用
    XID 是全局事务的唯一标识,贯穿整个分布式事务的生命周期,确保事务的原子性和一致性。
  • 生成者
    TC(Transaction Coordinator,事务协调器) 在 TM(事务管理器)发起全局事务时生成。

2. XID 的生命周期

全局事务启动

  • TM 调用 @GlobalTransactional 方法时,向 TC 发起“开启全局事务”请求。
  • TC 生成 XID 并返回给 TM。

分支事务注册

  • 当 RM(资源管理器)执行本地事务时,携带 XID 向 TC 注册分支事务(Branch Transaction)。

事务协调

  • TC 根据 XID 管理所有分支事务的状态(提交或回滚)。

事务结束

  • 全局事务提交或回滚后,TC 清理 XID 关联的所有分支事务信息。

3.XID的核心作用

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

dify升级

一、需求 从0.14.2升级到0.15.3,要求模型供应商,创建的应用数据等等,不能丢失。二、安装0.14.2 下载dify代码cd /optgit clone https://github.com/langgenius/dify.gitcd dify/切换到tag 0.14.2git checkout 0.14.2git pull origin 0.14.2运行difycd dockercp .env.example…

机器人弧焊电源气体省气装置的工作原理是什么?

焊接机器人节气装置,作为一种在焊接流程中至关重要的气体调控设备,其核心宗旨在于在确保焊接作业品质卓越的同时,通过高度精确的气体流量调控机制,有效缩减气体的消耗量,进而达成显著的节气效益。该装置详尽地集成了气体质量流量控制器、适配的电源适配器、精准的电流传感…

分享一次利用无问AI进行应急响应

前情摘要:最近勒索病毒真的太猖獗了,光一星期我就接连处理了两起。不过黑客的攻击方式都是大同小异,处理完报告之后,特来分享其中一起。各位可得小心小心在小心,千万不要中招,不然就只有重装的份了。 事件概述: 最近,某公司机房数据库中了勒索病毒,工作人员上班发现后…

广告子包边切割焊接工艺-代加工-外协加工-委外加工-激光代加工-河南郑州-芯晨微纳(河南)

一、普通焊接 普通焊接主要针对大型标识,如银行或家具城的大型广告字。这种焊接方式使用焊机进行,具体流程包括: (1)切割:根据所需的字体大小,使用不同的激光切割机进行切割处理。这一步不仅包括字面的切割,还包括围边的切割。 (2)焊接包边:在焊接过程中,需要非常精…

什么!你还不会写Vue组件,编写《功能级权限》匹配公式组件

说明该文章是属于OverallAuth2.0系列文章,每周更新一篇该系列文章(从0到1完成系统开发)。该系统文章,我会尽量说的非常详细,做到不管新手、老手都能看懂。说明:OverallAuth2.0 是一个简单、易懂、功能强大的权限+可视化流程管理系统。 友情提醒:本篇文章是属于系列文章,…

基于策略的强化学习

基于策略的强化学习 1. 策略函数近似(Policy Function Approximation) 策略函数 π(a∣s)策略函数是一个概率密度函数,它根据当前状态 s 输出在该状态下采取每个可能动作 a 的概率。 在有限的状态和动作空间中,可以直接学习这个函数。但在连续动作空间或状态空间非常大时,…

软考数据库工程师

软考数据库工程师 重点 事务调度 1. 串行调度 多个事务依次(顺序)串行执行,且只有当一个事务的所有操作都执行完成才执行另一个事务的所有操作 2. 可串行化调度:并发调度 多个事务并发执行是正确的。当且仅当其并发结果与某一次序串行地执行的结果相同 并发问题 1. 丢失修改…

为Gazebo中的iris无人机添加realsense D435i相机

本机环境和实现目标 本机的系统位ubuntu20.04,已安装有ros noetic和PX4_Firmware,能够在Gazebo的环境中进行无人机的仿真。因为后续需要用实验室搭载有realsense D435i相机的无人机进行集群跟踪与避障的实验,准备为Gazebo中的iris无人机搭载上D435i相机先进行仿真验证。 注意…

信创产业2025白皮书:国产替代率突破40%的7大征兆

开篇:一场静默的产业革命正在发生 2025年的春天,当全球科技巨头还在为量子计算和元宇宙布局时,中国信创产业已悄然完成蜕变。工信部最新数据显示,国产基础软硬件在重点行业渗透率突破40%大关,这场以"自主可控"为底色的技术革命,正通过七大显著征兆宣告着中国IT…

aaa1

Uniapp、uniappx笔记 App平台 云端打包 Uniappx原生SDK android studio原生工程配置https://doc.dcloud.net.cn/uni-app-x/native/use/android.html 配置uts插件 教程 https://doc.dcloud.net.cn/uni-app-x/native/use/androiduts.html uts插件资源位于unpackage/resource/app-…

wpa_supplicant/hostapd --- 控制接口库

官网: https://w1.fi/wpa_supplicant/只需要源码的这两个文件: