Seata是一个开源的分布式事务解决方案,在分布式系统中保证数据一致性是非常重要的。Seata提供了高效、易用、可靠的分布式事务解决方案,帮助用户实现跨DB、跨A/C、跨RPC的分布式事务。
Seata架构由三个核心组件构成,包括:
1、TC (Transaction Coordinator):事务协调器,主要负责全局事务的启动、提交和回滚。TC作为分布式事务的“总指挥”,负责控制所有事务参与者(TCC参与者和补偿参与者)的执行状态,并根据执行结果来进行后续操作。当TC接收到全局事务请求时,会对全局事务进行管理并将相关信息同步给各个事务参与者,以协调分布式事务的执行并保证数据最终一致性。
2、TM (Transaction Manager):事务管理器,主要负责处理本地事务(Local Transaction)。TM作为分布式事务的“幕后英雄”,负责与特定业务的数据源交互、驱动事务生命周期的各个阶段的执行,并且通过RPC传回执行结果给TC。TM还可以监控和管理本地资源,例如释放异常锁等。
3、RM (Resource Manager):资源管理器,主要负责对本地事务中涉及的资源进行管理。RM作为分布式事务参与者,与TM交互、完成各阶段的执行,并将执行结果返回给TM。RM还可以监控和管理本地资源。
这三个组件协同工作,形成Seata架构的基础,具体的工作流程如下:
1、TC向TM发送全局事务请求,TM在本地数据库中创建事务同时加锁。
2、TM向所有RM发出prepare阶段的执行请求,要求其准备好相应的分布式事务资源。
3、RM开始执行分布式事务,完成对资源的准备工作,并将执行结果返回给TM。
4、TM收到所有RM的执行结果后,将执行结果汇总并回复给TC,进入到commit或rollback的最终阶段。
5、当TC确保全局事务的状态被标记为“提交”时,它会通知所有被协调的事务参与者进行事务提交,进而完成全局事务处理。
需要注意的是,在使用Seata的过程中,RM不仅可以是数据源,还可以是远程RPC服务,即TCC参与者和补偿参与者,以此实现跨DB、跨A/C、跨RPC的分布式事务。
总之,Seata通过将TC、TM、RM三个重要组件组合起来,建立分布式事务模型,实现了系统之间的分布式事务协调和一致性的保证。它在分布式事务方案中具有良好的稳定性、高可靠性和良好的兼容性,为开发人员提供了快速、便捷和安全的分布式事务管理机制。