【微服务】8、分布式事务 ( XA 和 AT )
文章目录
- 利用Seata解决分布式事务问题(XA模式)
- AT模式
- 1. AT模式原理引入
- 2. AT模式执行流程与XA模式对比
- 3. AT模式性能优势及潜在问题
- 4. AT模式数据一致性解决方案
- 5. AT模式一阶段操作总结
- 6. AT模式二阶段操作分析
- 7. AT模式整体特点
- 8. AT模式与XA模式对比
- 9. 业务选择模式的依据
利用Seata解决分布式事务问题(XA模式)

- XA模式原理
- 基于XA规范:XA规范是X/Open组织DTP标准中的一套规范,描述了全局事务管理器(TM)、局部资源管理器(RM)与事务协调者(TC)交互接口。
- 运行原理(两阶段提交)
- 一阶段:请求进入全局事务方法,TM向TC注册全局事务,然后执行内部业务逻辑调用微服务(分支事务)。分支事务的RM拦截数据库操作,先向TC注册分支事务,执行业务SQL但不提交,执行完报告状态。
- 二阶段:所有分支执行完,TM通知TC事务结束,TC检查分支事务状态,若都成功则通知分支提交,否则通知回滚,RM完成相应动作。
- XA模式优缺点
- 优点:解决分布式事务问题,确保全局事务ACID特性,实现简单,无代码侵入,常用关系数据库大多支持。
- 缺点:一阶段锁定数据库资源,等待二阶段释放,性能差影响其他事务;依赖关系数据库,若数据库不支持则无法使用。

-
XA模式使用方法及测试

- 测试过程
- 修改Seata配置并标记事务入口,重启相关服务。
- 准备测试数据(如清空购物车、设置商品库存、清空订单等),登录后添加商品到购物车并下单,修改商品库存使下单时库存不足。
- 执行下单操作,查看日志和数据库验证。下单失败后,日志显示分支事务二阶段执行回滚,数据库数据证明回滚成功,分布式事务问题解决。
- 测试过程
分布式事务 more…
AT模式
1. AT模式原理引入
- 背景与目的:AT模式旨在解决XA模式中资源锁定周期过长导致的性能问题,同时确保数据一致性。它是一种分阶段提交的事务模型,通过优化事务提交时机和引入快照机制来提升性能。
2. AT模式执行流程与XA模式对比
- 前期相同点:在全局事务启动时,TM向TC注册全局事务,全局事务方法执行时调用微服务,微服务内RM注册分支事务到TC,这部分流程与XA模式相同。
- 后期不同点:AT模式在执行完业务SQL后立即提交事务,释放资源,而XA模式需等待所有分支执行完后统一提交或回滚,导致资源锁定时间长,性能差。
AT模式在执行完业务SQL后立即提交事务

