Nacos 的整体架构是什么样的?Client-Server 架构是如何体现的?

三分钟带你了解Nacos:架构及部署 前言 一、什么是Nacos? 官方描述:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos致力于帮助您发现、配置和管理微服务。Nacos提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。 Nacos帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。 愿景:Nacos通过提供简单易用的动态服务发现、服务配置、服务共享与管理等服务基础设施,帮助用户在云原 阅读详情

在这里插入图片描述
Nacos 的整体架构遵循经典的 Client-Server 架构,并在此基础上构建了高度可扩展、高可用的分布式系统。 它主要由两个核心部分组成: Nacos Server 和 Nacos Client。

一、 Nacos 整体架构概览

可以用以下简化图示来概括 Nacos 的架构:

+---------------------+       +---------------------+
|     Nacos Client    | <----> |     Nacos Server    |
+---------------------+       +---------------------+
|  - SDK (Java, etc.) |       |  - Config Service   |
|  - Embedded in App  |       |  - Naming Service   |
|  - Config Listener  |       |  - Distro Protocol  |
|  - Service Registry |       |  - Persistent Storage|
|  - Load Balancing   |       |  - Console UI       |
+---------------------+       +---------------------+
      Client Side                 Server Side

                             +---------------------+
                             |  External Database  | (Optional, e.g., MySQL for Cluster)
                             +---------------------+

二、 Client-Server 架构在 Nacos 中的体现

Nacos 架构的核心就是 Client-Server 模式,这种模式将系统划分为两个主要角色:

  • Nacos Server (服务端):

    • 角色: 作为 中心化的服务提供者 和 数据存储中心。 它负责存储和管理配置信息、服务注册信息等关键数据。
    • 职责:
      • 配置管理 (Config Management): 存储、发布、推送配置,提供配置的增删改查、版本管理、灰度发布等功能。 Config Service 模块 负责实现。
      • 服务注册与发现 (Service Discovery): 接收服务实例注册,维护服务实例列表,提供服务发现接口。 Naming Service 模块 负责实现。
      • 数据持久化 (Persistence): 将配置数据和服务注册信息持久化存储,保证数据可靠性。 Persistent Storage (默认 Derby, 生产环境推荐 MySQL) 模块 负责实现。
      • 集群管理与数据一致性 (Cluster & Consistency): 在集群模式下,保证集群节点之间数据的一致性,提供高可用性。 Distro Protocol (Raft) 模块 负责实现。
      • 控制台 (Console UI): 提供 Web 控制台界面,方便用户管理配置、服务、集群等。 Console UI 模块 负责实现。
      • 接收客户端请求: 监听客户端的配置获取、配置监听、服务注册、服务发现等请求。
      • 推送配置变更: 主动将配置变更信息推送给监听该配置的客户端。
  • Nacos Client (客户端):

    • 角色: 作为 服务消费者 和 配置信息获取者。 通常以 SDK 的形式嵌入到应用程序中。
    • 职责:
      • 配置获取 (Config Fetching): 从 Nacos Server 获取应用程序所需的配置信息。
      • 配置监听 (Config Listening): 监听配置变更事件,当配置发生变化时,客户端能够及时收到通知并更新本地配置。
      • 服务注册 (Service Registration): 将自身服务实例信息注册到 Nacos Server,以便其他服务能够发现和调用。
      • 服务发现 (Service Discovery): 从 Nacos Server 查询所需服务的实例列表,并进行负载均衡选择。
      • 负载均衡 (Load Balancing): 在客户端实现负载均衡策略,选择合适的服务实例进行调用。
      • 健康检查 (Health Check - 客户端侧): 客户端可以进行本地健康检查,并向 Nacos Server 汇报实例健康状态。
      • SDK (Software Development Kit): Nacos 提供多种语言的 SDK (例如 Java, Go, Python 等),方便应用程序集成 Nacos 功能。

三、 Client-Server 交互流程

