0
点赞
收藏
分享

微信扫一扫

源码系列(八)-Seata源码解析

知年_7740 2022-03-22 阅读 54
java

源码系列(八)-Seata源码解析

前言

  1. 之前项目有使用Seata中间件实现分布式事务, 最近忙里偷闲做一次总结,一方面把一些踩坑记录下来,方便自己和读者快速排错,还有就是争取做到温故而知新, 话不多说, 搞起,搞起.

  2. 入门知识建议参考官网: Seata官网地址

    在这里插入图片描述

源码解析-AT模式

  1. 术语表
    1. TC (Transaction Coordinator) - 事务协调者: 维护全局和分支事务的状态,驱动全局事务提交或回滚, 就是我们启动的Seata服务端,一个单独的jvm进程
    2. TM (Transaction Manager) - 事务管理器: 定义全局事务的范围:开始全局事务、提交或回滚全局事务, 就是我们使用@GlobalTransactional的那个服务, 它同时也可以是RM
    3. RM (Resource Manager) - 资源管理器: 管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚, 有异常情况需要处理的地方, 一般是被调用的服务
  2. 示意图, 这些知识官网上都有
    在这里插入图片描述
  3. 源码下载: Seata地址,来源于全球最大同性交友网站github
    1. 建议先fork到自己的仓库
    2. 下载后的目录
      在这里插入图片描述
    3. 模块作用:
      1. common模块: 通用的异常、工具类、线程工具、计数器、SPI、常量等
      2. serializer模块: 编解码相关,实现了kryo、protobuf等编解码器
      3. config模块: Seata中的配置中心和注册中心是分离的,实现了主流的配置中心,默认file模式,apollo,nacos,etcd3等
      4. core模块: 包括封装好的RPC、数据模型、通信协议、事件、认证、序列化、存储、锁等等
      5. discovery模块: seata-server充当的事务协调者的角色,用于管理全局事务, RM,TM通过网络通信(没错就是netty)进行事务的提交与回滚,类似与微服务这样, 所以需要一个注册中心,现在支持consul、etcd3、eureka、redis等等
      6. metrics模块: 统计相关的功能, 支持导出
      7. rm模块: resource manager相关功能的核心抽象, 上个图看一下
        在这里插入图片描述
      8. rm-datasource模块: 对JDBC的扩展, 实现操作数据库相关的功能
      9. saga模块: 前面提到了seata是支持多种模式的, saga模式的实现
      10. tcc模块: 对tcc模式的支持
      11. tm模块: 分布式事务中事务管理者的实现, 稍后会详细介绍
      12. spring模块: 使用Spring注解类的功能实现
      13. server模块: TC的实现模块。包含不同模式的事务实现
      14. test模块: 单元测试
      15. compressor模块: 支持主流压缩模式, 像7z,zip,gzip等
      16. console模块: 可视化相关,整合了SpringSecurity,JWT相关
举报

相关推荐

0 条评论