Nacos 核心机制(注册发现 + 配置中心)

microservice ✅ mastered nacos-core · microservice · nacos · spring-cloud · registry · config-center · ap-cp · raft · distro · heartbeat

TL;DR(30 秒扫完)

  • 定位:Dynamic Naming and Configuration Service,阿里开源,Spring Cloud Alibaba 核心
  • 两大功能:服务注册发现 + 配置中心
  • AP/CP 双模式(最大亮点):临时实例 Distro(AP)+ 永久实例 Raft(CP)
  • 心跳续约:客户端 5s 发一次,Nacos 判 15s 不健康、30s 自动剔除
  • 服务发现:本地缓存 + 长轮询(1.x)/ gRPC 长连接(2.x)监听变化
  • 集群部署:至少 3 节点,外置 MySQL,端口 8848(HTTP)+ 9848/9849(gRPC)

关键结论

结论 ANacos 最大差异化是 AP/CP 双模式,通过实例类型切换
结论 B临时实例靠心跳续约(推),永久实例靠服务端 check(拉)
结论 C客户端本地缓存是关键——Nacos 集群挂了服务还能通信
结论 D2.x 用 gRPC 长连接替代 1.x 的 HTTP 长轮询,性能提升 10 倍

完整讲解(费曼四步)

STEP 1 · 概念

Nacos(Naming and And Configuration Service)是阿里开源的动态服务发现和配置中心,把注册中心和配置中心合二为一。

STEP 2 · 大白话

Nacos 像公司前台 + 公告板:
  • 前台(注册中心):员工(服务实例)来了登记,走的时候签退;其他员工想知道某个同事在哪,来前台问
  • 公告板(配置中心):公司政策、通知统一贴在公告板,变了主动推送给大家

STEP 3 · 底层

两大功能: 1. 服务注册与发现 服务注册流程(4 步):
  • 启动上报:服务启动时通过 SDK 调 NamingService.registerInstance(),HTTP PUT /nacos/v1/ns/instance(2.x 是 gRPC),把 IP/端口/权重/metadata 上报给 Nacos
  • 集群同步:临时实例走 Distro 协议异步复制到其他节点(AP 最终一致);永久实例走 Raft(CP 强一致)
  • 心跳续约:客户端每 5 秒发一次心跳 /nacos/v1/ns/instance/beat;Nacos 判 15 秒不健康、30 秒自动剔除
  • 优雅下线:服务关闭时调 DeregisterInstance 主动反注册,避免被误杀
服务发现流程(3 步):
  • 首次拉取:消费端启动时调 getInstances() 或 subscribe(),HTTP GET /nacos/v1/ns/instance/list?serviceName=xxx 拿到健康实例,本地缓存这份列表
  • 监听变化:1.x 用长轮询(30s 挂起等待变化);2.x 用 gRPC 长连接主动 push
  • 负载均衡调用:消费端从本地缓存里按轮询/随机/权重/一致性哈希选实例发起实际调用
2. 配置中心
  • 三级结构:Namespace(环境隔离,dev/test/prod)→ Group(业务分组)→ DataId(具体配置文件)
  • 多格式:properties/yml/json/toml
  • 热更新:@NacosValue(autoRefreshed=true) 或 Spring Cloud 的 @RefreshScope
  • 监听推送:1.x HTTP 长轮询(30s),2.x gRPC 长连接
AP/CP 双模式(最大亮点):
实例类型一致性协议健康检查用途
临时实例(默认)APDistro(异步复制)客户端心跳推无状态微服务实例
永久实例CPRaft/JRaft(强一致)服务端主动 check数据库主库、有状态节点
客户端本地缓存(关键):
  • 客户端本地缓存 Nacos 数据(文件缓存)
  • Nacos 集群挂了仍能读到最近一次的服务列表,实现降级
  • 但新的实例变化感知不到、健康状态不更新
版本演进:
  • 1.x:HTTP 长轮询拉取配置,UDP 推送服务列表
  • 2.x:改为 gRPC 长连接(推送更快、开销更小),性能提升 10 倍;支持 Raft/JRaft 实现 CP 一致性;新增端口 9848/9849
  • 3.x:加入 Kubernetes 兼容、多租户治理、AI 推理服务注册
生产部署建议:
  • 至少 3 节点集群
  • 外置 MySQL 存元数据(不用内嵌 Derby)
  • 客户端配置多个 Nacos 地址
  • 监听端口:8848(HTTP)+ 9848/9849(gRPC)

STEP 4 · 简化

口诀:Nacos = 注册 + 配置二合一;临时实例 AP(Distro)+ 永久实例 CP(Raft);心跳 5/15/30 三档;客户端本地缓存兜底。

常见误区

