Seata是一个易于使用和高性能的分布式事务解决方案

Seata:简单可扩展的自治事务架构


什么是 Seata?

一个高性能、易用的分布式事务解决方案,适用于微服务架构。

微服务中的分布式事务问题

假设一个传统的单体应用。它的业务由三个模块组成,它们使用同一个本地数据源。

当然,本地事务可以保证数据的一致性。

单体应用

微服务架构已经发生了变化。上面提到的三个模块被设计为基于三个不同数据源的三个服务(模式:每个服务一个数据库)。每个服务内部的数据一致性由本地事务自然保证。

但是整个业务逻辑范围呢?

微服务问题

Seata 是如何做的?

Seata 正是针对上述问题提出的解决方案。

模型

首先,如何定义分布式事务

我们说,分布式事务是由一批分支事务组成的全局事务,而通常情况下,分支事务就是本地事务

全局事务和分支事务

Seata Framework 中有三个角色:

  • 事务协调器 (TC):维护全局事务和分支事务的状态,并驱动全局事务的提交或回滚。
  • 事务管理器 (TM):定义全局事务的范围:启动全局事务、提交或回滚全局事务。
  • 资源管理器 (RM):管理分支事务处理的资源,与 TC 交互以注册分支事务并报告分支事务的状态,并驱动分支事务的提交或回滚。
Seata 解决方案

Seata 管理的分布式事务的典型生命周期:

  1. TM 请求 TC 开始一个新的全局事务。TC 生成一个代表该全局事务的 XID。
  2. XID 通过微服务的调用链进行传播。
  3. RM 将本地事务作为 XID 对应全局事务的分支注册到 TC。
  4. TM 请求 TC 提交或回滚 XID 对应的全局事务。
  5. TC 驱动 XID 对应全局事务下的所有分支事务,完成分支提交或回滚。
典型流程

更多原理和设计细节,请访问 Seata wiki 页面

历史

阿里巴巴
  • TXC:淘宝事务构建器。阿里巴巴中间件团队自 2014 年起启动该项目,旨在解决应用程序架构从单体架构向微服务架构转变过程中出现的分布式事务问题。
  • GTS:全局事务服务。TXC 作为阿里云中间件产品,于 2016 年以 GTS 的名称正式发布。
  • Fescar:我们自 2019 年起基于 TXC/GTS 开源项目 Fescar,以便未来与社区紧密合作。
蚂蚁金服
  • XTS:扩展事务服务。蚂蚁金服中间件团队自 2007 年起开发了分布式事务中间件,该中间件在蚂蚁金服得到广泛应用,解决了跨数据库和服务的数据一致性问题。

  • DTX:扩展分布式事务服务。自 2013 年起,XTS 以 DTX 的名称在蚂蚁金服云上正式发布。

Seata 社区
  • Seata:简单可扩展自治事务架构。蚂蚁金服加入 Fescar,使其成为一个更加中立和开放的分布式事务社区,Fescar 也将更名为 Seata。

Maven 依赖

根据场景,选择以下两个依赖项之一:org.apache.seata:seata-allorg.apache.seata:seata-spring-boot-starter

xml 复制代码
<properties>
  <seata.version>2.5.0</seata.version>
</properties>

<dependencies>
<!--dependencies for non-SpringBoot application framework-->
  <dependency>
    <groupId>org.apache.seata</groupId>
    <artifactId>seata-all</artifactId>
    <version>${seata.version}</version>
  </dependency>

<!--If your project base on `Spring Boot`, you can directly use the following dependencies-->
<!--Notice: `seata-spring-boot-starter` has already included `seata-all` dependency-->
  <dependency>
    <groupId>org.apache.seata</groupId>
    <artifactId>seata-spring-boot-starter</artifactId>
    <version>${seata.version}</version>
  </dependency>
</dependencies>

快速入门

快速入门

文档

您可以在 Seata 官方网站查看完整文档:Seata 网站页面

Seta 生态系统

许可证

Seata 采用 Apache 2.0 许可证。详情请参阅 LICENSE 文件。

关于项目

Seata 是一个易于使用、高性能、开源的分布式事务解决方案。适用于微服务架构的高性能、易用的分布式事务解决方案。
Apache-2.0
Java
25,882
8880
832
2018-12-28
2025-11-26

增长趋势 - stars