Seata源码解析 —— 项目结构

前言

我们后续解析Seata源码都是基于版本0.9.0,这个是笔者写这篇源码解析时候最新的一个tag。Seata的源码其实非常简单,后续我们会从整个服务启动、服务发现、配置加载等开始,串联起AT、TCC等事务模式,把这些过程的所有源码做一个解析。这篇文章,我们首先来了解一下Seata项目的总体概况。

项目结构

Seata包含的模块比较多,整个的模块划分比较清晰,很容易理解。

所有模块的纯代码量加起来不超过10W行,如果除去一个接口的多个实现,如:配置中心、注册中心等。真正的逻辑代码量并不多。

Seata和Dubbo一样,实现了一个简单的扩展点,用于管理一个接口下的多个实现。

下面我们先来了解一下每个模块是做什么的,在脑海里建立一个总体的大图,后续我们阅读源码的时候就不会迷糊。

codec模块

Seata的编码解码器模块,现在实现了kryo、protobuf等编解码器。
Seata源码解析 —— 项目结构_第1张图片

common模块

从命名就可以知道是通用模块。定义了通用的异常、工具类、线程工具、计数器等。最主要的是,这里定义了扩展点的加载类。和Dubbo很相似,Seata也使用了扩展点这种实现类的管理方式。
Seata源码解析 —— 项目结构_第2张图片

config模块

Seata的配置中心和注册中心是分离的,支持了市面上主流的各种配置中心。config模块主要是各种配置中心的支持源码。包括:apollo、consul、etcd3等等。其中有一个core模块,是配置的核心实现,默认提供使用 File 存储配置。
Seata源码解析 —— 项目结构_第3张图片

core模块

核心模块,提供了整个Seata的基础模型,包括封装好的RPC、数据模型、通信协议、事件等等。
Seata源码解析 —— 项目结构_第4张图片

discovery模块

Seata存在一个事务协调器(TC),用于管理全局的事务,RM、TM等模块作为SDK和业务代码在一起,但是它们现就是用的类似微服务的注册/订阅方式。因此需要一个注册中心。discovery模块就是不同注册中心的具体实现。现在支持consul、etcd3、eureka、redis等等。
Seata源码解析 —— 项目结构_第5张图片

metrics模块

用于统计的模块,现在的统计信息提供了对外导出的方法。
Seata源码解析 —— 项目结构_第6张图片

rm模块

Resource Manager的核心实现。定义了抽象实现,整个模块的代码量很少。

#####rm-datasource模块

和RM模块很像,但是它的作用是通过对 JDBC做扩展,实现了对 MySQL 等数据库的透明接入 Seata RM 的实现。代码量较多。

saga模块

对saga类型事务的实现,会在后面saga事务源码分析的时候重点介绍。
Seata源码解析 —— 项目结构_第7张图片

tcc模块

和saga类型,这个模块提供了TCC事务的实现。

tm模块

分布式事务中TM的实现。看过我们Seata AT模式介绍的,就会知道TM的具体作用。后面在解析具体事务源码的时候会讲到。

spring模块

Spring注解类的实现全部在这个模块

server模块

TC的实现模块。负责全局的事务协调,我们在上一篇Seata AT模式介绍中就有出现过。

test模块

Seata的Demo测试模块。

总结

Seata划分的模块很多,但是每个模块的源码很少,总共源码也不超过10W行。后续我们会在使用过程中,通过功能串联的方式,把整个过程的源码做一个详细的解析。

欢迎关注我的公众号

Seata源码解析 —— 项目结构_第8张图片

你可能感兴趣的:(中间件源码,Seata,源码解析,源码结构)