Seata 分布式事务原理详解(图文全面总结)

关注△mikechen△十余年BAT架构经验倾囊相授!

Seata 分布式事务原理详解(图文全面总结)

分布式是大型架构的基石,下面我重点详解Seata 分布式事务@mikechen

文章来源:mikechen.cc

Seata

Seata 是阿里巴巴开源的分布式事务框架,核心目标是以最小侵入性保障分布式业务的一致性。

它提供事务协调器(TC)、事务管理(Global/Branch)和多种事务模式(AT、TCC、Saga 等)。

Seata 分布式事务原理详解(图文全面总结)

既支持数据库层面自动补偿,也支持程序级补偿机制。

Seata 强调性能与可扩展性,适用于电商、金融等对数据一致性要求较高的场景。

分布式事务

分布式事务,指在多个独立的资源管理器(例如不同服务或数据库)之间。

保证原子性、一致性、隔离性和持久性(ACID)的操作集合。

挑战主要来自网络延迟、部分故障、服务自治和多种数据存储。

为应对这些挑战,业界出现了两类常用思路:强一致性(如分布式两阶段提交)与最终一致性(补偿或补偿式编排)。

Seata 集成了若干实际可用模式以平衡一致性、性能与可用性。

Seata分布式事务原理

Seata 架构,如下图所示:

Seata 分布式事务原理详解(图文全面总结)

Transaction Coordinator(TC)

事务协调器,负责事务状态管理、全局事务的创建与最终决议。

Transaction Manager(TM)

发起全局事务的人或模块,负责开启/提交/回滚全局事务。

Resource Manager(RM)

各业务资源侧(一般为微服务或数据库)的分支事务管理器,负责注册分支事务并执行本地操作与回滚/补偿准备。

Seata工作流程

Seata 工作流程,如下所示:

Seata 分布式事务原理详解(图文全面总结)

┌───────────────────────────────┐│           TC (协调者)│└──────────────▲────────────────┘│┌─────────────────┼───────────────────┐│││┌────┴────┐┌────┴────┐┌────┴────┐│   TM     ││   RM     ││   RM     ││(事务管理)││(资源管理)││(资源管理)│└────┬────┘└────┬────┘└────┬────┘││││----开启事务---->│││<---注册分支----│││------提交/回滚命令------------->│

工作流程概述:

  1. TM 向 TC 申请开启全局事务;
  2. 各个 RM 注册分支事务;
  3. TM 发起提交或回滚;
  4. TC 协调各 RM 执行;
  5. 确保所有分支事务保持一致。

Seata事务模式

事务模式:AT、TCC、Saga 等。

Seata 分布式事务原理详解(图文全面总结)

AT(Automatic Transaction,基于行级锁与 undo/redo 日志)

特点:对应用侵入性最小,基于数据库的 undo/redo 日志自动回滚或补偿,适用于关系型数据库场景。

优点:实现透明,性能较好,易于迁移已有应用。

局限:依赖数据库特性,不适用于非关系型存储或存在长事务场景。

TCC(Try-Confirm-Cancel)

特点:显式的三段式接口:Try(资源预留)、Confirm(确认提交)、Cancel(撤销释放)。由业务方实现幂等与补偿逻辑。

优点:对业务行为更可控,适合需要显式预留和释放资源的场景。

局限:开发工作量较大,需要实现三套接口与幂等性保证。

Saga(补偿式长事务编排)

特点:将一个全局事务拆成一系列局部事务,若某步失败则按逆序调用补偿事务以消除已生效的步骤。

优点:适合长事务、跨多个服务与异步场景,可实现最终一致性。

局限:补偿逻辑复杂,事务隔离性较弱,需要业务设计支持可补偿操作。

Seata 在设计上支持多种模式以满足不同业务与技术栈需求。

文章来源:mikechen.cc

© 版权声明

相关文章

暂无评论

none
暂无评论...