seata项目结构
阅读原文时间:2023年07月15日阅读:2

1. 概述

在拉取 Seata 项目后,我们会发现拆分了好多 Maven 项目。

2. 代码统计

第一种方式,使用 IDEA Statistic 插件,统计整体代码量。

我们可以粗略的看到,总的代码量在 19878 行。相比 Dubbo 代码量级在10W 级,算起来并不多。

第二种方式,使用 Shell 脚本命令逐个 Maven 模块统计 。

一般情况下,使用 find . -name "*.java"|xargs cat|grep -v -e ^$ -e ^\s*\/\/.*$|wc -l 。这个命令只过滤了部分注释,所以相比 IDEA Statistic 会偏多。

当然,考虑到准确性,需要手动 cd 到每个 Maven 项目的 src/main/java 目录下,以达到排除单元测试的代码量。

3. Seata 角色

引用自 https://github.com/seata/seata

Seata TC(Transaction Coordinator),事务协调者,会接受全局事务的开启、提交、回滚,分支事务的注册。通过它的协调,达到多事务的一致性。

Seata TM(Transaction Manager),事务管理器,或者可以理解成事务的发起者,负责向 TC 发起全局事务的开启、提交、回滚。

Seata RM(Resource Manager),资源管理器,或者可以理解成事务的参与者,负责向 TC 发起分支事务的注册、提交,接收自 TC 请求的分支事务的提交、回滚。

4. seata-common 项目

seata-common 项目,提供 Seata 封装的工具类、异常类等,大概在 2022 行代码左右。可以等到代码调用到的时,在看里面的逻辑。

5. seata-core 项目

seata-core 项目,提供 Seata 封装的 RPC、数据模型、通信消息格式等,大概在 10701 行。

6. seata-config 项目

用于 Seata TC 和 Seata RM 从配置中心,读取配置。

seata-config-core 项目,配置的核心实现,默认提供使用 File 存储配置。

seata-config-apollo 项目,提供对 Apollo 的接入。

seata-config-consul 项目,提供对 Consul 的接入。

seata-config-nacos 项目,提供对 Nacos 的接入。

seata-config-zk 项目,提供对 Zookeeper 的接入。

7. seata-discovery 项目

用于 Seata TC 注册到注册中心。

用于 Seata TM 从注册中心发现 Seata TC 。

seata-registry-core 项目,对注册中心的接入的核心实现,默认提供基于 File 实现注册发现。

seata-discovery-consul 项目,提供对 Consul 的接入。

seata-discovery-eureka 项目,提供对 Eureka 的接入。

seata-discovery-nacos 项目,提供对 Nacos 的接入。

seata-discovery-redis 项目,提供对 Redis 的接入。

seata-discovery-sofa 项目,提供对 SofaRegistry 的接入。

seata-discovery-zk 项目,提供对 Zookeeper 的接入。

8. seata-rm 项目

seata-rm 项目,Seata 对 RM 的核心实现,大概在 497 行代码。

seata-rm-datasource 项目,Seata 通过对 JDBC 拓展,从而实现对 MySQL 等的透明接入 Seata RM 的实现,大概在 7651 行代码。

9. seata-server 项目

seata-server 项目,Seata 对 TC 的核心实现,提供了事务协调、锁、事务状态、事务会话等功能,大概在 4049 行代码。

10. seata-tm 项目

seata-tm 项目,Seata 对 TM 的实现,提供了全局事务管理,例如说事务的发起,提交,回滚等,大概在 1316 行代码。

11. seata-tcc 项目

seata-tcc 项目,Seata 对 TCC 事务模式的实现,大概在

这个项目,可以等看完 Seata 核心逻辑后,在进行来看。

未来,Seata 会提供 Saga 事务模式,应该也会是一个子项目。

12. seata-spring 项目

seata-spring 项目,Spring 对 Seata 集成的实现,大概在 1019 行代码。例如说,使用 @GlobalTransactional 注解,自动创建全局事务,就是通过 seata-spring 项目来实现的。

13. integration 项目

integration 项目,用于对不同框架的集成,大概在 146 行代码左右。目前提供了对 Dubbo 框架的集成:

seata-dubbo 项目,提供对 Apache Dubbo 的接入。

seata-dubbo-alibaba 项目,提供对 Alibaba Dubbo 的接入。

热门专题

linux ipv4优先

Mac达芬奇导入不了mp4视频

xlua纯lua框架 性能

Navisworks删注册表

sysdate 存过格式

rpgmaker颜色代码

mysql8 jdbc驱动 jar下载

go datetime 类型

两个Excel中的如果A列和B列的单元格内容一样,则C列

二元线性回归 P值一般取多少

MFC exe 隐藏控制台

abbyy 打开错误

如何随着主题改变切换echarts的颜色

MongoTemplate自定义数据库链接

jqgrid 筛选列

linux统一运维管理

opencv金字塔提高图像清晰度

python redirect新窗口

unhandledexception问题怎么解决

origin怎么把两个拟合曲线图放一块

Home

Powered By WordPress