文章目录
- 利用Seata解决分布式事务问题(XA模式)
- AT模式
-
-
- [1. AT模式原理引入](#1. AT模式原理引入)
- [2. AT模式执行流程与XA模式对比](#2. AT模式执行流程与XA模式对比)
- [3. AT模式性能优势及潜在问题](#3. AT模式性能优势及潜在问题)
- [4. AT模式数据一致性解决方案](#4. AT模式数据一致性解决方案)
- [5. AT模式一阶段操作总结](#5. AT模式一阶段操作总结)
- [6. AT模式二阶段操作分析](#6. AT模式二阶段操作分析)
- [7. AT模式整体特点](#7. AT模式整体特点)
- [8. AT模式与XA模式对比](#8. AT模式与XA模式对比)
- [9. 业务选择模式的依据](#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配置并标记事务入口,重启相关服务。
- 准备测试数据(如清空购物车、设置商品库存、清空订单等),登录后添加商品到购物车并下单,修改商品库存使下单时库存不足。
- 执行下单操作,查看日志和数据库验证。下单失败后,日志显示分支事务二阶段执行回滚,数据库数据证明回滚成功,分布式事务问题解决。
- 测试过程
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模式,但需牺牲性能。