Seata分布式事务详解(看这篇就够了)

微服务是大型架构的核心,下面我重点详解Seata分布式事务@mikechen

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 在设计上支持多种模式以满足不同业务与技术栈需求。

AT 适用于大多数关系型数据库场景,TCC 与 Saga 更适合复杂业务或非关系型资源。

陈睿mikechen

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

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

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

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