微服务保护和分布式事务(5)

米饭9个月前行业资讯557

2.3 XA 模式:

Seata 支持四种不同的分布式事务解决方案:


XA

TCC

AT

SAGA

这里我们以XA模式和AT模式来给大家讲解其实现原理。


XA 规范是 X/Open 组织定义的分布式事务处理(DTP,Distributed Transaction Processing)标准,XA 规范描述了全局的TM与局部的RM之间的接口,几乎所有主流的数据库都对 XA 规范提供了支持。


2.3.1 两阶段提交:

正常情况:

image-20241121200527340

异常情况:

image-20241121200540213

一阶段:


事务协调者通知每个事务参与者执行本地事务。

本地事务执行完成后报告事务执行状态给事务协调者,此时事务不提交,继续持有数据库锁。

二阶段:


事务协调者基于一阶段的报告来判断下一步操作。

如果一阶段都成功,则通知所有事务参与者,提交事务。

如果一阶段任意一个参与者失败,则通知所有事务参与者回滚事务。

2.3.2 Seata 的 XA 模型:

Seata 对原始的 XA 模式做了简单的封装和改造,以适应自己的事务模型,基本架构如图:

image-20241121201038925

RM一阶段的工作:


注册分支事务到TC。

执行分支业务 sql 但不提交。

报告执行状态到TC。

RM二阶段的工作:


接收TC指令,提交或回滚事务。

2.3.3 优缺点:

XA模式的优点是什么?


事务的强一致性(只要事务不提交或回滚,会一直持有数据库锁),满足 ACID 原则。

常用数据库都支持,实现简单,并且没有代码侵入。

XA模式的缺点是什么?


因为一阶段需要锁定数据库资源,等待二阶段结束才释放,性能较差。

依赖关系型数据库实现事务。

2.3.4 实现步骤:

首先,我们要在配置文件中指定要采用的分布式事务模式。

seata:
  data-source-proxy-mode: XA


其次,我们要利用@GlobalTransactional标记分布式事务的入口方法(调用者):

image-20241121201937507

2.4 AT 模式:

AT模式同样是分阶段提交的事务模型,不过缺弥补了XA模型中资源锁定周期过长的缺陷。

2.4.1 Seata 的 AT 模式:

基本流程图:

image-20241121202304380

阶段一RM的工作:


注册分支事务。

记录 undo-log(数据快照)。

执行业务 sql 并提交。

报告事务状态。

阶段二提交时RM的工作:


删除 undo-log 即可。

阶段二回滚时RM的工作:


根据 undo-log 恢复数据到更新前。

2.4.2 AT 与 XA 的区别:

简述AT模式与XA模式最大的区别是什么?


XA模式一阶段不提交事务,锁定资源;AT模式一阶段直接提交,不锁定资源。

XA模式依赖数据库机制实现回滚;AT模式利用数据快照实现数据回滚。

XA模式强一致;AT模式最终一致。

可见,AT 模式使用起来更加简单,无业务侵入,性能更好。因此企业 90% 的分布式事务都可以用 AT 模式来解决。


参考文献:


黑马程序员


本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!  

云掣基于多年在运维领域的丰富时间经验,编写了《云运维服务白皮书》,欢迎大家互相交流学习:

《云运维服务白皮书》下载地址:https://fs80.cn/v2kbbq

想了解更多大数据运维托管服务、数据库运维托管服务、应用系统运维托管服务的的客户,欢迎点击云掣官网沟通咨询:https://yunche.pro/?t=shequ



相关文章

Docker容器——网络模式和Cgroup资源限制

Docker容器——网络模式和Cgroup资源限制

一、Docker网络(1)Docker网络实现原理Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容...

【Docker】深入了解 Docker:终极命令指南(上)

【Docker】深入了解 Docker:终极命令指南(上)

Docker 是现代开发中不可或缺的工具,能够简化应用程序的部署和管理。在本文中,我们将深入探讨 Docker 的核心命令,帮助您在日常工作中高效使用这一强大平台。1. 系统信息命令了解 D...

Docker 常用命令

Docker 常用命令

 一、Docker 基础命令1、启动 dockersystemctl start docker2、关闭 dockersystemctl stop docker3、重启 dockersyste...

如何重塑IT运维核心竞争力?可观测运维这么做!

如何重塑IT运维核心竞争力?可观测运维这么做!

随着云计算、大数据、人工智能等新兴技术的兴起及运用,无论是通讯、金融、教育,还是交通、政府、企业等行业,都得到飞速发展,但在高速发展的同时,各行业巨大的 IT 维护和管理成本也在与日俱增,存在监控工具...

网络】DNS协议、ICMP协议

网络】DNS协议、ICMP协议

1.DNS协议DNS(Domain Name System,域名系统)协议,是一个用来将域名转化为IP地址的应用层协议。1.1DNS背景TCP/IP中通过IP地址和端口号的方式,来确定网络中一个主机上...

【Docker 】深入探索 Docker :高阶操作与配置设置(下)

【Docker 】深入探索 Docker :高阶操作与配置设置(下)

四、容器的资源限制Docker 允许用户限制容器使用的系统资源,如 CPU 和内存,从而确保其他容器和主机的稳定性。4.1 限制 CPU 使用要限制容器使用的 CPU 核心,可以使用 --cpus 参...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。