把注册中心功能说成"配置中心"(表述混乱)
注册中心管实例,配置中心管配置,是两个独立功能
只说功能不讲"是什么"
Nacos 全称 Dynamic Naming and Configuration Service
不知道 AP/CP 双模式
这是 Nacos 相比 Eureka(纯 AP)和 ZK(纯 CP)最大的差异化
"Nacos 挂了服务全挂"
客户端本地缓存兜底,服务还能通信,只是新变化感知不到

延伸追问

Nacos 是 AP 还是 CP?
要点:都支持,取决于实例类型。临时实例用 Distro(AP),永久实例用 Raft(CP)。这是 Nacos 相比 Eureka/Zookeeper 的独特之处。
Nacos 如何做高可用部署?
要点:至少 3 节点集群,客户端配置多地址;依赖 MySQL 或内嵌 Derby(生产必须外置 MySQL);用 gRPC 端口(8848 主端口 + 2 个偏移端口 9848/9849)。
Nacos 和 Eureka 有什么区别?
要点:Eureka 是纯 AP,Nacos 是 AP/CP 双模式;Eureka 无配置中心,Nacos 有;Eureka 客户端有自我保护机制,Nacos 通过健康检查;Nacos 支持配置中心,功能更全。
Nacos 集群挂了,服务还能继续通信吗?
要点:可以,客户端本地有缓存,服务列表最近一次的快照能读;已建立的连接不受影响;只是新的实例变化感知不到,健康状态也不会更新。
Nacos 1.x 和 2.x 的服务发现机制有什么区别?
要点:1.x 用 HTTP 长轮询(30s),2.x 用 gRPC 长连接推送,性能提升 10 倍;2.x 支持 Raft 强一致,1.x 只支持 Distro;2.x 端口多 9848/9849 两个 gRPC 端口。

速查表

Nacos = 注册中心 + 配置中心(Spring Cloud Alibaba 核心)
两大功能:服务注册发现 + 配置中心(Namespace/Group/DataId)
AP/CP 双模式:临时实例 Distro(AP)+ 永久实例 Raft(CP)
心跳机制:5s 发一次 → 15s 判不健康 → 30s 自动剔除
服务发现:本地缓存 + 长轮询(1.x)/ gRPC 推送(2.x)
热更新:@NacosValue(autoRefreshed) / @RefreshScope
部署:3 节点 + 外置 MySQL + 端口 8848/9848/9849
演进:1.x HTTP 长轮询 → 2.x gRPC 长连接(10x)→ 3.x K8s 兼容

Anki 候选卡片

Q: Nacos 全称和定位?
A: Dynamic Naming and Configuration Service,注册中心 + 配置中心二合一,Spring Cloud Alibaba 核心
Q: Nacos AP/CP 双模式怎么切换?
A: 临时实例(默认)走 Distro 协议(AP,异步复制);永久实例走 Raft/JRaft(CP,强一致)
Q: Nacos 临时实例的心跳机制具体数字?
A: 客户端每 5s 发一次心跳;Nacos 判 15s 不健康、30s 自动剔除
Q: Nacos 服务发现流程 3 步?
A: 首次拉取(getInstances/subscribe)→ 监听变化(1.x 长轮询 30s 或 2.x gRPC push)→ 负载均衡调用
Q: Nacos 客户端本地缓存为什么重要?
A: Nacos 集群挂了仍能读缓存,服务发现降级不断;只是新的变化感知不到
Q: Nacos 1.x vs 2.x 区别?
A: 1.x HTTP 长轮询 + UDP 推送;2.x gRPC 长连接(10x 性能提升)+ 支持 Raft CP;2.x 端口多 9848/9849
Q: Nacos 生产部署要点?
A: 至少 3 节点 + 外置 MySQL(不用 Derby)+ 客户端配多地址 + 端口 8848(HTTP)+ 9848/9849(gRPC)
Q: Nacos 配置中心三级结构?
A: Namespace(环境隔离)→ Group(业务分组)→ DataId(具体配置文件);热更新用 @NacosValue(autoRefreshed) 或 @RefreshScope

关联题目

  • [x] 《什么是Nacos,主要用来作什么?》—— 2026-09-27 Round 1 Q4, 评分 ⭐⭐⭐
  • [x] 《Nacos的服务注册和服务发现的过程是怎么样的?》—— 2026-09-27 Round 1 Q6, 评分 ⭐

关联知识

注册+配置二合一;AP/CP 双模式(Distro/Raft);心跳 5/15/30 三档
✦ 记 忆 口 诀 ✦
注册+配置二合一 / 临时AP+永久CP / 心跳 5s-15s-30s
关键可视化
暂无可视化
知识关系

⬆️ 前置(Prerequisite)

暂无

🔄 延伸(Extends)

暂无

⚡ 对比(Contrast)

暂无
🎯 概念 📏 规则 ⚠️ 误区 🔍 追问 ✨ 口诀 共 0 张卡,点击翻面