Nacos是微服务的核心组件,也是大厂重点考察对象,下面我就重点来详解Nacos原理@mikechen
Nacos
Nacos(Dynamic Naming and Configuration Service),是阿里巴巴开源的动态服务发现、配置管理和服务管理平台。

Nacos 是一个兼具服务注册与发现、配置管理能力的平台,在微服务体系中应用十分广泛。
其核心价值在于:一方面帮助服务之间实现动态感知,另一方面帮助配置实现统一管理与动态刷新。
Nacos原理
Nacos架构,如下图所示:

+-------------------+
| 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 获取目标服务的可用实例列表,再根据负载均衡策略选择其中一个实例进行访问。

工作流程,如下:
- 服务注册:Provider 启动时,通过 HTTP/gRPC 向任意 Nacos Server 节点注册实例信息。
- 心跳保活:临时实例客户端定期上报心跳(默认 5s);持久化实例由服务端主动探测。
- 服务发现:Consumer 订阅服务,Server 返回实例列表,后续通过长连接(gRPC)实时推送变更。
- 健康检查:不健康实例自动过滤或摘除,支持客户端/服务端双模式。
Nacos配置中心
Nacos 作为配置中心时,主要用于集中管理各应用的配置项,如数据库连接信息、缓存参数、线程池设置等。
如下图所示:

其原理主要包括配置存储、配置拉取与监听推送三部分。
首先,配置数据会以“Data ID + Group + Namespace”的方式进行组织。
从而实现多环境、多应用、多版本的隔离管理。
客户端启动后,会根据自身标识向 Nacos 请求对应配置并加载到本地。
为了保证配置更新的及时性,客户端还会对指定配置进行监听。
当配置被修改后,Nacos 会通知订阅该配置的客户端。
客户端接收到变更后重新拉取最新配置,并在必要时触发应用内部的动态刷新逻辑。