分布式事务Seata组件的基本介绍

Seata是一个开源工具,提供高效分布式事务服务,包括TransactionCoordinator、TM和RM三个核心组件。文章详细介绍了AT、TCC、Saga和XA四种事务模式,分别基于不同的原理、适用场景和优势。
摘要由CSDN通过智能技术生成

       Seata是一个开源的分布式事务解决方案,旨在为微服务架构提供高效且可靠的分布式事务服务。Seata通过确保分布式事务的一致性,帮助开发者解决在微服务架构下的跨服务数据一致性问题。


Seata的3个核心组件

        1.TC(Transaction Coordinator):

        事务协调器,维护全局和分支事务的状态,协调全局事务提交或回滚 ,直接调度事务参与者RM。负责将RM的反馈结果响应给TM,并听从TM的最终决议,将具体决议(提交或回滚)发送给RM执行。相当于中间人,主要负责维护全局事务和分支事务的状态。


        2. TM(Transaction Manager):

        事务管理器,定义全局事务的范围、开始全局事务、提交或回滚全局事务。 它是事务的发起者(具体的微服务)。根据RM第一阶段的执行结果,进行决议。并将决议反馈给TC。


       3.  RM(Resource Manager):

        资源管理器,管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。 其实就是事务的参与者。获取TC的执行命令具去执行分支事务的第一阶段以及第二阶段,并将执行结果反馈给TC。
三个组件相互协作,期中TC以Seata服务器(Server)形式独立部署(Seata Server的安装运行后续介绍),TM和RM则是以 Seata Client 的形式集成在微服务中运行。 

        


Seata的4种事务模式


    1. **AT 模式(Automatic Transaction Mode)**


   - **主要原理**:基于二阶段提交协议(2PC)的变种,通过记录数据的全局锁、前镜像和后镜像来实现分布式事务。第一阶段是本地事务的执行和准备提交,记录数据快照;第二阶段是根据一阶段的结果来决定是提交还是回滚。AT模式避免了全局锁和阻塞的问题,从而提高了系统的并发性能。在AT模式中,参与者的本地事务执行成功后即可提交,而不需要等待其他参与者的状态。AT模式需要配合数据库的undo_log数据表一起实现。
   - **适用场景**:适用于对数据一致性要求较高,且业务操作可以容忍一定延迟的场景。
   - **主要区别**:实现复杂度相对较低,性能优于XA模式,主要用于替代XA模式的场景。
   - **代码实现**:
    添加配置seata:data-source-proxy-mode: AT
    在需要分布式事务的业务代码上添加注解@GlobalTransactional

    2. **TCC 模式(Try-Confirm-Cancel)**


   - **主要原理**:基于补偿事务的思想,分为三个操作阶段:尝试(Try)、确认(Confirm)、取消(Cancel)。每个业务操作都需要实现这三个操作,以确保分布式事务的最终一致性。
   - **适用场景**:适用于业务逻辑较为复杂,要求较高的业务处理流程。需要开发者针对每个业务操作,明确实现Try、Confirm和Cancel三个方法;还需要需要考虑Confirm和Cancel的失败情况下做好幂等处理。
   - **主要区别**:相较于AT模式,TCC模式对业务侵入性更高,需要开发者明确定义补偿逻辑,但它提供了更高的灵活性和性能。

    3. **Saga 模式**


   - **主要原理**:通过长事务来维护各个微服务之间的数据一致性。Saga 分为多个子事务,每个子事务执行完成后都会发布事件,触发下一个子事务,如果某个子事务失败,则执行补偿操作以回滚之前的操作。 Saga模式的执行过程如下:
    执行正向操作:按照事务的逻辑顺序,依次执行正向操作。每个正向操作都会记录事务的执行状态。
    如果所有的正向操作都成功执行,则事务提交完成。
    如果某个正向操作失败,将会触发相应的补偿操作。补偿操作会撤销或修复正向操作的影响。
    执行补偿操作:按照逆序依次执行已经触发的补偿操作。补偿操作应该具备幂等性,以便可以多次执行而不会造成副作用。
    如果所有的补偿操作都成功执行,则事务回滚完成。
    如果补偿操作也失败,需要人工介入或其他手段来解决事务的一致性问题。
   - **适用场景**:适用于长事务场景,特别是那些无法使用TCC或AT模式的场景。
   - **主要区别**:Saga模式通过定义一系列的本地事务和补偿操作来保证整体事务的一致性,适合于长事务处理。与TCC相比,Saga模式可能会有更长的事务持续时间,但对业务的侵入性较小。

    4. **XA 模式**


   - **主要原理**:基于XA接口的分布式事务实现,遵循两阶段提交协议。XA模式通过资源管理器(RM)、事务管理器(TM)和应用程序(AP)三者的协作,完成分布式事务的管理。从编程模型上,XA 模式与 AT 模式保持完全一致。只需要修改数据源代理,即可实现 XA 模式与 AT 模式之间的切换。
   - **适用场景**:适用于需要严格遵守ACID原则的分布式事务管理场景。
   - **主要区别**:XA是一种较为传统的解决方案,支持严格的ACID事务,但性能较低,资源消耗较大。
   - **代码实现**:
    添加配置seata:data-source-proxy-mode: XA
    在需要分布式事务的业务代码上添加注解@GlobalTransactional

福利来了,京东618无门槛红包,速抢,亲测可用!!!​​​​​​​

京东618狂欢红包,无门槛,速抢!!!icon-default.png?t=N7T8https://u.jd.com/kbEMRtj​​​​​​​

  • 37
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Seata是一款开源的分布式事务解决方案,它支持多种分布式场景,如微服务架构、云原生架构等。Seata的工作原理可以分为三个方面:全局事务协调器、本地事务处理器和存储模块。 1. 全局事务协调器 Seata中的全局事务协调器(Global Transaction Coordinator,GTC)是Seata框架的核心组件。它负责全局事务的管理和协调,并且能够保证全局事务的ACID特性。 在分布式事务中,全局事务协调器起到了非常重要的作用,它能够协调多个分支事务的执行,并根据分支事务的执行结果来判断全局事务是否提交或回滚。 2. 本地事务处理器 Seata中的本地事务处理器(Local Transaction Manager,LTM)是分支事务的管理组件。它负责对本地事务进行管理和协调,并且能够与全局事务协调器进行通信,以便于全局事务协调器能够对分支事务进行管理和控制。 在分布式事务中,本地事务处理器与全局事务协调器配合使用,能够保证分支事务的ACID特性,并且能够根据全局事务协调器的指示,对分支事务进行提交或回滚操作。 3. 存储模块 Seata中的存储模块(Store)是一个可插拔的组件,用于管理Seata框架中的全局事务信息和分支事务信息。它能够将事务信息存储到数据库或者其它存储介质中,并且能够提供查询和管理接口。 在分布式事务中,存储模块起到了非常重要的作用,它能够记录全局事务和分支事务的执行情况,并且在需要时,能够根据全局事务协调器的要求,对事务信息进行查询和管理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

u010303355

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值