SEATA基础

506 阅读2分钟

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(用于对不同框架的集成)