分布式事务管理之seata简介

目录

一、seata是什么

二、传统的分布式事务管理解决方案

1.两阶段提交方案/XA方案

2.TCC方案

三、seata解决方案

四、Seata有3个基本组件

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

六、快速开始


一、seata是什么

Seata 一个简单可扩展的自动事务管理框架,应用于微服务分布式架构,它在事务管理方面具有高性能和易用性的特点。

首先我们来看微服务中分布式事务的问题

让我们想象一个传统的单片应用架构,它的业务由三个模块组成,它们使用单个本地数据源。当然,本地事务将保证数据的一致性。

分布式事务管理之seata简介

然后,微服务体系结构发生了变化。上面提到的3个模块被设计为3个不同数据源之上的3个服务(模式:每个服务的数据库)。本地事务自然保证了每个服务中的数据一致性,但是如果是整体业务的事务如何保证呢?

分布式事务管理之seata简介

二、传统的分布式事务管理解决方案

1.两阶段提交方案/XA方案

两阶段提交:即有一个全局事务管理器,负责协调多个数据库(资源管理器)的事务,事务管理器先判断是否各个数据库都准备好了,如果每个数据库准备成功,那么就正式提交事务,在各个数据库上执行操作;如果任何其中一个数据库出现问题,那么就回滚事务。

2.TCC方案

TCC 的全称是:Try、Confirm、Cancel。

Try 阶段:对各个服务的资源做检测以及对资源进行锁定或者预留。

Confirm 阶段:各个服务中执行实际的业务数据操作。

Cancel 阶段:如果任何一个服务的业务方法执行出错,回滚补偿只想成功的数据。

三、seata解决方案

seata即是采用先提交再回滚的TCC方案。由于大多数情况下数据正确,数据报错的概率非常小,因此采用先提交再回滚数据的方式极大的提高了系统性能。

它采用了一批分支事务组成的全局事务管理器,组成它的每一个分支事务只是负责各自数据库的局部事务。

分布式事务管理之seata简介

四、Seata有3个基本组件

事务协调器(TC):维护全局和分支事务的状态,驱动全局提交或回滚。

事务管理器(TM):定义全局事务的范围:开始全局事务、提交或回滚全局事务。

资源管理器(RM):管理分支事务处理的资源,与TC互联以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。

分布式事务管理之seata简介 

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

TM要求TC开始新的全局事务。TC生成代表全局事务的XID。

XID通过微服务的调用链传播。

RM将本地事务注册为XID到TC的相应全局事务的分支。

TM请求TC提交或回滚XID的相应全局事务。

TC驱动XID对应全局事务下的所有分支事务,完成分支提交或回滚。

 

分布式事务管理之seata简介

六、快速开始

从官网上下载seata-samples所有例子代码,启动运行开始吧!

https://gitee.com/seata-io/seata-samples