Nacos源码 (2) 核心模块

news2024/11/25 2:35:40

返回目录


整体架构

在这里插入图片描述

在这里插入图片描述

  • 服务管理:实现服务CRUD,域名CRUD,服务健康状态检查,服务权重管理等功能
  • 配置管理:实现配置管CRUD,版本管理,灰度管理,监听管理,推送轨迹,聚合数据等功能
  • 元数据管理:提供元数据CURD和打标能力
  • 插件机制:实现三个模块可分可合能力,实现扩展点SPI机制
  • 事件机制:实现异步化事件通知,sdk数据变化异步通知等逻辑
  • 日志模块:管理日志分类,日志级别,日志可移植性(尤其避免冲突),日志格式,异常码+帮助文档
  • 回调机制:sdk通知数据,通过统一的模式回调用户处理。接口和数据结构需要具备可扩展性
  • 寻址模式:解决ip,域名,nameserver、广播等多种寻址模式,需要可扩展
  • 推送通道:解决server与存储、server间、server与sdk间推送性能问题
  • 容量管理:管理每个租户,分组下的容量,防止存储被写爆,影响服务可用性
  • 流量管理:按照租户,分组等多个维度对请求频率,长链接个数,报文大小,请求流控进行控制
  • 缓存机制:容灾目录,本地缓存,server缓存机制。容灾目录使用需要工具
  • 启动模式:按照单机模式,配置模式,服务模式,dns模式,或者all模式,启动不同的程序+UI
  • 一致性协议:解决不同数据,不同一致性要求情况下,不同一致性机制
  • 存储模块:解决数据持久化、非持久化存储,解决数据分片问题
  • Nameserver:解决namespace到clusterid的路由问题,解决用户环境与nacos物理环境映射问题
  • CMDB:解决元数据存储,与三方cmdb系统对接问题,解决应用,人,资源关系
  • Metrics:暴露标准metrics数据,方便与三方监控系统打通
  • Trace:暴露标准trace,方便与SLA系统打通,日志白平化,推送轨迹等能力,并且可以和计量计费系统打通
  • 接入管理:相当于阿里云开通服务,分配身份、容量、权限过程
  • 用户管理:解决用户管理,登录,sso等问题
  • 权限管理:解决身份识别,访问控制,角色管理等问题
  • 审计系统:扩展接口方便与不同公司审计系统打通
  • 通知系统:核心数据变更,或者操作,方便通过SMS系统打通,通知到对应人数据变更
  • OpenAPI:暴露标准Rest风格HTTP接口,简单易用,方便多语言集成
  • Console:易用控制台,做服务管理、配置管理等操作
  • SDK:多语言sdk
  • Agent:dns-f类似模式,或者与mesh等方案集成
  • CLI:命令行对产品进行轻量化管理,像git一样好用

console模块

console模块是一个springboot工程,整合了管理控制台、注册中心和配置中心功能。

启动类

启动类是com.alibaba.nacos.Nacos类:

@SpringBootApplication(scanBasePackages = "com.alibaba.nacos")
@ServletComponentScan
@EnableScheduling
public class Nacos {
    public static void main(String[] args) {
        SpringApplication.run(Nacos.class, args);
    }
}

依赖的模块

  • nacos-config - 配置中心
  • nacos-naming - 注册中心

ConsoleConfig配置类

  • 加载application.properties配置文件
  • 扫描各个模块controller包,缓存RequestMappingInfo -> Method
  • EnableScheduling开启定时任务功能

管理端接口

  • HealthController - 健康检查接口
  • NamespaceController - 命名空间管理
  • PermissionController - 权限管理
  • RoleController - 角色管理
  • ServerStateController - 查询服务运行状态信息
  • UserController - 登录和用户管理

config模块

配置中心。

aspect切面

  • CapacityManagementAspect - 配置容量判断切面
  • RequestLogAspect - 请求日志切面

auth认证

权限相关接口及实现类:

  • PermissionPersistService - Permission CRUD service
  • RolePersistService - Role CRUD service
  • UserPersistService - User CRUD service

configuration配置类

  • Filter配置:
    • NacosWebFilter - Web encode filter
    • CurcuitFilter - 熔断降级判断过滤器
  • StorageCondition配置:用于判断存储类型
    • ConditionDistributedEmbedStorage -
    • ConditionOnEmbeddedStorage -
    • ConditionOnExternalStorage -
    • ConditionStandaloneEmbedStorage -

controller配置中心接口

  • CapacityController - 配置容量管理接口
  • ClientMetricsController - 客户端统计信息查询接口
  • CommunicationController - 集群节点通信接口
  • ConfigController - 配置管理接口
    • 配置推送接口
    • 配置查询、删除接口
    • 导入、导出配置接口
    • 配置变化监听接口
  • HealthController - 健康检查接口
  • HistoryController - 配置历史管理接口
  • ListenerController - 从客户端侧查询订阅信息接口

