seata事务管理中的各个角色
Seata TC(Transaction Coordinator),事务协调者,会接受全局事务的开启、提交、回滚,分支事务的注册。通过它的协调,达到多事务的一致性。
Seata TM(Transaction Manager),事务管理器,或者可以理解成事务的发起者,负责向 TC 发起全局事务的开启、提交、回滚。
Seata RM(Resource Manager),资源管理器,或者可以理解成事务的参与者,负责向 TC 发起分支事务的注册、提交,接收自 TC 请求的分支事务的提交、回滚。
seata的事务执行过程
seata的执行过程如下:
- 首先TM开启一个全局事务,TC会生成一个XID作为该全局事务的编号(XID会在微服务的调用链路中传播,将多个微服务内的子事务关联起来);
- RM请求TC将本地事务注册为全局事务的分支事务,通过全局事务的XID进行关联;
- TM请求TC告诉XID对应的全局事务是进行提价还是回滚;
- TC通知与XID关联的RM的本地事务进行提交还是回滚。
seata源码中各个模块的作用
seata-common(提供 Seata 封装的工具类、异常类等)
seata-core(提供 Seata 封装的 RPC、数据模型、通信消息格式等)
seata-config(Seata 对配置中心的接入)
seata-discovery(Seata 对注册中心的接入和负载均衡的功能)
seata-rm(Seata 对 RM 的核心实现)
seata-rm-datasource(Seata 通过对 JDBC 拓展,从而实现对 MySQL 等的透明接入 Seata RM 的实现)
seata-server(Seata 对 TC 的核心实现,提供了事务协调、锁、事务状态、事务会话等功能)
seata-tm(Seata 对 TM 的实现,提供了全局事务管理,例如说事务的发起,提交,回滚等)
seata-tcc(Seata 对 TCC 事务模式的实现)
seata-spring(Spring 对 Seata 集成的实现)
integration(用于对不同框架的集成)
