当前位置: 首页 > article >正文

【微服务】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模式)

在这里插入图片描述

  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模式,但需牺牲性能。


http://www.kler.cn/a/473083.html

相关文章:

  • el-table表格合并某一列
  • ADO.NET知识总结3---SqlCommand命令对象
  • 网络安全-web应用程序发展历程(基础篇)
  • nginx 日志规范化意义及实现!
  • RK3562编译Android13 ROOT固件教程,触觉智能开发板演示
  • 年会抽奖Html
  • Perl语言的文件操作
  • DeviceNet转Profinet网关如何革新污水处理行业!
  • tomcat12启动流程源码分析
  • adb使用及常用命令
  • JavaEE之定时器及自我实现
  • 闲谭SpringBoot--ShardingSphere分库分表探究
  • spring mvc源码学习笔记之一
  • Java高频面试之SE-10
  • 单片机-外部中断
  • springboot 集成 etcd
  • YCM上告警项怎么修改
  • 【转载记录】Scikit-learn 报错:’super’ object has no attribute ‘__sklearn_tags__’.
  • Perl语言的语法糖
  • 【HTML+CSS+JS+VUE】web前端教程-2-HTML5介绍和基础骨架
  • 【2024华为OD-E卷-100分-boss的收入】(题目+思路+JavaC++Python解析)
  • 【并发篇】CompletableFuture学习
  • JavaScript 正则表达式
  • 代码随想录算法训练营第1天(数组1)| 704. 二分查找、27. 移除元素、977.有序数组的平方
  • 【数据库】SQL相关知识点总结1(数据库约束、三大范式、关系模型、聚合函数)
  • 为什么页面无法正确显示?都有哪些HTML和CSS相关问题?