monitor监视器

  • MemoryMonitor
  • MetricsMonitor
  • ResponseMonitor

remote远程调用处理器

远程rpc处理器:

  • ConfigChangeBatchListenRequestHandler - 客户端监听器新增/移除处理器
  • ConfigChangeClusterSyncRequestHandler - 集群同步配置处理器
  • ConfigPublishRequestHandler - 推送配置处理器
  • ConfigQueryRequestHandler - 配置查询处理器
  • ConfigRemoveRequestHandler - 配置删除处理器

naming模块

注册中心。

consistency一致性服务

维护数据一致性的相关服务。

controller注册中心接口

  • CatalogController - 服务及实例相关信息查询接口
  • ClusterController - 服务集群管理接口
  • DistroController - 分区容错相关接口
  • HealthController - 健康检查相关接口
  • InstanceController - 服务实例管理接口
  • OperatorController - 操作数据查询接口
  • ServiceController - 服务管理接口

remote远程调用处理器

远程rpc处理器。

client模块

config配置中心客户端

NacosConfigService类封装了操作配置中心的API。

naming注册中心客户端

NacosNamingService类封装了操作注册中心的API。

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

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

相关文章

计算机组成原理-笔记-第一章

目录 一、第一章——计算机系统概述(硬件软件) 1、计算机发展 (1)小结 2、硬件的基本组成(冯诺依曼机) (1)冯诺依曼机——运算器为中心 (2)现代计算器结…

微服务 云原生:搭建 Harbor 私有镜像仓库

Harbor官网 写在文前: 本文中用到机器均为虚拟机 CentOS-7-x86_64-Minimal-2009 镜像。 基础设施要求 虚拟机配置达到最低要求即可,本次系统中使用 docker 24.0.4、docker-compose 1.29.2。docker 及 docker-compose 的安装可以参考上篇文章 微服务 &am…

《HeadFirst设计模式(第二版)》第七章代码——适配器模式

代码文件目录: Example1: Duck package Chapter7_AdapterAndFacadePattern.Adapter.Example1;/*** Author 竹心* Date 2023/8/7**/public interface Duck {public void quack();public void fly(); }DuckTestDrive package Chapter7_AdapterAndFacadePattern.Ada…

Vue2源码分析-day1

初始化数据 vue中最核心的我们都知道那就是响应式数据&#xff0c;数据的变化视图自动更新。那么我们来new一个我们自己的vue 在index.html文件下加入如下代码&#xff0c;这也是vue最常见的基本结构。data已经有了下面我们来获取data的数据 <script src"./vue.js&qu…

怎么快速搭建BI?奥威BI系统做出了表率

搭建BI系统有两大关键&#xff0c;分别是环境搭建和数仓建设。这两点不管是哪一个都相当地费时费力&#xff0c;那要怎么才能快速搭建BI平台&#xff0c;顺利实现全企业数字化运营决策&#xff1f;奥威BI系统方案&#xff0c;你值得拥有&#xff01; 奥威BI系统方案&#xff0…

VS+Qt环境下解决中文乱码问题

目录 原因解决方案总结 原因 使用VSQt出现中文乱码的情况一般都是给控件添加中文文本时出现&#xff0c;而控件需要的字符串类型是QString&#xff0c;默认是utf-8。在 Visual Studio 中&#xff0c;源代码文件的默认执行字符集可能是 Windows 默认的 ANSI 字符集&#xff0c;…

0基础学习VR全景平台篇 第79篇:全景相机-泰科易如何直播推流

泰科易科技是中国的一家研发全景相机的高科技公司&#xff0c;前不久&#xff0c;在2020世界VR产业大会上发布了新一代5G VR直播影像采集终端--360starlight。以其出色的夜景成像效果和一“部”到位的直播方案重新定义了VR慢直播相机&#xff0c;对行业具有高度借鉴意义。 本文…

吸取图片指定点的颜色-微信小程序

“远看色,近看形,细看质”&#xff0c;我不是设计师&#xff0c;所以彩色那么美&#xff0c;却总也不会用&#xff0c;就想要是有一款颜色的工具可以帮助使用颜色&#xff0c;那不挺好&#xff1f;网上找了一些&#xff0c;要不就不是自己想要的&#xff0c;要不就是收费的&…

【HCIP】OSPF综合实验

题目&#xff1a; 配置&#xff1a; R1 //ip分配 [r1]int g0/0/0 [r1-GigabitEthernet0/0/0]ip add 172.16.0.1 27 [r1-GigabitEthernet0/0/0]q [r1]int lo [r1]int LoopBack 0 [r1-LoopBack0]ip add 172.16.1.1 24//配置缺省 [r1]ip route-static 0.0.0.0 0 172.16.0.3 //启动…

