面试记录 2026-09-27
题目:什么是Nacos,主要用来作什么?
难度:low
标签:spring/cloud, general/knowledge
评分:⭐⭐⭐☆☆(3/5)
我的回答
Nacos 是 Spring Cloud 阿里巴巴下的一个组件,它的主要功能是配置中心以及注册中心。作为配置中心,将我们所有的微服务注册到 Nacos 上,相互之间进行可以进行通信,有对应的标识。另外,Nacos 一个很常规的作用,用于就是配置中心,我们的配置,服务器的各种配置,可以在 Nacos 上进行配置管理,可以通过 Nacos 实现热更配置。
点评
优点:
- 定位准确:阿里开源的组件,两大核心功能 = 注册中心 + 配置中心
- 说出配置中心的核心价值:热更新配置,无需重启服务
不足:
- 第一句把两个功能说反了:把"注册中心"说成"配置中心",语义上混淆了
- 只讲功能不讲"是什么":Nacos 全称 Dynamic Naming and Configuration Service,命名 + 配置两个词,回答里没点出来
- 缺关键设计特性:
- AP/CP 双模式:临时实例用 AP(Raft/Distro),永久实例用 CP(JRaft)
- 临时 vs 永久实例:临时实例靠心跳续约,节点故障自动摘除;永久实例靠持久化
- 命名空间(Namespace)和分组(Group):环境隔离和生产多业务隔离
- 配置热更新:
@RefreshScope 或 @NacosValue(autoRefreshed=true)
- 配置监听推送:Nacos 2.x 用长轮询(1.x 短轮询),底层是 gRPC
- 没提到竞品对比:Eureka(AP,仅注册)、Zookeeper(CP,可用但设计复杂)、Consul(HTTP+健康检查)
补充:
- 服务注册/发现:注册实例、心跳续约、健康检查、客户端/服务端两种发现模式
- 配置管理:集中管理配置,多环境(dev/test/prod)、多格式(properties/yml/json)、灰度发布
- 动态 DNS(部分场景):Nacos 2.x 支持自定义 DNS
- AP/CP 双模式:Nacos 2.x 底层用 Raft/JRaft 实现 CP,Distro 协议实现 AP,通过"实例类型"切换
- 一致性模型:临时实例走 Distro(AP,异步复制),永久实例走 Raft(CP,同步复制)
完整讲解
第一部分:知识重点剖析
核心考点定位:考察对 Nacos 定位的清晰认识——它是"注册中心 + 配置中心"二合一的组件,以及 AP/CP 双模式的设计理念。
知识点拆解:
- 定位:Nacos 是阿里开源的动态服务发现、配置和服务中心(Dynamic Naming and Configuration Service),Spring Cloud Alibaba 生态的核心组件。
- 服务注册与发现:
- 客户端模式:服务启动时把自身注册到 Nacos,通过 SDK 拉取服务列表并缓存本地,定期(默认 10s 心跳,15s 判定不健康)
- 服务端模式:Nacos 主动推送给消费端(1.4 版本引入,基于 UDP)
- 配置中心:
- 命名空间(Namespace)→ 分组(Group)→ DataId → Group 层级管理
- 支持热更新:
@NacosValue(autoRefreshed=true) 或 Spring Cloud 的 @RefreshScope
- 1.x 用 HTTP 长轮询(30s),2.x 用 gRPC 长连接推送
- 临时/永久实例:
- 临时实例:AP(Distro 协议,异步复制),适合有生命周期管理的服务实例
- 永久实例:CP(Raft 协议,强一致),适合 DB 主库、消息队列等有状态节点
- AP/CP 双模式:Nacos 通过实例类型决定用哪种一致性,这是它最大的差异化设计
递进:从"是什么"(命名 + 配置二合一)→ "怎么用"(注册 + 配置)→ "怎么保证一致"(AP/CP 双模式)。
第二部分:考察方向与延伸递进
考察方向:
- 深度:Distro vs Raft 一致性协议、临时/永久实例切换
- 广度:与 Eureka(AP-only)、Zookeeper(CP-only)、Consul 的对比
- 应用: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 2.x 相比 1.x 有哪些改进?
- 解答要点:长轮询改为 gRPC 长连接,降低网络开销、支持大流量推送;性能提升 10 倍;支持 Raft/JRaft 实现 CP 一致性;提供 Raft 集群容灾能力。
第三部分:面试者参考回答(300-600 字口语化)
面试官您好,Nacos 是阿里开源的动态服务发现和配置中心(Dynamic Naming and Configuration Service),是 Spring Cloud Alibaba 的核心组件,把注册中心和配置中心合二为一。
两大核心功能:
- 服务注册与发现:微服务启动时把自己注册到 Nacos,其他服务通过 Nacos 拿到可用实例列表;支持临时/永久两种实例,临时实例靠心跳续约(默认 15s 判定不健康自动摘除);
- 配置中心:把配置从代码里抽出来集中管理,通过命名空间/分组/DataId 组织,支持 properties/yml/json 格式;配置变更后自动推送给客户端,配合
@NacosValue(autoRefreshed=true) 或 @RefreshScope 实现热更新,不用重启服务。
Nacos 最大亮点是 AP/CP 双模式:
- 临时实例走 Distro 协议(AP,异步复制),节点挂掉自动摘除,适合无状态服务;
- 永久实例走 Raft/JRaft 协议(CP,强一致),适合数据库主库等有状态节点。
- 这一点上 Nacos 比 Eureka(纯 AP)和 Zookeeper(纯 CP)都灵活。
版本演进:
- 1.x:HTTP 长轮询拉取配置,UDP 推送服务列表;
- 2.x:改为 gRPC 长连接,性能提升 10 倍,支持 Raft 强一致;
- 3.x:加入 Kubernetes 兼容、多租户治理、AI 推理服务注册等。
部署建议:生产至少 3 节点集群,用外置 MySQL 存元数据,客户端配置多个 Nacos 地址;监听端口 8848(HTTP)+ 9848/9849(gRPC)。