Seata分布式事务是SpringCloudAlibaba的核心组件,也是构建分布式的基石,下面我就全面来详解Seata@mikechen
Seata定义
Seata是一款分布式事务解决方案,是阿里巴巴开发的,是SpringCloudAlibaba的核心组件,用于解决分布式事务的一致性问题。
Seata作用
Seata的主要作用是:解决分布式系统中的分布式事务问题。
在传统的单体应用中,数据库事务能够,保证数据的一致性。
但在分布式系统中,因为数据分布在不同的服务中,跨服务的事务操作会涉及到多个数据库,这就需要一种机制来保证分布式环境下的事务一致性。
所以,需要分布式解决方案,Seata提供了分布式事务的协调和管理,确保各个分布式服务在事务操作中的一致性。
Seata原理
Seata事务管理中,有三个重要的组件角色,分别是:TM、RM、TC三大组件。
TC负责:全局事务的协调和管理,TM负责:控制全局事务的生命周期,RM负责:管理分支事务的执行和状态,三者共同保证分布式事务的一致性。
整体架构,如下图所示:
1、TC (Transaction Coordinator) – 事务协调器
- TC是Seata中的核心组件之一,负责协调、和管理全局事务;
- TC负责全局事务的创建、提交和回滚,以及对分支事务的状态管理;
- TC通常部署在Seata的服务器端,与客户端的应用服务进行通信,协调全局事务的执行。
2、TM (Transaction Manager) – 事务管理器
- TM是Seata中的核心组件之一,负责管理、和控制全局事务的生命周期。
- TM与TC(事务协调器)协同工作,负责向TC(事务协调器)发起全局事务的开始、提交和回滚请求,并根据TC(事务协调器)的响应进行相应的处理。
3、RM (Resource Manager) – 资源管理器
- RM是Seata中的核心组件,负责:管理分支事务的执行、和状态。
- RM负责向TC注册分支事务,并在全局事务的提交、或回滚时执行相应的本地事务操作。
- RM代表了各个参与者(如:数据库、消息队列……等),负责管理它们的本地事务。
通过TM、RM和TC之间的协调和通信,Seata实现了分布式事务的一致性和可靠性。
Seata工作流程
Seata工作流程,如下图所示:
Seata的分布式事务流程大致如下:
- 应用服务向TM发起全局事务请求;
- TM生成全局事务ID,并向TC发起全局事务创建请求;
- TC创建全局事务,并通知各个RM注册分支事务;
- 应用服务执行本地事务,并将事务执行情况通知给TM;
- 在全局事务提交或回滚时,TM向TC发送相应的请求;
- TC接收到请求后,通知各个RM执行相应的操作;
- RM执行本地事务的提交或回滚操作;
- 当所有分支事务都提交或回滚完成后,全局事务结束。
这个流程涵盖了, Seata 分布式事务的主要步骤,通过全局事务管理器和资源管理器之间的协调,确保了各个分支事务的一致性、和全局事务的原子性。
mikechen睿哥
10年+大厂架构经验,就职于阿里、淘宝、百度等一线互联网大厂,拥有丰富的大型高并发实战经验。
关注「mikechen」公众号,获取更多架构干货!