PHP8的循环控制语句-PHP8知识详解

我们在上一节讲的是条件控制语句&#xff0c;本节课程我们讲解循环控制语句。循环控制语句中&#xff0c;主要有for循环、while循环、do...while循环和foreach循环。 在编写代码时&#xff0c;经常需要反复运行同一代码块。我们可以使用循环来执行这样的任务&#xff0c;而不是…

Data analysis|Tableau基本介绍及可基础可实现功能

一、基础知识介绍 &#xff08;一&#xff09;什么是tableau tableau 成立于 2003 年&#xff0c;是斯坦福大学一个计算机科学项目的成果&#xff0c;该项目旨在改善分析流程并让人们能够通过可视化更轻松地使用数据。Tableau可以帮助用户更好地理解和发现数据中的价值&#x…

Packet Tracer - IPv4 和 IPv6 编址故障排除

Packet Tracer - IPv4 和 IPv6 编址故障排除 地址分配表 设备 接口 IPv4 地址 子网掩码 默认网关 IPv6 地址/前缀 R1 G0/0 10.10.1.1 255.255.255.0 N/A G0/1 192.168.0.1 255.255.255.0 N/A 2001:DB8:1:1::1/64 N/A G0/2 2001:DB8:1:2::1/64 N/A S0/0/0 …

汽车用功率电感器

支持车载用被动元件的可靠性认证测试标准“AEC-Q200”的绕线铁氧体功率电感器 LCXH 系列实现商品化&#xff0c;推出了“LCXHF3030QK”等 6 个尺寸的 64 款商品。 这些商品均是用于汽车车身类及信息娱乐等信息类的电源电路用扼流线圈及噪音滤波器的功率电感器。 LCXH 系列与民生…

Xorm开发详细文档

文章目录 介绍特性支持的数据库安装 创建 Engine单引擎日志连接池 引擎组引擎组策略负载策略 定义表结构体各种映射规则前缀映射&#xff0c;后缀映射和缓存映射使用 Table 和 Tag 改变名称映射Column 属性定义Go与字段类型对应表 表结构操作获取数据库信息表操作创建索引和唯一…

MySQL — 存储引擎

文章目录 存储引擎存储引擎类型InnoDBMyISAMMEMORY 存储引擎是数据库的核心&#xff0c;对于mysql来说&#xff0c;存储引擎是以插件的形式运行的。虽然mysql支持种类繁多的存储引擎&#xff0c;但是常用的就那么几种。这篇文章主要是对其进行简单的介绍。 存储引擎 MySQL可插…

Kubernetes关于cpu资源分配的设计

kubernetes资源 在K8s中定义Pod中运行容器有两个维度的限制: 资源需求(Requests):即运行Pod的节点必须满足运行Pod的最基本需求才能运行Pod。如 Pod运行至少需要2G内存,1核CPU。(软限制)资源限额(Limits):即运行Pod期间,可能内存使用量会增加,那最多能使用多少内存,这…

速通《深入理解Java虚拟机》| 第一章 走近Java

第一章 走近Java 1、Java技术体系 2、Java发展史 3、Java虚拟机家族 4、Java技术未来趋势 5、上机实验 主要步骤&#xff1a; 下载OpenJDK12源码并解压到本地安装相关依赖库编译OpenJDK12安装JetBrains的CLionDE&#xff0c;并用该IDE调试JDK源码 上机实验详情请见&#xf…

css-4:元素水平垂直居中的方法有哪些?如果元素不定宽高呢?

1、背景 在开发中&#xff0c;经常遇到这个问题&#xff0c;即让某个元素的内容在水平和垂直方向上都居中&#xff0c;内容不仅限于文字&#xff0c;可能是图片或其他元素。 居中是一个非常基础但又是非常重要的应用场景&#xff0c;实现居中的方法存在很多&#xff0c;可以将这…

《凤凰架构》第一章——服务架构演进史

前言 刚开始决定弄懂文中所提到的所有东西&#xff0c;就像我写ByteByteGo呢几篇文章一样&#xff0c;把每一句话都弄懂。但是对于《凤凰架构》来说&#xff0c;这有点太费时间了&#xff0c;并且没有必要&#xff0c;有些东西可能永远都不会用到&#xff0c;但文章为了全面的…

机器学习——卷积神经网络基础

卷积神经网络&#xff08;Convolutional Neural Network&#xff1a;CNN&#xff09; 卷积神经网络是人工神经网络的一种&#xff0c;是一种前馈神经网络。最早提出时的灵感来源于人类的神经元。 通俗来讲&#xff0c;其主要的操作就是&#xff1a;接受输入层的输入信息&…