Skip to content

入门:Nacos 定义、发现+配置合一与双模式

基于 Nacos 2.x · 核于 2026-08

速查

  • 定义:Nacos(Naming and Configuration Service)是阿里巴巴开源的服务发现与配置管理平台,把「动态服务发现」和「动态配置管理」合二为一,是 Spring Cloud Alibaba 核心、中国 Spring Cloud 微服务事实标准。
  • 两大核心能力:①服务发现(服务注册、健康检查、订阅推送、AP/CP 双模式);②配置中心(DataId/Group/命名空间三级模型、动态推送、灰度发布、历史回滚)。一个 Nacos 顶 Eureka + Spring Cloud Config 两套。
  • 命名服务(Naming):服务以「服务名 + 实例列表」注册,调用方按服务名查实例;客户端 SDK 订阅服务,实例上下线时 Nacos 推送变更(push 模型),不必轮询。
  • 配置管理(Config):配置以「命名空间 + Group + DataId」三级定位(如 public 命名空间 + DEFAULT_GROUP + order-service-dev.yaml),客户端长轮询拉取,配置变了秒级推送,支持灰度发布(按 IP/集群)与历史版本回滚。
  • AP/CP 双模式:服务发现默认 AP(Distro 协议,节点对等,高可用优先,临时实例主动报心跳);配置存储用 CP(Raft 协议,强一致,持久化到 MySQL)。可按需切换服务发现的模式。
  • 临时实例 vs 永久实例临时实例(ephemeral=true,默认)— 客户端主动报心跳,不报即摘除,AP 模式;永久实例(ephemeral=false)— Nacos 主动探活,CP 模式,删了也留在目录(如数据库地址)。
  • 健康检查:临时实例靠客户端主动上报心跳(默认 5s 一次,15s 不报标不健康,30s 不报摘除);永久实例靠 Nacos 服务端主动探活(HTTP/TCP)。默认是临时实例主动上报。
  • 命名空间(Namespace):逻辑隔离单元,常用于环境隔离(dev/test/prod)或多租户。Group 用于配置分组(业务线/模块)。DataId 是具体配置集(如 order-service.yaml)。
  • Spring Cloud Alibabaspring-cloud-starter-alibaba-nacos-discovery + spring-cloud-starter-alibaba-nacos-config 两个 starter,加依赖 + 几行配置即接入,是国内 Spring Cloud 微服务主流。
  • 与 Consul 区别:Nacos(AP/可切 CP,主动上报,配置中心原生,中国标准)/ Consul(CP,反向探,裸 KV,国际)。配置中心与生态是主要分野。
  • 进阶顺序服务发现与配置管理Spring Cloud 中国实践参考

一、Nacos 是什么:发现 + 配置合一

微服务架构需要两个基础设施:①注册中心(服务发现);②配置中心(动态配置)。传统方案常拆两套——Eureka(注册)+ Spring Cloud Config(配置),或 Consul(注册)+ 外挂配置中心。Nacos 把这两者合一:

   服务 A 启动

      ├──→ Nacos Naming(注册中心)
      │      服务名: order-service
      │      实例: [{ip:10.0.0.5, port:8080}, ...]
      │      健康检查: 客户端主动报心跳

      └──→ Nacos Config(配置中心)
             命名空间: dev
             Group: ORDER_GROUP
             DataId: order-service.yaml
             配置: {db.host: 10.0.0.100, ...}
  • Naming(命名服务):服务以「服务名 + 实例列表」形式注册。调用方按服务名查实例(或订阅推送),客户端负载均衡选一个调用。
  • Config(配置管理):配置以「命名空间 + Group + DataId」三级定位。客户端启动时拉取,运行时长轮询监听变化,配置变了 Nacos 秒级推送,无需重启。
  • 合一的好处:一个组件、一套运维、一个控制台,比拆两套简单。这是 Nacos 在中国流行的核心理由——开发者只需认识一个 Nacos,就能搞定发现与配置。

一句话:Nacos 是 AP 优先的服务发现 + 原生配置中心,中国 Spring Cloud 事实标准。

二、AP/CP 双模式:按需切换

Nacos 的服务发现支持两种一致性模式,按实例类型自动选:

模式协议适用特点
AP(默认)Distro临时实例(ephemeral=true)节点对等,每个节点都能写,最终一致;高可用优先,分区时各节点都能注册
CPRaft永久实例(ephemeral=false)Leader 写、过半提交,强一致;分区时少数派不可写
  • 临时实例走 AP:大多数微服务实例是临时的(容器/弹性伸缩),用 AP 保证注册高可用(即使部分 Nacos 节点故障也能注册),容忍短暂不一致(最终一致)。
  • 永久实例走 CP:永久实例(如数据库、消息队列地址,不会频繁上下线)用 CP 保证强一致——所有节点看到同样的永久实例列表。
  • 自动判断:实例注册时指定 ephemeral 字段,Nacos 自动路由到对应模式。默认 ephemeral=true(临时/AP)。
  • 与 Consul 对比:Consul 目录统一 CP(Raft);Nacos 默认 AP,按需 CP,灵活性更高。

三、健康检查:主动上报为主

Nacos 的健康检查方式因实例类型而异:

  • 临时实例(默认)— 客户端主动上报心跳:客户端 SDK 每 5s 向 Nacos 发一次心跳(beat)。15s 不发标 不健康(仍可查但不推荐),30s 不发自动摘除。这与 Consul 默认反向探相反——Nacos 让服务「自己说我活着」,适合「服务最清楚自己状态」。
  • 永久实例 — Nacos 主动探活:服务端周期性探活(HTTP/TCP,类似 Consul),探不到标不健康,但不自动摘除(永久实例即使挂了也留目录,因为可能是预期维护)。
  • 为什么默认主动上报:微服务实例动态、生命周期短,主动上报比服务端反向探更轻量(不用 Nacos 维护大量探活任务),且客户端最清楚自己是否健康(如队列消费者卡死,外部探不出来)。

四、配置中心:三级模型 + 动态推送

Nacos 配置中心用「命名空间 + Group + DataId」三级模型组织配置:

命名空间(Namespace)— 环境隔离(dev/test/prod)或多租户
  └── Group — 配置分组(业务线/模块,如 ORDER_GROUP)
        └── DataId — 具体配置集(如 order-service.yaml)
              └── 配置内容(YAML/Properties/JSON)
  • 命名空间:默认 public。常用于环境隔离——dev/test/prod 各一个命名空间,互不干扰。也用于多租户(每个租户一个)。
  • Group:默认 DEFAULT_GROUP。用于逻辑分组,如按业务线(ORDER_GROUPPAYMENT_GROUP)或按模块。
  • DataId:具体配置集,常用 ${服务名}-${profile}.${后缀}(如 order-service-dev.yaml)。
  • 动态推送:客户端启动拉取配置后,通过长轮询(long polling)监听变化。配置在控制台改了,Nacos 立即通知客户端,秒级生效,无需重启。配合 @RefreshScope 让 Spring Bean 重新注入新值。
  • 灰度发布:可按 IP 或集群(cluster)灰度推送配置——只让部分实例先拿到新配置,验证后再全量。
  • 历史版本回滚:Nacos 保留配置每次修改的历史版本,控制台一键回滚到任意历史版本(配错了能快速恢复)。

五、Nacos vs Consul:核心分野

维度NacosConsul
出品方阿里巴巴HashiCorp
一致性AP 默认(可切 CP)CP(Raft)
健康检查主动上报为主(临时实例)反向探为主(Agent 探服务)
配置中心原生(三级模型 + 灰度 + 回滚)裸 KV(无灰度/回滚原语)
DNS 接口(端口 8600)
多 DC需集群联邦原生(WAN Gossip)
Spring CloudAlibaba(中国事实标准)国际
典型场景中国 Spring Cloud国际/多 DC/Go
  • 配置中心是关键差异:Nacos 是原生配置中心(三级模型 + 灰度 + 回滚),Consul 是裸 KV 要团队自拼。这是国内项目选 Nacos 的主因。
  • 生态地域:Nacos 是 Spring Cloud Alibaba,中国事实标准;Consul 是国际派。选型常看团队地域与既有生态。

下一步

理解了 Nacos 的定位与双模式后,下一步深入服务发现与配置管理——注册/健康检查/订阅推送实战、配置三级模型、动态推送/灰度/回滚,以及Spring Cloud 中国实践——Spring Cloud Alibaba 集成与一致性协议详解。