3. AT模式性能优势及潜在问题
- 性能提升:AT模式通过提前提交事务,避免了资源长时间锁定,提高了系统性能和资源利用率,各分支事务无需相互等待,可并发执行。
- 潜在问题:事务直接提交后,若后续出现问题,传统的数据库事务回滚机制无法使用,需要特殊机制保证数据一致性。
4. AT模式数据一致性解决方案
- 快照机制原理:在执行业务SQL前生成快照,保存数据库原始数据。若后续事务失败,可利用快照恢复数据,确保数据一致性。
- 事务提交与快照关系:先生成快照,再执行业务SQL并提交事务,最后报告事务状态给TC,一阶段结束。
在执行业务SQL前生成快照
5. AT模式一阶段操作总结
- 概述:注册分支事务、记录数据快照、执行业务SQL并提交事务、报告事务状态。与XA模式相比,AT模式在修改数据前生成快照且立即提交事务,提升性能。
6. AT模式二阶段操作分析
- 触发条件:所有分支执行完后,TM向TC报告事务结束,TC检查分支事务状态,进入二阶段。
- 成功情况处理:若所有分支成功,由于一阶段已提交,只需删除快照或undo log,数据已一致,操作简单快速,提升二阶段性能。
- 失败情况处理:若有分支失败,虽事务已提交,但可基于快照数据恢复,如将删除的购物车数据写回,保证最终事务一致性。
7. AT模式整体特点
- 性能优势:一阶段各自提交事务,不锁定资源,性能好。
- 数据一致性:可能出现短暂不一致,但通过二阶段快照恢复可达到最终一致。不一致状态持续时间短,故障概率低,多数互联网业务可接受。
8. AT模式与XA模式对比
- 资源锁定与性能:XA模式一阶段锁定资源,性能差;AT模式不锁定资源,性能好。
- 回滚方式:XA模式依赖数据库回滚事务;AT模式利用数据快照手动回滚。
- 一致性:XA模式是强一致事务;AT模式是最终一致事务,可能短暂不一致。
AT 可能短暂不一致
9. 业务选择模式的依据
- 性能与一致性权衡:
- 侧重性能且允许短暂不一致,选择AT模式,适用于多数互联网业务;
- 对一致性要求极高,选择XA模式,但需牺牲性能。
相关文章:
【微服务】8、分布式事务 ( XA 和 AT )
文章目录 利用Seata解决分布式事务问题(XA模式)AT模式1. AT模式原理引入2. AT模式执行流程与XA模式对比3. AT模式性能优势及潜在问题4. AT模式数据一致性解决方案5. AT模式一阶段操作总结6. AT模式二阶段操作分析7. AT模式整体特点8. AT模式与XA模式对比…...
CVE-2025-22777 (CVSS 9.8):WordPress | GiveWP 插件的严重漏洞
漏洞描述 GiveWP 插件中发现了一个严重漏洞,该插件是 WordPress 最广泛使用的在线捐赠和筹款工具之一。该漏洞的编号为 CVE-2025-22777,CVSS 评分为 9.8,表明其严重性。 GiveWP 插件拥有超过 100,000 个活跃安装,为全球无数捐赠平…...
TypeScript Jest 单元测试 搭建
NPM TypeScript 项目搭建 创建目录 mkdir mockprojectcd mockproject初始化NPM项目 npm init -y安装TypeScript npm i -D typescript使用VSCode 打开项目 创建TS配置文件tsconfig.json {"compilerOptions": {"target": "es5","module&…...
基于 SSH 的任务调度系统
文末附有完整项目代码 在当今科技飞速发展的时代,任务调度系统的重要性日益凸显。本文将详细介绍一个基于 SSH(SpringStruts2Hibernate)的任务调度系统的设计与实现。 一、系统概述 本系统旨在改变传统人工任务调度方式,通过计算…...
filestream安装使用全套+filebeat的模块用法
1 filestream介绍 官方宣布:输入类型为log在filebeat7.16版本已经弃用了 Filestream 是 Filebeat 中的一种 输入类型(Input),用于处理日志文件的读取。它是为了取代 Filebeat 中传统的 log 输入(Input)设…...
java项目之房屋租赁系统源码(springboot+mysql+vue)
项目简介 房屋租赁系统实现了以下功能: 房屋租赁系统的主要使用者分为: 系统管理:个人中心、房屋信息管理、预约看房管理、合同信息管理、房屋报修管理、维修处理管理、房屋评价管理等模块的查看及相应操作; 房屋信息管理&#…...
sap mm学习笔记
1. 业务流程 2. 组织架构 3. 物料主数据 4.采购主数据 5. 采购管理 6. 库存管理 7.物料主数据 8. 采购申请 ME51N...
代码随想录_链表
代码随想录02 链表 203.移除链表元素 力扣题目链接(opens new window) 题意:删除链表中等于给定值 val 的所有节点。 示例 1: 输入:head [1,2,6,3,4,5,6], val 6 输出:[1,2,3,4,5] 示例 2: 输入:he…...
EF Code 并发控制
【悲观控制】 不推荐用,EF Core 没有封装悲观并发控制的使用,需要使用原生Sql来使用悲观并发控制 一般使用行锁、表锁等排他锁对资源进行锁定,同时只有一个使用者操作被锁定的资源 拿sql server举例,可以使用表所、或者行所解决…...
ceph fs status 输出详解
ceph fs status 命令用于显示 Ceph 文件系统的状态信息,其中各列的含义如下: RANK:元数据服务器(MDS)的等级或标识符。 STATE:MDS 的当前状态,例如 active(活跃)、stan…...
FFmpeg Muxer HLS
使用FFmpeg命令来研究它对HLS协议的支持程度是最好的方法: ffmpeg -h muxerhls Muxer HLS Muxer hls [Apple HTTP Live Streaming]:Common extensions: m3u8.Default video codec: h264.Default audio codec: aac.Default subtitle codec: webvtt. 这里面告诉我…...
如何用SQL语句来查询表或索引的行存/列存存储方式|OceanBase 用户问题集锦
一、问题背景 自OceanBase 4.3.0版本起,支持了列存引擎,允许表和索引以行存、纯列存或行列冗余的形式创建,且这些存储方式可以自由组合。除了使用 show create table命令来查看表和索引的存储类型外,也有用户询问如何通过SQL语句…...
回归预测 | MATLAB实GRU多输入单输出回归预测
回归预测 | MATLAB实GRU多输入单输出回归预测 目录 回归预测 | MATLAB实GRU多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 回归预测 | MATLAB实GRU多输入单输出回归预测。使用GRU作为RNN的一种变体来处理时间序列数据。GRU相比传统的RNN有较好的记…...
【OpenGL/Assimp】渲染模型、半透明材质与封装光源
文章目录 渲染成果Assimp库准备:Mesh类修改:透明贴图使用:光源封装:使用方式在如下测试环境中: 渲染成果 Assimp库准备: 从GitHub拉取源码,根据网络教程,借助CMake生成VS工程项目&a…...
pandas与sql对应关系【帮助sql使用者快速上手pandas】
本页旨在提供一些如何使用pandas执行各种SQL操作的示例,来帮助SQL使用者快速上手使用pandas。 目录 SQL语法一、选择SELECT1、选择2、添加计算列 二、连接JOIN ON1、内连接2、左外连接3、右外连接4、全外连接 三、过滤WHERE1、AND2、OR3、IS NULL4、IS NOT NULL5、B…...
Linux WEB漏洞
定义:Linux Web 漏洞是指在基于 Linux 操作系统的 Web 应用程序、Web 服务器软件或者相关的网络服务配置中存在的安全弱点。这些漏洞可能导致攻击者未经授权访问敏感信息、篡改网页内容、执行恶意代码,甚至完全控制服务器。 常见类型及原理 SQL 注入漏…...
音视频入门基础:RTP专题(2)——使用FFmpeg命令生成RTP流
通过FFmpeg命令可以将一个媒体文件转推RTP: ffmpeg -re -stream_loop -1 -i input.mp4 -c:v copy -an -f rtp rtp://192.168.0.102:5400 但是通过ffplay尝试播放上述产生的RTP流时会报错:“Unable to receive RTP payload type 96 without an SDP file …...
大语言模型预训练、微调、RLHF
转发,如有侵权,请联系删除: 1.【LLM】3:从零开始训练大语言模型(预训练、微调、RLHF) 2.老婆饼里没有老婆,RLHF里也没有真正的RL 3.【大模型微调】一文掌握7种大模型微调的方法 4.基于 Qwen2.…...
vue3后台系统动态路由实现
动态路由的流程:用户登录之后拿到用户信息和token,再去请求后端给的动态路由表,前端处理路由格式为vue路由格式。 1)拿到用户信息里面的角色之后再去请求路由表,返回的路由为tree格式 后端返回路由如下: …...
解决idea中无法拖动tab标签页的问题
1、按 Ctrl Alt S 打开设置,找到路径 File | Settings | Appearance & Behavior | Appearance 2、去掉勾选 Drag-and-drop with Alt pressed only 即可...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信
文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...
在树莓派上添加音频输入设备的几种方法
在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...
