返回
Seata源码(一)概览:架构与核心组件
后端
2023-12-25 20:19:30
在分布式事务领域,Seata作为一款备受推崇的中间件,其源码设计精妙,架构清晰。本文将带你深入Seata源码(版本:1.5.0),揭秘其架构之美与核心组件之精髓。
Seata采用二阶段提交(2PC) 的ACID 事务模型,即AT模式 。该模式下,事务分为两阶段:
- Prepare阶段: 参与者准备提交,向协调者发送准备命令。
- Commit/Rollback阶段: 协调者收集所有参与者的状态,决定并通知所有参与者提交或回滚。
Seata主要由三个核心组件组成:
- Transaction Coordinator (TC): 负责协调全局事务,被称为TC。它负责事务的开始、提交和回滚。
- Transaction Manager (TM): 作为客户端事务管理器,被称为TM。它负责发起本地事务,并向TC注册和汇报事务状态。
- Resource Manager (RM): 管理分布式事务中的资源,如数据库、消息队列等。它负责执行TC的命令,执行事务提交或回滚。
TC是Seata的核心组件,它负责管理全局事务的生命周期。其架构如下图所示:
[Image: SeataServer架构]
TC由以下核心模块组成:
- Manager: 管理全局事务的元数据,如事务状态、参与者信息等。
- Transaction: 负责执行事务的生命周期操作,如开始、提交、回滚等。
- Protocol: 提供通信协议,处理与TM和RM之间的消息交互。
- Store: 存储全局事务元数据,支持持久化和恢复。
TM负责管理本地事务。其架构如下图所示:
[Image: TM架构]
TM由以下核心模块组成:
- XATransaction: 实现X/Open XA规范,管理本地事务。
- Transaction Hook: 提供事务事件监听和回调机制,与应用代码交互。
- ResourceManagerHolder: 保存RM的引用,用于协调事务。
RM负责管理分布式事务中的资源。其架构如下图所示:
[Image: RM架构]
RM由以下核心模块组成:
- XADataSource: 实现XA规范,管理数据库事务。
- Recovery Manager: 负责事务恢复,如从崩溃中恢复。
- Lock Manager: 管理分布式锁,保证事务隔离性。