Seata分布式事务之TM、RM、TC源码分析 引言本篇文章着重点在于调用流程分析,根据业务的发起到结束对Seata的TM、RM、TC模块进行源码调用过程分析,选用Seata版本为0.7.1版本,本篇文章分析均为Seata的AT事务,TM、RM模块分析的比较单一,只分析了逻辑调用,在分析TC模块时候才具体的结合TM、RM模块进行逻辑调用的全过程交互分...
SeataTM向TC申请开启一个全局事务,全局事务创建成功并生成一个全局唯一的XID; XID 在微服务调用链路的上下文中传播;RM向TC注册分支事务,将其纳入 XID 对应全局事务的管辖;TM向TC发起针对 XID的全局提交或回滚决议;TC调度 XID 下管辖的全部分支事务完成提交或回滚请求。
3、Seata中TC、TM、RM三者详解是Spring的面试不用愁,看完这38道题再去高频面试题多要20K的第25集视频,该合集共计36集,视频收藏或关注UP主,及时了解更多相关视频内容。
Seata分为三大模块,分别是TM、RM和TC TC (Transaction Coordinator) - 事务协调者:维护全局和分支事务的状态,驱动全局事务提交或回滚。 TM (Transaction Manager) - 事务管理器:定义全局事务的范围:开始全局事务、提交或回滚全局事务。 RM (Resource Manager) - 资源管理器:管理分支事务处理的资源,与TC交谈以注册分...
Seata是由TM,RM,TC。 其中TM和RM是在客户端,TC是事务协调者是需要单独部署的服务端。 TC (Transaction Coordinator) - 事务协调者 维护全局和分支事务的状态,驱动全局事务提交或回滚。 TM (Transaction Manager) - 事务管理器(发起者,同时也是RM的一种) 定义全局事务的范围:开始全局事务、提交或回滚全局事务。
7、服务B和服务C都成功后,服务A通过TM通知TC全局事务成功,如果失败了,服务A也会通知TC全局事务失败; 8、TC记录了全局事务下的每个分支事务,TC收到全局事务的结果后,如果结果成功,则通知RM成功,RM收到通知后清理之前在数据库中保存的回滚记录,如果失败了,则RM要查询出之前在数据库保存的回滚记录,对之前的SQL操作...
TM与集群通讯和RM基本是一致。 TM启动时,也是根据事务分组从注册中心找到集群机器列表,然后与每台机器建立连接,并向其注册TM信息。 启动后的通讯也是根据负载均衡策略与其中一台机器通讯。而且对于同一个全局事务,可能TM访问的机器前后是不同的。TM和RM与集群通讯使用的代码都是一样的。
TM与集群通讯和RM基本是一致。 TM启动时,也是根据事务分组从注册中心找到集群机器列表,然后与每台机器建立连接,并向其注册TM信息。 启动后的通讯也是根据负载均衡策略与其中一台机器通讯。而且对于同一个全局事务,可能TM访问的机器前后是不同的。TM和RM与集群通讯使用的代码都是一样的。
看过官网README的第一张图片的同学都应该清楚,Seata协调分布式事务的原理便在于通过其协调器侧的TC,来与应用侧的TM、RM进行各种通信与交互,来保证分布式事务中,多个事务参与者的数据一致性。那么Seata的协调器侧与应用侧之间,是如何建立连接并进行通信的呢?
SeataTM向TC申请开启一个全局事务,全局事务创建成功并生成一个全局唯一的XID; XID 在微服务调用链路的上下文中传播;RM向TC注册分支事务,将其纳入 XID 对应全局事务的管辖;TM向TC发起针对 XID的全局提交或回滚决议;TC调度 XID 下管辖的全部分支事务完成提交或回滚请求。