Nacos Client 和 Server 之间的交互主要通过以下几种方式体现 Client-Server 架构:

  1. 客户端发起请求 (Client Request):

    • 配置获取请求 (Get Config): 客户端应用程序启动时,或者需要动态获取配置时,会向 Nacos Server 发送 HTTP GET 请求,请求获取指定的配置信息 (dataId, group, tag)。
    • 配置监听请求 (Listen Config): 客户端应用程序为了实时感知配置变更,会向 Nacos Server 建立长连接 (Long Polling 或 gRPC Stream),注册配置监听器,并发送监听请求。
    • 服务注册请求 (Register Instance): 服务提供者应用启动时,会将自身服务实例信息 (IP, 端口, 元数据等) 通过 HTTP POST 或 gRPC 请求注册到 Nacos Server。
    • 服务注销请求 (Deregister Instance): 服务提供者应用下线时,会向 Nacos Server 发送 HTTP DELETE 或 gRPC 请求注销服务实例。
    • 服务心跳上报 (Instance Heartbeat): 服务提供者应用会定期向 Nacos Server 发送心跳请求,汇报实例的健康状态。
    • 服务发现请求 (Get Instances): 服务消费者应用需要调用其他服务时,会向 Nacos Server 发送 HTTP GET 或 gRPC 请求,查询目标服务的可用实例列表。
  2. 服务端处理请求 (Server Processing):

    • 接收和解析请求: Nacos Server 的 Config Service 和 Naming Service 模块负责接收和解析客户端发送的各种请求。
    • 数据查询和处理: 服务端模块会根据请求类型,查询持久化存储 (数据库或内存缓存) 中的配置数据或服务实例信息,并进行相应的处理,例如:
      • 配置获取: 从存储中检索配置数据,并返回给客户端。
      • 配置监听: 维护配置监听器列表,当配置变更时,推送变更通知给监听器。
      • 服务注册: 将服务实例信息存储到注册中心,并更新服务实例列表。
      • 服务发现: 从注册中心检索服务实例列表,并返回给客户端。
    • 数据持久化: 服务端模块会将配置数据和服务注册信息持久化存储到数据库中。
    • 集群数据同步: 在集群模式下,服务端模块还需要负责集群节点之间的数据同步,保证数据一致性。
  3. 服务端返回响应 (Server Response):

    • 配置响应 (Config Response): 服务端会将请求的配置内容 (例如文本、JSON、YAML) 通过 HTTP 响应返回给客户端。
    • 服务实例列表响应 (Instance List Response): 服务端会将服务实例列表 (包含 IP, 端口, 元数据等信息) 通过 HTTP 响应返回给客户端。
    • 状态响应 (Status Response): 对于注册、注销、心跳等请求,服务端会返回状态码和响应信息,表示操作是否成功。
    • 推送通知 (Push Notification): 当配置发生变更时,服务端会主动向已注册监听器的客户端推送配置变更通知 (通过长连接或 gRPC Stream)。

四、 Client-Server 架构的优势在 Nacos 中体现

  • 职责分离 (Separation of Concerns): Client 和 Server 角色职责明确,Server 专注于数据管理和服务提供,Client 专注于服务消费和配置获取,降低了系统复杂性,提高了可维护性。
  • 集中管理 (Centralized Management): Nacos Server 作为中心化的管理节点,集中管理配置信息和服务注册信息,方便统一管理和运维。
  • 可扩展性 (Scalability): Nacos Server 可以通过集群部署来提高可用性和扩展性,Client 可以水平扩展,适应不同的应用规模。
  • 灵活性 (Flexibility): Client-Server 架构允许 Client 和 Server 独立演化和升级,提供了更大的灵活性。
  • 易于集成 (Easy Integration): Nacos Client 以 SDK 的形式提供,易于集成到各种应用程序中。

总结

Nacos 的整体架构是典型的 Client-Server 架构。 Nacos Server 作为中心化的服务提供者和数据存储中心,负责配置管理、服务注册与发现等核心功能。 Nacos Client 以 SDK 的形式嵌入到应用程序中,负责从 Server 获取配置、监听配置变更、注册服务、发现服务等。 Client 和 Server 之间通过 HTTP 或 gRPC 等协议进行通信,实现配置数据和服务信息的交互。 这种 Client-Server 架构使得 Nacos 结构清晰、职责明确、易于扩展和维护,是构建分布式配置管理和服务发现系统的有效架构模式。

