当前位置:   article > 正文

Seata 入门知识

Seata 入门知识

目录

概述

工作流程

工作模式

AT模式

TCC模式


概述

     Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。 AT模式是阿里首推的模式 ,阿里云上有商用版本的GTS(Global Transaction Service 全局事务服务),相关文档资料参考: Seata 是什么? | Apache Seata

Demo

   这里附上seata的学习代码demo,开箱即用。包含AT/TCC/XA等模式的使用案例https://download.csdn.net/download/lmj3732018/88864802

工作流程

在 Seata 的架构中,一共有三个角色:
TM :事务管理器,全称为 Transaction Manager,实际上指全局事务的发起者,定义全局事务的范围:开始全局事务、提交或回滚全局事务。

RM :资源管理器 全称为 Resource Manager,实际上一个全局事务中的各个本地事务,管理分支事务处理的资源,与TC交互以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。

TC :事务协调者 ,全称为 Transaction Coordinator,实际上指Seata服务器,维护全局和分支事务的状态,驱动全局事务提交或回滚。
工作流程图如下:

 如上图所示,在 Seata 中,TC 为单独部署的 Server 服务端,TM 和 RM 为嵌入到应用中的 Client 客户端。 一个分布式事务的生命周期如下:

  1. TM 请求 TC 开启一个全局事务。TC 会生成一个 XID 作为该全局事务的编号。XID会在微服务的调用链路中传播,保证将多个微服务的子事务关联在一起。
  2. RM 请求 TC 将本地事务注册为全局事务的分支事务,通过全局事务的 XID 进行关联。
  3. TM 请求 TC 告诉 XID 对应的全局事务是进行提交还是回滚。
  4. TC 驱动 RM 们将 XID 对应的自己的本地事务进行提交还是回滚。

工作模式

AT模式

Seata AT模式的设计思路
       Seata AT模式的核心是对业务无侵入,是一种改进后的两阶段提交。它本身依赖于数据库的事务实现,它也是 Seata 默认的工作模式。它的本质是在本地事务分支提交的同时,用一张数据库表记录对应的undo日志记录(此undo日志非mysql的undo日志)。在回滚阶段采用这条回滚日志记录进行反向补偿。
      其设计思路如下:
一阶段: 先要在各个本地事务相关的数据库中分别创建一张相同的undo日志记录表。在本地事务提交的同时记录本地事务操作对应的undo日志记录,同时还要释放本地锁和连接资源。
二阶段:事务协调者在通知各个资源管理器做相应的事务处理,具体表现为:如果事务是提交,则删除对应的undo记录即可。如果是回滚,则根据undo记录做相应的反向补偿操作。这个过程是异步进行的,效率较高。

TCC模式

      TCC 也是基于二阶段提交事务的实现,它的全称为 Try-Confirm-Cancel,即资源预留 (Try)、确认操作(Confirm)、取消操作(Cancel),他们的具体含义如下:

  1. Try:对业务资源的检查并预留;
  2. Confirm:对业务处理进行提交,即 commit 操作,只要 Try 成功,那么该步骤一定成功;
  3. Cancel:对业务处理进行取消,即回滚操作,该步骤回对 Try 预留的资源进行释放。

      TCC 是一种侵入式的分布式事务解决方案,以上三个操作都需要业务系统自行实现,对业务系统有着非常大的入侵性,设计相对复杂,但优点是 TCC 完全不依赖数据库,能够实现跨数据库、跨应用资源管理,对这些不同数据访问通过侵入式的编码方式实现一个原子操作,更好地解决了在各种复杂业务场景下的分布式事务问题。它的特点即:复杂而灵活。

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号