Nacos架构最全详解(图文全面总结)

Nacos是大型架构的必备中间件,也是微服务的核心,下面我重点详解Nacos架构@mikechen

Nacos

Nacos,全程是“Dynamic Naming and Configuration Service”,是Spring Cloud Alibaba核心组件。

Nacos架构最全详解(图文全面总结)-mikechen

Nacos,是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

 

Nacos架构

Nacos架构,如下图所示:

Nacos架构最全详解(图文全面总结)-mikechen

+---------------------+         +-------------------+
|     Nacos Console   | <-----> |  Nacos Cluster     |
+---------------------+         |  [Naming + Config] |
                                |     + Core Module  |
+--------------+                +-------------------+
|  Service A   | <--注册/发现--> Nacos Server Node1
|  Service B   | <--拉取配置-->  Nacos Server Node2
|  Service C   | <--心跳上报-->  Nacos Server Node3
+--------------+                +-------------------+
                                  |
                             +----------+
                             |  MySQL   | (共享存储)
                             +----------+

控制层

这一层是用户与Nacos交互的界面,通常是一个Web控制台,它提供直观的图形化操作界面。

注册的服务实例信息,包括健康状态、IP地址、端口等,以及命名空间、用户权限等管理功能。

配置列表,包括:Data ID、Group、Namespace以及配置内容。

并且, 控制层通过调用Nacos的服务层API,来执行相应的管理操作。

 

服务层

这是Nacos的核心业务逻辑层,对外提供统一的API接口,处理来自Nacos客户端和控制层的各类请求。

服务层的主要职责包括:

  • 服务注册与发现: 接收服务实例的注册请求,维护服务实例列表,并响应服务查询请求。
  • 配置管理: 处理配置的发布、查询、订阅和更新请求。
  • 元数据管理: 存储和管理服务及配置的各种附加信息。
  • 集群管理: 协调Nacos服务器集群内部的数据同步和状态维护。
  • 认证与授权: 对访问Nacos的客户端和用户进行身份验证和权限控制。

数据层

数据层:是Nacos存储所有服务和配置数据的基础,它负责数据的持久化和一致性保证。

数据层确保了即使Nacos服务器重启或部分节点故障,关键的服务和配置数据也能得到保存和恢复。

 

Nacos核心模块

Nacos核心模块,如下图所示:

Nacos架构最全详解(图文全面总结)-mikechen

服务注册与发现

主要会包含:

实例注册:通过 REST 接口或 SDK 将服务注册到 Nacos。

服务发现:客户端可通过 Nacos 拉取服务列表,负载均衡调用。

健康检查:服务实例需定期发送心跳,Nacos 会剔除不健康实例。

实例元数据:支持添加 version、env、region 等信息,实现多版本隔离。

配置中心

配置结构:通过 Namespace + Group + DataId 三元组唯一标识配置。

推送机制:基于长轮询(或 gRPC 推送)监听配置变更。

多格式支持:支持 Properties、YAML、JSON、XML 等格式。

动态刷新:支持 Spring Cloud 中的 @RefreshScope@NacosValue 实现自动刷新。

核心功能层

统一配置处理器、服务调度器、推送调度器。

管理服务元数据、缓存与通知机制。

提供任务调度线程池、事件中心与订阅模型。

评论交流
    说说你的看法