从0开始搭建微服务架构第三章整合Nacos注册中心 nacos注册中心安装 阅读详情

相关推荐

Dubbo+Spring Boot+Nacos整合实战:构建高性能微服务架构

在微服务架构中,服务发现与远程过程调用(RPC)是核心基础组件。其原理在于通过注册中心实现服务的自动注册与发现,解耦服务提供者与消费者。Dubbo作为一款高性能的Java RPC框架,提供了强大的服务治理能力。结合Spring Boot的快速开发特性和Nacos作为一体化服务发现与配置管理中心,能够显著提升微服务架构的**简化配置**与**动态治理能力**。这种组合方案尤其适用于需要高并发、低延迟通信的业务场景,例如电商交易、实时数据处理等。通过本文,您将掌握如何将三者无缝整合,构建一个配置简洁、易于运维的

weixin_30555515的博客 315

[Nacos] Nacos Client获取所有服务和定时更新Client端的注册表 (三)

Nacos Client源码之Nacos Client获取所有服务和定时更新Client端的注册表

959 5554

Nacos配置加密插件机制深度解析:从SPI架构到生产实践

在微服务架构中,配置中心作为核心组件,其存储的敏感信息(如数据库密码、API密钥)的安全防护至关重要。配置加密技术通过将明文信息转换为密文,从根源上防止数据泄露,是保障系统安全的基础防线。其核心原理通常基于对称加密算法(如AES),结合密钥管理体系,在配置的存储与传输过程中实现端到端保护。这项技术的价值在于为分布式系统的配置管理提供了企业级的安全保障,尤其适用于金融、政务等对数据安全要求极高的应用场景。本文聚焦于Nacos配置中心,深入剖析其基于SPI(服务提供者接口)的插件化加密架构,详解其如何通过可插拔

weixin_30340617的博客 459

SpringCloudAlibaba之nacos

同一个服务会存在多个节点;一部分节点的服务器存于上海,一部分节点的数据存于广州等,每个节点都属于特定的区域或者机房内(也可简称本地集群服务器)。

weixin_43054590的博客 2177

Alibaba Sentinel - 集群流量控制

集群流控可以解决流量不均匀导致总体限流效果不佳的问题。假设集群中有10台机器,我们给每台机器设置单机限流阈值为10QPS,理想情况下整个集群的限流阈值就为100QPS。不过实际情况下流量到每台机器可能会不均匀,会导致总量没有到的情况下某些机器就开始限流。因此仅靠单机维度去限制的话会无法精确地限制总体流量。而集群流控可以精确地控制整个集群的调用总量,结合单机限流兜底,可以更好地发挥流量控制的效果。集群流控客户端,用于向所属TokenServer通信请求token。...

雨后是冰雹 2677

Nacos配置安全实践:使用Vault动态管理数据库密码

在微服务架构中,配置管理是核心环节,而敏感信息如数据库密码的保护更是安全的重中之重。传统的明文或简单加密存储方式存在密钥管理难题,安全链条存在短板。现代安全实践倡导凭据托管思想,通过专业的凭据管理系统实现敏感信息的集中管理、权限控制和自动轮转。其技术价值在于将密码等凭据从应用环境中剥离,交由高安全等级系统管理,从源头降低泄露风险。这一方案广泛应用于金融、政务及高安全要求的互联网场景,尤其适用于Nacos这类配置中心服务端。本文以HashiCorp Vault为例,结合Nacos配置,详解如何通过启动脚本集成

weixin_34302561的博客 344

nacos-client 拆开一看只有 6 个包,但 ClientWorker 一个类就占了 1800 行:客户端整体架构拆解

nacos-client 在后台启动了至少 6 个线程:一个心跳发送线程、一个配置拉取线程、一个 gRPC 连接管理线程、一个 UDP 推送接收线程、一个本地缓存更新线程、一个重连检测线程。你以为你写的是一个普通的 SDK 调用,实际上你启动了一个后台常驻的小型服务。在 Nacos 1.x 里,ClientWorker 使用 HTTP 长轮询做配置监听。接口层定义"你能做什么",业务层决定"怎么做",通信层管"怎么连",基础层管"公共能力"。你注册的 Listener 不是被"调用"的,而是被"通知"的。

