Nacos 服务发现与配置管理
候选人小陈在面试阿里中间件团队时,面试官问:"Nacos 的 AP 和 CP 模式有什么区别?什么场景下需要切换到 CP 模式?"
小陈说:"AP 是最终一致,CP 是强一致..." 面试官追问:"那 Nacos 的 CP 模式用的是什么一致性协议?Raft 协议的选主过程是什么?"
小陈说:"好像是 Raft..." 面试官继续追问:"临时实例和永久实例的区别是什么?它们分别适用什么场景?"
小陈支支吾吾答不上来。
面试官又问:"Nacos 配置变更的推送机制是什么?长轮询的原理是什么?"
小陈彻底卡住。
【面试官心理】
这道题我用来测试候选人对 Nacos 架构设计原理的理解深度。Nacos 是 Spring Cloud Alibaba 的核心组件,同时支持服务发现和配置管理。能说出 AP/CP 差异的占 40%,能解释 Raft 协议和临时/永久实例的占 20%,能说清楚配置推送机制的只有 10%。Nacos 是目前生产环境使用最广泛的注册中心和配置中心,能把这些讲清楚的候选人对分布式一致性有较深的理解。
一、Nacos 核心能力 🔴
1.1 Nacos 两大功能
Nacos = Naming(服务发现)+ Config(配置管理)
1.2 Nacos vs Eureka vs Consul
二、Nacos 的 AP/CP 双模式 🔴
2.1 CAP 理论回顾
2.2 AP 模式(默认)
2.3 CP 模式
2.4 何时使用 CP 模式
三、服务注册与心跳机制 🔴
3.1 临时实例(AP 模式)
3.2 永久实例(CP 模式)
3.3 注册表拉取
四、配置变更推送机制 🔴
4.1 客户端长轮询
4.2 服务端短轮询
4.3 长轮询优化:29.7 秒 + 500ms
五、Nacos 集群架构 🟡
5.1 Distro 协议(AP 模式)
Distro 协议特点:
- 分片负责:每个节点只负责部分服务实例的注册
- 读操作本地化:读请求优先在本节点完成
- 写操作分片:写请求发送到对应分片的节点
- 异步同步:注册信息异步同步到其他节点
- 最终一致:不保证强一致性,但保证最终一致
5.2 Raft 协议(CP 模式)
六、常见翻车现场 🔴
❌ 翻车点一:CP 模式下节点故障导致注册失败
❌ 翻车点二:临时实例心跳间隔太长
❌ 翻车点三:长轮询超时配置不当
Nacos 2.x 相比 1.x 使用 gRPC 代替了 HTTP,通信效率更高。但 2.x 需要额外开放 9849 端口用于 gRPC 通信,如果通过 SLB 代理,需要确保端口配置正确。
【面试官心理】
这道题我通常从 AP/CP 双模式开始,逐步深入到 Distro 协议、Raft 协议、临时/永久实例、配置长轮询。能说出 AP/CP 差异的占 40%,能解释 Distro 和 Raft 协议的占 25%,能说清楚配置变更推送机制的只有 10%。Nacos 是目前生产环境使用最广泛的注册中心和配置中心,能把这些讲清楚的候选人对分布式一致性有较深的理解。