Nacos源码总览
- Nacos源码
- 源码目录讲解
- api目录
- auth权限管理模块
- client客户端模块
- common模块
- config模块
- consistency 一致性
- console控制台模块
- console-ui 前端页面
- core模块
- distribution分布式模块
- istio网格模块
- naming服务治理模块
- protoc安装
- windows安装
Nacos源码
Nacos github地址
git clone https://github.com.cnpmjs.org/alibaba/nacos.git
源码目录讲解
编辑如下:
api目录
该模块定义了nacos的一些注解,接口,抽象类,枚举和常量等,该模块下几乎没有实现类,只有如下几个方面的定义:
- CMDB(配置管理数据库)实体,枚举和SPI接口等。
- Nacos注解声明。
- 配置注解,POJO,过滤器,监听器,常量等声明。
- 异常声明。
- 命名服务的监听器声明,实体对象,服务接口,工厂类等。
- selector定义
- 工具和common的定义。
阿里开源项目中很多地方都使用了SPI模式,这种方式很容易做拓展,并且松耦合。我们最常见的数据库驱动就是使用SPI模式。
auth权限管理模块
该模块实现了nacos的权限功能。
client客户端模块
nacos客户端模块。
common模块
nacos通用模块,内部声明了http的使用方式,和一下通用接口或者抽象类。
config模块
nacos两大核心功能配置中心实现就在该模块中。
consistency 一致性
该模块实现了nacos的一致性。主要是针对服务发现的一致性,配置中心主要是通过数据库完成的一致性。
- AP模型。Nacos默认使用AP模型,但是一致性模块只是定义了一致性接口,实现在
core
模块。 - CP模型。Nacos也是支持CP模型的(Eureka只支持AP模型)。
console控制台模块
该模块实现了nacos控制台的集成,将前端页面与后端集成到一起。
console-ui 前端页面
nacos前端控制器UI代码。
core模块
核心处理模块。权限过滤器配置,权限注解实现,核心异常处理,监听器等。
distribution分布式模块
其实该模块只是包装了一下console模块,并且提供了一下外部配置文件和常用脚本。
istio网格模块
实现了nacos的istio。
naming服务治理模块
nacos服务治理的实现模块。
protoc安装
下载下来源码,你会发现 缺少 很多实体类,例如一致性(consistency)模块就缺少
com.alibaba.nacos.consistency.entity
包
原因就是高版本的nacos使用了protoc ,因此我们需要先编译protoc生成缺少的实体类
protoc GitHub地址 : https://github.com/protocolbuffers/protobuf/
windows安装
- 下载安装包
- 解压安装包
- 配置环境变量
常用命令:
查看版本
protoc --version
首先进入consistency模块的 src/main/proto
目录
编译 consistency.proto
protoc --java_out ../java/ ./consistency.proto
编译 Data.proto
protoc --java_out ../java/ ./Data.proto