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

Nacos是微服务的核心组件,也是大厂重点考察对象,下面我就重点来详解Nacos原理@mikechen

Nacos

Nacos(Dynamic Naming and Configuration Service),是阿里巴巴开源的动态服务发现、配置管理和服务管理平台。

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

Nacos 是一个兼具服务注册与发现、配置管理能力的平台,在微服务体系中应用十分广泛。

其核心价值在于:一方面帮助服务之间实现动态感知,另一方面帮助配置实现统一管理与动态刷新。

 

Nacos原理

Nacos架构,如下图所示:

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

                +-------------------+
                |   Client SDK      |
                |-------------------|
                | 注册/发现/监听配置 |
                +---------+---------+
                          |
                          |
          +---------------+---------------+
          |                               |
+---------v---------+         +-----------v----------+
|   Naming 模块     |         |    Config 模块       |
|-------------------|         |----------------------|
| 服务注册            |         | 配置管理              |
| 服务发现            |         | 配置监听              |
| 健康检查            |         | 配置推送              |
+---------+---------+         +-----------+----------+
          |                               |
          +---------------+---------------+
                          |
                +---------v---------+
                |   Nacos Core      |
                |-------------------|
                | 一致性协议         |
                | 集群管理           |
                | AP/CP切换         |
                +---------+---------+
                          |
              +-----------+-----------+
              |                       |
      +-------v------+       +--------v-------+
      |   MySQL      |       |   Raft Log     |
      +--------------+       +----------------+

Nacos 最核心的就是:Naming(注册中心)和Config(配置中心)。

 

Nacos 注册中心

Nacos 作为注册中心时,主要承担服务实例的注册、发现和健康管理功能。

服务启动后,会将自身的服务名、IP、端口、权重、元数据等信息注册到 Nacos 中。

Nacos 便保存这些实例信息,并向客户端提供查询接口。

其他服务在发起调用前,可以先从 Nacos 获取目标服务的可用实例列表,再根据负载均衡策略选择其中一个实例进行访问。

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

工作流程,如下:

  1. 服务注册:Provider 启动时,通过 HTTP/gRPC 向任意 Nacos Server 节点注册实例信息。
  2. 心跳保活:临时实例客户端定期上报心跳(默认 5s);持久化实例由服务端主动探测。
  3. 服务发现:Consumer 订阅服务,Server 返回实例列表,后续通过长连接(gRPC)实时推送变更。
  4. 健康检查:不健康实例自动过滤或摘除,支持客户端/服务端双模式。

 

Nacos配置中心

Nacos 作为配置中心时,主要用于集中管理各应用的配置项,如数据库连接信息、缓存参数、线程池设置等。

如下图所示:

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

其原理主要包括配置存储、配置拉取与监听推送三部分。

首先,配置数据会以“Data ID + Group + Namespace”的方式进行组织。

从而实现多环境、多应用、多版本的隔离管理。

客户端启动后,会根据自身标识向 Nacos 请求对应配置并加载到本地。

为了保证配置更新的及时性,客户端还会对指定配置进行监听。

当配置被修改后,Nacos 会通知订阅该配置的客户端。

客户端接收到变更后重新拉取最新配置,并在必要时触发应用内部的动态刷新逻辑。

评论交流
    说说你的看法