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

源码目录讲解

编辑如下:

nacos源码 如何添加moudles nacos源码解析_nacos

api目录

该模块定义了nacos的一些注解,接口,抽象类,枚举和常量等,该模块下几乎没有实现类,只有如下几个方面的定义:

  1. CMDB(配置管理数据库)实体,枚举和SPI接口等。
  2. Nacos注解声明。
  3. 配置注解,POJO,过滤器,监听器,常量等声明。
  4. 异常声明。
  5. 命名服务的监听器声明,实体对象,服务接口,工厂类等。
  6. selector定义
  7. 工具和common的定义。

阿里开源项目中很多地方都使用了SPI模式,这种方式很容易做拓展,并且松耦合。我们最常见的数据库驱动就是使用SPI模式。

auth权限管理模块

该模块实现了nacos的权限功能。

client客户端模块

nacos客户端模块。

common模块

nacos通用模块,内部声明了http的使用方式,和一下通用接口或者抽象类。

config模块

nacos两大核心功能配置中心实现就在该模块中。

consistency 一致性

该模块实现了nacos的一致性。主要是针对服务发现的一致性,配置中心主要是通过数据库完成的一致性。

  1. AP模型。Nacos默认使用AP模型,但是一致性模块只是定义了一致性接口,实现在core模块。
  2. 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

protoc GitHub地址 : https://github.com/protocolbuffers/protobuf/

windows安装

nacos源码 如何添加moudles nacos源码解析_nacos源码 如何添加moudles_02

  1. 下载安装包
  2. 解压安装包
  3. 配置环境变量

常用命令:

查看版本

protoc --version

首先进入consistency模块的 src/main/proto目录

编译 consistency.proto

protoc --java_out ../java/ ./consistency.proto

编译 Data.proto

protoc --java_out ../java/ ./Data.proto