【微服务】8、分布式事务 ( XA 和 AT )

文章目录

  • 利用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模式)

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

相关推荐
未命名冀5 小时前
微服务面试相关
java·微服务·面试
今天还没学习6 小时前
LabVIEW之树形控件
架构·labview·高级控件
zpf_叶绿体学编程6 小时前
Kafka-go语言一命速通
分布式·kafka
java1234_小锋7 小时前
什么是Kafka?有什么主要用途?
分布式·kafka
好像是个likun8 小时前
Nacos注册中心微服务注册
java·运维·微服务
Akamai中国8 小时前
大语言模型兵马未动,数据准备粮草先行
人工智能·语言模型·自然语言处理·云原生·架构·云计算·云平台
Schuyler_yuan10 小时前
消息队列架构、选型、专有名词解释
架构
你的码,就是我的码11 小时前
web服务器架构,websocket
服务器·前端·架构
PzZzang212 小时前
filebeat、kafka
分布式·kafka