2023nacos源码解读第4集——整体了解nacos源码模块

news2024/11/29 21:21:18

文章目录

  • 1、类Linux tree的windows treee工具
  • 2、源码目录结构
  • 3、模块依赖关系

1、类Linux tree的windows treee工具

windows 自带的tree 不够用,使用node npm安装一个类Linux 的treee

npm install -g cnpm --registry=https://registry.npm.taobao.org
npm config set registry https://registry.npm.taobao.org
cnpm install -g tree-node-cli
treee -h

2、源码目录结构

TODO

D:\nacos>treee -L 1 -a -r
nacos
├── test #(9K)core,naming,config三大模块的junit单元测试
├── sys #(2.2K) # nacos系统模块状态(spi),文件监听,上下文等
├── style # 代码风格配置文件
├── resources # copyright
├── prometheus #(0.3K)# 目前看没啥用,就三个简单的接口,文档也没有相关说明,console的监控实现是console模块自定义指标并通过通用的endpoint暴露给prometheus采集的
├── pom.xml
├── plugin-default-impl #(4.5K)# 插件默认实现
├── plugin #(7.7K)# 定义了几种插件spi接口,便于用户自定义一些功能
├── persistence #(2.7K)# 基于spring jdbc包装数据库操作(单机derby,集群mysql)
├── naming #(24K)# 核心模块:注册中心
├── istio #(1.2K)# 默认nacos server未启用,应该是nacos对接istio生态的一个项目,参考nacos服务网格生态
├── example #(0.1K)服务注册与下线,配置监听案例,运行其main方法即可测试(要启动一个nacos-server)
├── doc # 没啥文档
├── distribution # 脚本,配置文件,sql文件等
├── core #(16.6K)# 实现了一些通用基础通用功能,应该是config,naming的抽取出来的
├── console-ui # 控制台前端(React)
├── console #(1.1K)# nacos-server程序入口,但代码量很少,通过扫描config,naming,core等模块com.alibaba.nacos路径,提供需要的web接口给console-ui调用
├── consistency #(1K)# 依赖common,定义AP/CP一致性上层相关api
├── config #(29K)# 核心:配置管理
├── common #(20K)# 依赖api,自己实现的一些公共功能模块如本地缓存,http实现,事件机制,包扫描,参数检查,grpc封装及其他工具类
├── codecov.yml
├── cmdb #(0.3K)# 存放机房设备、服务等相关元数据,默认未开启,大规模集群可基于其SPI机制实现多机房就近访问等
├── client #(16.5K)# 依赖common,api,auth模块,其他项目通过引入该唯一nacos jar使用nacos
├── auth #(1.6K)# 依赖common,定义http,grpc请求鉴权上层相关api
├── api #(10.5K)# 一些公共的注解、常量、接口、实体类、gpc生成类、工具类、config,naming等模块的一些底层base,是common模块的上层
├── address #(0.6K) # 暴露cluster CU RD api,核心逻辑实现在naming模块
├── REPORTING-BUGS.md
├── README.md
├── NOTICE
├── LICENSE
├── CONTRIBUTING.md
├── CODE_OF_CONDUCT.md
├── CHANGELOG.md
├── BUILDING
├── .travis.yml #push代码到github,按travis流程检查代码
├── .idea
├── .gitignore
├── .github #github ci相关脚本如代码检查、编译打包、覆盖率测试等
├── .gitattributes
├── .git
└── .flattened-pom.xml # 统一版本号管理:${revision},easyj-maven-plugin文档

总代码行150Kloc,详细模块代码量及大致功能如上
在这里插入图片描述

3、模块依赖关系

在这里插入图片描述
以下是几个核心或代码量较大的几个模块依赖关系
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1256134.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL 8 手动安装后无法启动的问题解决