真实的菜的博客 316

Nacos-Client服务注册

前言 通过Nacos官方文档,我们可以先了解一个大概,本文主要讲客户端是如何将服务注册到Nacos中的! 不难发现客户端注册到Nacos中是通过Http请求的方式,将客户端数据注册到Nacos中的,那么接下来我们刨根问底来拿捏下源码级别的注册逻辑! 依赖 客户端依赖 <!--注册中心客户端--> <dependency> <groupId>com.alibaba.cloud</groupId>

程序员劝退师的博客 4192

Nacos 2.x 源码深度解析 (一):架构整体全貌 —— 核心模块划分与版本演进

这是所有 gRPC 开发的起点。你需要定义好客户端和服务端之间"说什么语言"。首先是需要先编写。

于云原生深处,追寻架构与代码的优雅 815

Nacos 配置中心 Client 端源码分析

跟踪 PropertySourceLocator 源码,发现 PropertySourceLocator 只是一个接口类,PropertySourceLocator 的唯一实现类是 NacosPropertySourceLocator 类,NacosPropertySourceLocator 肯定和 Nacos 配置中心的加载有着很大的关系,那 NacosPropertySourceLocator 何时被加载的?欢迎提出建议及对错误的地方指出纠正。

weixin_42118323的博客 1912

面试全系列之【微服务】之Nacos

服务注册发现:客户端注册 + 心跳保活 + 服务端健康检查 + 推送 / 本地缓存 + Distro 最终一致。配置管理:集中存储 + 三级缓存 + 长连接实时推送 + Raft 强一致。高可用:集群部署 + 混合一致性协议 + 客户端本地缓存容灾。

七叔的博客 211

Python配置Nacos,并实现服务的注册与配置的读取

本文将介绍如何使用Python配置Nacos,并实现服务的注册与配置的读取。我们将基于nacos_config.py、nacos_client.py和main.py三个文件,详细解析如何集成Nacos到FastAPI应用中。

qq_43252731的博客 2039

Win10离线安装.net framework 3.5全攻略:镜像匹配与DISM命令实战(附错误0x8024402c解决方案)

本文详细解析了在Windows 10系统中离线安装.NET Framework 3.5的完整流程与核心难点。重点阐述了如何精准匹配系统版本与安装镜像,并提供了使用DISM命令进行离线安装的实战步骤。针对常见的错误代码0x8024402c,文章深入剖析了其根源,并给出了系统级的排查与解决方案,特别适合企业内网运维人员参考。

weixin_29299807的博客 657

nacos源码模块功能分析

一、包结构: 1、nacos-address(地址服务器) 2、nacos-api 3、nacos-auth 4、nacos-client 5、nacos-cmdb(元数据管理) 6、nacos-common 7、nacos-config(配置管理) 8、nacos-consistency 9、nacos-console(nacos-server) 10、nacos-core(内核) 11、nacos-distribution 12、nacos-example 13、nacos-istio 14、naco

spark_guo的专栏 1180

6种常用数据分析方法详解:从描述统计到时间序列

数据分析是连接数据与业务决策的桥梁。面对海量数据,掌握描述性统计与对比分析可快速了解现状与差距;相关分析与回归分析能揭示变量间的关联与影响大小;聚类分析用于用户分群,时间序列分析则预测未来走势。这些方法广泛应用于用户画像、销量预测、活动效果评估等场景,是数据分析师和运营人员必备的技能。系统掌握这6种核心方法的使用场景、原理逻辑与实操步骤,能够帮助读者建立完整分析框架,真正用数据驱动业务增长。

weixin_34405354的博客 335

别再搞混了!MATLAB通信仿真中EbN0转SNR的保姆级公式推导与避坑指南

本文深入解析MATLAB通信仿真中EbN0与SNR转换的核心公式,揭示数字仿真与理论系统的关键差异。通过真实案例展示错误参数设置导致的隐蔽问题,并提供完整的参数自查清单和正确实现代码,帮助工程师和学生避免常见错误,确保仿真结果准确可靠。

weixin_28746223的博客 348

Nacos Naming Service 设计原理 && 底层代码 详解

