Seata

月伴飞鱼 2024-06-23 15:20:26
框架相关
支付宝打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者!

Seata是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。

  • Seata提供了AT、TCC、SAGA和XA事务模式。

其内部有关于分布式事务的定义如下:

分布式事务是由多个分支事务组成的全局事务,其中每个分支事务都是本地事务的形式。

全局事务

Seata框架包含三部分内容:

事务协调器(Transaction Coordinator,TC):

  • 维护全局事务和分支事务的状态,进行全局事务提交或全局事务回滚。

事务管理器(Transaction Manager,TM):

  • 定义全局事务,开启全局事务、提交全局事务或回滚全局事务。

资源管理器(Resource Manager,RM):

  • 管理分支事务中的资源,向事务管理器注册分支事务和并报告分支事务的状态,负责分支事务提交或回滚。

Seata框架

一个典型的Seata分布式事务的流程如下:

TM向TC发出开启全局事务请求,TC生成全局事务的唯一标识XID,设此处的全局事务为T1。

在全局事务T1的各个流程中,XID会作为事务的标识在微服务之间流转。

RM向TC注册本地事务,注册的本地事务的会作为全局事务T1的分支事务。

TM可以请求TC控制全局事务T1提交或全局事务T1回滚。

TC可以请求全局事务T1下的所有分支事务提交或回滚。

Seata流程

引入Seata:

在分布式事务最外层的方法上添加分布式事务注解@GlobalTransactional

添加注解之后,在执行业务逻辑之前,Seata会先生成全局事务ID,并且在调用其它服务时,会在请求中携带全局事务ID。

如果其它微服务也添加了Seata依赖,这些微服务会获取全局事务ID,并且参与到全局事务中。

@GlobalTransactional
public void purchase(String userId, String commodityCode, int orderCount) {
    // ......
}
支付宝打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者!