开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,(…

springframe工程导入

配置gradle工程 init.d 目录下新建init.gradle allprojects {repositories {mavenLocal()maven {allowInsecureProtocol trueurl https://maven.aliyun.com/nexus/content/repositories/central/}} } 报错Plugin [id: org.jetbrains.dokka, version: 0.10.1, apply: false] w…

Python集合类型

目录 目标 版本 官方文档 集合分类 实战 创建 循环 常用方法 目标 掌握set和frozenset两种集合的使用方法,包括:创建、交集、并集、差集等操作。 版本 Python 3.12.0 官方文档 Set Types — set, frozensethttps://docs.python.org/3/library/s…

常见指令的数据通路和执行过程

作此篇的原因是17年19题: 本题选A,做的时候总感觉不够通透,因此把这题涉及到的内容全部看了一遍,顿时没有那种朦胧感了 零、五段式流水线: 以下均为MIPS设定:指令长度为32位,主存按字节编址&a…

RC-MVSNet:无监督的多视角立体视觉与神经渲染--论文笔记(2022年)

RC-MVSNet:无监督的多视角立体视觉与神经渲染--论文笔记(2022年) 摘要1 引言2 相关工作2.1 基于监督的MVS2.2 无监督和自监督MVS2.3 多视图神经渲染 3 实现方法3.1 无监督的MVS网络 Chang, D. et al. (2022). RC-MVSNet: Unsupervised Multi-…

领域驱动设计总结——如何构造领域模型

领域驱动设计总结——如何构造领域模型 本文为领域驱动设计系列总结的第三篇,主要对领域驱动设计概念做个介绍,本系列领域驱动设计总结主要是在Eric Evans 所编写的《领域驱动设计》 一书的基础上进行归纳和总结。本文主要介绍在领域驱动设计中如何构造…

【数据中台】开源项目(2)-Dbus系统架构

大体来说,Dbus支持两类数据源: RDBMS数据源 日志类数据源 1 RMDBMS类数据源的实现 以mysql为例子. 分为三个部分: 日志抽取模块(最新版DBus已经废弃该模块,使用canal直接输出到kafka) 增量转换模块 全量拉取模块 1.1 日志抽…

紫光展锐 展讯芯片 展讯处理器解锁BL 各分区结构 ROM 分区列表代表什么 bin img 表示什么意思

是展锐 Android 10.0、Android 9.0 平台 ROM 空间划分情况以及分区格式、分区大小和分区功能的 初步描述。 prodnv 开机后系统中的 productinfo 分区,保 存 adc 校准参数、eng.db 数据库。 Miscdata 保存 ota、recovery 时的一些数据 recovery 存放 recovery.i…

【深度学习实验】图像处理(二):PIL 和 PyTorch(transforms)中的图像处理与随机图片增强

文章目录 一、实验介绍二、实验环境1. 配置虚拟环境2. 库版本介绍 三、实验内容0. 导入需要的工具包1. PIL图像处理a. 生成绿色和蓝色图像b. 缩放和合成图像c 在合成图像上添加文字d. 展示并保存图像 2. PIL随机图像增强a. 定义随机图像增强函数b. 实验结果展示 3. PyTorch&…

【Amazon】通过代理连接的方式导入 AWS EKS集群至KubeSphere主容器平台

文章目录 一、设置主集群方式一:使用 Web 控制台方式二:使用 Kubectl命令 二、在主集群中设置代理服务地址方式一:使用 Web 控制台方式二:使用 Kubectl命令 三、登录控制台验证四、准备成员集群方式一:使用 Web 控制台…

P17C++析构函数

目录 前言 01 什么是析构函数 1.1 举个栗子 02 为什么要写析构函数 前言 今天我们要讨论一下它的“孪生兄弟”,析构函数,它们在某些方面非常相似。 与构造函数相反,当对象结束其生命周期,如对象所在的函数已调用完毕时&…

[LaTex]arXiv投稿攻略——jpg/png转pdf

一、将图片复制进ppt,右键单击图片选择设置图片格式,获取图片高度和宽度 二、选择“设计-幻灯片大小-自定义幻灯片大小” 三、设置幻灯片大小为图片大小 四、 选择“最大化” 五、 检查幻灯片大小是否与图像大小一致 六、导出为PDF

web前端之vue和echarts的堆叠柱状图顶部显示总数、鼠标悬浮工具提示、设置图例的显示与隐藏、label、legend、tooltip

MENU 效果图htmlJavaScripstyle解析 效果图 html <template><div><div><div id"idStackedColumnChart" style"width: 100%; height: 680px"></div></div></div> </template>JavaScrip export default {…

单细胞seurat入门—— 从原始数据到表达矩阵

根据所使用的建库方法&#xff0c;单细胞的RNA序列&#xff08;也称为读取&#xff08;reads&#xff09;或标签&#xff08;tags&#xff09;&#xff09;将从转录本的3端&#xff08;或5端&#xff09;&#xff08;10X Genomics&#xff0c;CEL-seq2&#xff0c;Drop-seq&…

Django(十一、auth认证模块)

文章目录 一、auth介绍auth认证相关模块及操作扩展auth_user表 一、auth介绍 Django自带一个admin路由&#xff0c;但是需要我们提供管理员账户和密码&#xff0c;如果想要使用admin后台管理&#xff0c;需要先创建表&#xff0c;然后创建管理员账户。 直接执行数据类迁移命令…

Redis:持久化RDB和AOF

目录 概述RDB持久化流程指定备份文件的名称指定备份文件存放的目录触发RDB备份redis.conf 其他一些配置rdb的备份和恢复优缺点停止RDB AOF持久化流程AOF启动/修复/恢复AOF同步频率设置rewrite压缩原理触发机制重写流程no-appendfsync-on-rewrite 优缺点 如何选择 概述 Redis是…

Kotlin应用——使用kt进行web开发 使用h2database进行初始化数据库 mybatis-plus使用

Kotlin 是一门现代但已成熟的编程语言&#xff0c;旨在让开发人员更幸福快乐。 它简洁、安全、可与 Java 及其他语言互操作&#xff0c;并提供了多种方式在多个平台间复用代码&#xff0c;以实现高效编程。 kt入门的合集文章如下&#xff1a; Kotlin学习——kt入门合集博客 &…

Node——Node.js基础

Node.js是一个基于Chrome V8引擎的JavaScript运行时环境&#xff0c;它能够让JavaScript脚本运行在服务端&#xff0c;这使得JavaScript成为与PHP、Python等服务端语言平起平坐的脚本语言。 1、认识Node.js Node.js是当今网站开发中非常流行的一种技术&#xff0c;它以简单易…

Less 安装教程

文章目录 前言LESS的系统要求安装LESS例子输出Less编译css工具后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;Sass和Less &#x1f431;‍&#x1f453;博主在前端领域还有很多知识和技术需要掌握&#xff0c;正在不断努力填补技术短板…

一文从Vue2过渡到Vue3

文章目录 Vue3简介创建Vue3.0工程使用 vue-cli 创建使用 vite 创建Vue3工程结构变化 常用 Composition API拉开序幕的setupref函数reactive函数Vue3.0中的响应式原理vue2.x的响应式Vue3.0的响应式 reactive对比refsetup的两个注意点计算属性与监视computed函数watch函数watchEf…