Nacos Naming Service 是阿里巴巴开源的服务发现组件,采用 Client-Server 架构设计,支持临时/持久化实例两种模式。其核心功能包括服务注册、发现、健康检查和负载均衡。临时实例使用 Distro 协议(AP 模型)实现最终一致性,持久化实例采用 Raft 协议(CP 模型)保证强一致性。源码分析显示,注册流程通过 NamingController 接收请求,ServiceManager 处理服务实例,最终由 InstanceOperatorClientImpl 根据实例类型选择不

csdn_tom_168的博客 1444

高通平台Camera sensor bring up!

Qualcomm Camera sensor bring up!0. 准确1. Kernel 底层驱动配置1.1 dtsi1.2 pinctrl2. Chi-Cdk XML 配置2.1 sensormodule2.2 sensor3. CHECK 本文主要针对高通平台SM7250进行描述,当然高通平台可能基本都差不多【第一个项目】 —only for sensor probe sucess. 0....

Understand-image 9239

RPC(3)--基于 Nacos 的服务发现与负载均衡版

提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。nacos架构如下(依赖包:

wbxd 1154

【雷达仿真 | FMCW TDMA-MIMO毫米波雷达信号处理仿真(可修改为DDMA-MIMO)】

1、FMCW叫做调频连续波,调频连续波有步进调频连续波(SFMCW)、线性调频连续波(LFMCW),以及其他非线性调频连续波。LFMCW有锯齿波和三角波等等;锯齿波有恒定调制周期的锯齿波和非恒定周期的锯齿波。Introduction to mmwave sensing:FMCW radars.pdf和The fundamentals of millimeter wave sensors。2、MIMO是多输入多输出(Multiple input Multiple output),也就是多发多收。

【调皮连续波】雷达技术领域知识博主 1万+

ESP-IDF的安装及其在VScode中编译环境的搭建

从安装目录的\Espressif\frameworks\esp-idf-v5.3.2\examples路径中拷贝一个工程到项目中,比如拷贝\get-started下的hello_world文件夹。安装时可能会遇到如下问题,提示:"e:\ssc\software\ESP-IDF\v5.3.2\Espressif\tools\idf-python\3.11.2\python.exe -m pip" is not valid. (ERROR_INVALID_PIP)接着等待安装完成即可,其他步骤同方式1。

Freddy_Ssc的博客 4354

Higress+Nacos 实现 API-to-MCP 全记录(附故障注意事项)

Nacos和Hiress官方文档主要是通过代码配置服务,且其他网站虽然相关操作的教程文章不少,但几乎没有把概念和操作结合起来讲的文章,官方文档还存在:缺少web配置过程/没有条例/不够详细丢失步骤等问题。本文记录将 REST API 转换为 MCP 服务的完整详细流程,回答了配置过程中可能遇到的问题和疑惑,以及踩过的 5 个坑。

wcsgdsg的专栏 909

CAN轴控制流【6041,6040】

【代码】CAN轴控制流【6041,6040】

cfqq1989的博客 1782

深入浅出高性能服务发现、配置框架 Nacos 系列 3 :Nacos客户端初始化流程详解

本文深入剖析了Nacos客户端的初始化流程,详细解析了其核心架构与实现机制。Nacos客户端采用分层架构设计,包含服务发现(NamingService)和配置管理(ConfigService)两大核心模块,通过工厂模式构建实例。初始化过程包括属性解析、服务器管理、工作器创建等关键步骤,支持gRPC和HTTP双协议通信,并实现了长轮询监听、心跳保持、故障转移等核心功能。文章还从源码层面分析了配置监听、安全认证等机制的实现,并针对性能优化提出了配置调整、资源管理、监控建议等实用方案。通过系统性的流程解析,揭示了

油墨香^-^的博客 274

Autosar CAN 网络管理测试用例(3)——Repeat Message Timer 时间测试

Autosar CAN 网络管理测试用例(3)——Repeat Message Timer 时间测试

蚂蚁小兵 2459

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

上一篇: Spring 如何调用 Bean 的初始化方法和销毁方法?
下一篇: Mybatis 的运行原理?
冰糖心书房
博客等级 码龄15年 6013粉丝 690原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰糖心书房

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值