Nacos 简介
Nacos(Dynamic Naming and Configuration Service,动态命名与配置服务)是阿里巴巴开源、并已捐给 Apache 基金会的一套平台,把服务发现与配置管理合二为一,常被称作微服务时代的"注册中心 + 配置中心"。
解决什么问题
单体时代,服务地址写死在配置里,配置改动要发版重启。微服务化后实例多、变动频繁,需要一套系统回答两个问题:
- 服务发现:order-service 有 10 个实例在跑,调用方去哪里找、怎么知道谁挂了?
- 配置管理:超时时间、开关、规则想动态调整,能不能改完立即生效、还能回滚?
Nacos 是什么
Nacos 的名字取自 Naming(命名)+ Configuration(配置),一套系统同时提供两类能力,并配一个网页控制台统一查看与运维:
| 能力 | 说明 |
|---|---|
| 服务注册与发现 | 服务启动自动注册,调用方按服务名获取健康实例列表 |
| 动态配置管理 | 集中管理配置,发布后客户端秒级感知,无需重启 |
| 统一控制台 | 网页完成实例上下线、权重调整、配置回滚等操作 |
五大核心能力
官方把 Nacos 的能力归纳为五点,后续章节都围绕它们展开:
- 动态服务发现:注册、注销、查询,实例异常时自动摘除
- 健康检查:临时实例由客户端心跳保活,持久实例由服务端主动探测
- 动态配置管理:发布配置、监听变更、保留历史版本可回滚
- 动态 DNS 服务:以 DNS 方式暴露服务,便于异构系统与网关接入
- 服务元数据管理:服务、集群、实例上可挂键值对,描述版本、机房、灰度标签
使用方式
与 Nacos 打交道有三种入口:
| 入口 | 使用方 | 典型动作 |
|---|---|---|
| 客户端 SDK | 业务应用 | 注册实例、订阅服务、拉取并监听配置 |
| OpenAPI | 脚本、非官方 SDK | 用 HTTP 调注册/查询/配置接口 |
| 网页控制台 | 开发运维人员 | 查看服务、编辑配置、管理命名空间与权限 |
应用场景
- 微服务注册中心:Spring Cloud、Dubbo 应用互相发现,配合客户端做负载均衡
- 配置中心:集中管理开发/测试/生产配置,支持多环境隔离与动态刷新
- 弹性伸缩:实例随流量增减自动注册与摘除,配合网关、容器编排使用
- 异构接入:无 SDK 的语言或存量系统,直接走 OpenAPI 或 DNS 方式接入
与 Spring Cloud Alibaba 的关系
Nacos 是 Spring Cloud Alibaba 的核心成员:spring-cloud-starter-alibaba-nacos-discovery 负责注册发现,nacos-config 负责配置管理,配好 server-addr 即可接入,第 13 章会给出完整示例。
版本说明
本教程以 Nacos 2.x 系列为例(该系列部署最广,客户端走 gRPC 长连接,注册与配置能力更完整);3.x 已重构为模块化架构(naming/config 拆分),但服务、配置的核心模型与用法保持一致。
小结
一句话:Nacos 是"服务发现 + 配置管理"一体化平台,帮微服务解决互相找到、动态调参两大问题。接下来从架构与数据模型讲起,逐步深入到安装、使用与集群部署。