Seata最全详解(图文全面总结)

Seata最全详解(图文全面总结)

Seata分布式事务是SpringCloudAlibaba的核心组件,也是构建分布式的基石,下面我就全面来详解Seata@mikechen

Seata

Seata  是一款开源的分布式事务解决方案,是阿里开发的,致力于在微服务架构下,提供高性能、和易用的分布式事务服务。

Seata主要解决分布式系统中的分布式事务问题,比如:

  1. 全局事务管理:通过全局事务协调器 (TC) ,管理全局事务的生命周期;
  2. 分支事务管理:协调、和管理每个参与全局事务的分支事务;
  3. 高效的事务处理:以及提供了 TCC (Try-Confirm-Cancel)、AT (Automatic Transaction)、Saga 等多种事务模式。

通过统一的分布式事务框架,开发人员可以专注于业务逻辑,而不必担心分布式事务的复杂性。

 

Seata原理

Seata 由三个主要组件组成,分别是:TC、TM、以及RM。

如下图所示:

Seata最全详解(图文全面总结)

事务协调器 (Transaction Coordinator, TC)

负责维护全局事务的状态,协调和驱动全局事务的提交或回滚。

管理全局事务的生命周期。

事务管理器 (Transaction Manager, TM)

负责定义全局事务的范围,开启全局事务,并最终触发全局事务的提交或回滚。

TM 通常集成在应用的业务代码中,标记全局事务的边界。

资源管理器 (Resource Manager, RM)

负责管理分支事务(本地事务),并向 TC 注册分支事务。

在 TC 发出全局事务的提交或回滚指令时,执行相应的操作。

RM 通常集成在数据库、消息队列等资源中,管理对这些资源的操作。

Seata 的分布式事务原理,它的核心流程,如下图所示:

Seata最全详解(图文全面总结)

主要包含,以下流程:

1:事务开始

TM 向 TC 发起全局事务开始请求,TC 创建全局事务并生成唯一的全局事务 ID(XID)。

2:分支注册

业务逻辑中,每个需要参与全局事务的操作都会向 RM 注册分支事务,RM 将分支事务注册到 TC,关联到全局事务 ID(XID)。

3:业务执行

各个分支事务执行各自的本地事务操作,这些操作暂时未提交。

4:事务提交

当所有分支事务成功执行后,TM 向 TC 发起全局提交请求。

TC 通知所有 RM 提交分支事务,RM 提交本地事务并反馈给 TC,最终 TC 将全局事务状态更新为提交。

5:事务回滚

如果任意分支事务执行失败,TM 向 TC 发起全局回滚请求。

总之,Seata 是一种强大而灵活的分布式事务解决方案,能够帮助开发者在复杂的分布式环境中,保持数据的一致性、和完整性。

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