Seata 的架构由三大核心组件构成:Transaction Coordinator(TC)、Transaction Manager(TM) 和 Resource Manager(RM)。它们协同工作,用于管理分布式事务的生命周期,确保全局数据一致性。以下是对这三个组件的详细解析及其作用:
1. Seata 的三大核心组件
1.1 Transaction Coordinator(TC)事务协调者
- 作用:
- 负责管理全局事务的生命周期。
- 记录全局事务状态和分支事务的状态。
- 协调各分支事务的提交或回滚操作。
- 位置:
- TC 通常部署为一个独立的中心化服务,例如 Seata Server。
- 工作原理:
- 全局事务创建:
- TM 向 TC 注册全局事务,TC 分配一个全局事务 ID(
XID
)。
- TM 向 TC 注册全局事务,TC 分配一个全局事务 ID(
- 分支事务注册:
- 每个分支事务通过 RM 向 TC 注册。
- 协调提交或回滚:
- 根据全局事务的状态,通知 RM 提交或回滚分支事务。
- 全局事务创建:
1.2 Transaction Manager(TM)事务管理器
- 作用:
- 发起并管理全局事务的边界(开始、提交或回滚)。
- 位置:
- TM 嵌入到业务服务中,是分布式事务的入口。
- 主要功能:
- 开启全局事务:
- TM 向 TC 注册全局事务,获取全局事务 ID。
- 标记事务边界:
- 使用
@GlobalTransactional
注解管理全局事务的开始和结束。
- 使用
- 提交或回滚事务:
- 根据业务逻辑或异常,通知 TC 提交或回滚全局事务。
- 开启全局事务:
代码示例
@Service
public class OrderService {
@Autowired
private InventoryService inventoryService;
@Autowired
private PaymentService paymentService;
@GlobalTransa