Nacos速览
目录
注意
本文最后更新于 2024-08-08,文中内容可能已过时。
一、Nacos 基础概述
1、什么是 Nacos
Nacos 是阿里开源的动态服务发现、配置管理、服务治理平台。 核心两大核心能力:
- 注册中心:微服务服务注册、发现、健康检测、服务上下线
- 配置中心:集中化配置管理、动态配置刷新、多环境配置
2、Nacos 核心作用
- 替代 Eureka、Config 组合
- 一站式解决服务注册+配置中心
- 支持动态扩容、服务自动剔除、配置实时生效
- 轻量、高可用、易部署,SpringCloud 微服务标配
3、Nacos 核心架构角色
- Naming Server:服务注册发现核心
- Config Server:配置管理核心
- 控制台:可视化管理服务、配置、集群
- 客户端:微服务项目引入依赖,对接 Nacos 服务端
二、Nacos 作为注册中心 核心原理
1、服务注册流程
- 微服务项目启动,引入 Nacos 客户端
- 客户端携带服务名、IP、端口、集群名向 Nacos 服务端发起注册
- Nacos 服务端接收请求,存入服务注册表(内存+持久化)
- 服务注册完成,控制台可在线查看在线服务实例
2、服务发现流程
- 消费者服务启动,从 Nacos 拉取服务实例列表
- 本地缓存实例列表,定时增量拉取更新
- 结合 Ribbon/LoadBalancer 做客户端负载均衡
- 按照负载均衡策略,调用目标服务节点
3、心跳机制(面试必考)
- 客户端主动心跳
- 服务注册后,客户端每5秒向 Nacos 服务端发送心跳包
- 告知服务实例健康在线
- 服务端健康检测
- Nacos 服务端默认15秒检测一次实例状态
- 超过30秒未收到心跳 → 标记为不健康
- 超过60秒无心跳 → 自动剔除下线
4、服务剔除模式
- 临时实例:默认,持久化关闭,靠心跳维持,宕机自动剔除
- 持久化实例:永久在线,不会因心跳超时剔除,适合固定部署核心服务
5、AP 模型 🔴
- Nacos 注册中心:AP 架构
- 遵循 CAP 理论:保证可用性、分区容错,舍弃强一致性
- 微服务注册发现更看重高可用,短暂数据不一致可接受
- Nacos 配置中心:CP 架构
- 配置数据必须强一致,宁可不可用也不能配置错乱
- 采用 Raft 协议保证集群数据强一致
Nacos 注册中心是AP,优先保证服务注册发现高可用;配置中心是CP,通过Raft保证配置数据强一致性。
6、集群环境与命名空间、分组
(1)命名空间 Namespace
作用:环境隔离
- 默认 public
- 可划分 dev、test、prod 环境,隔离服务和配置
(2)分组 Group
作用:项目/业务隔离
- 同一命名空间下,不同业务服务分组隔离
- 默认分组:DEFAULT_GROUP
(3)集群 Cluster
作用:同城就近调用
- 同一机房、同一集群服务优先调用,减少跨机房延迟
- 实现异地容灾、机房故障隔离
三、Nacos 作为配置中心核心原理
1、核心优势
- 集中管理所有微服务配置
- 多环境、多项目配置隔离
- 动态刷新配置,无需重启服务
- 配置版本回溯、灰度发布、配置监听
2、配置核心概念
- DataId:配置文件名,全局唯一
- Group:配置分组,默认 DEFAULT_GROUP
- Namespace:环境隔离
- 配置快照:本地缓存配置,防止服务端宕机无配置可用
3、配置加载优先级
本地配置 → Nacos 远程配置,远程配置覆盖本地配置,实现统一管控。
4、@RefreshScope 动态刷新
- 引入 Nacos 配置依赖后,配置修改自动推送客户端
- 在配置类/Bean 上添加 @RefreshScope
- 无需重启项目,自动刷新配置属性
- 原理:动态生成代理 Bean,重新从环境中拉取配置赋值
5、配置动态推送流程
- 控制台修改配置并发布
- Nacos 服务端感知配置变更
- 主动推送变更事件到监听的客户端
- 客户端拉取最新配置,刷新本地环境变量
- 加 @RefreshScope 的 Bean 自动重新初始化生效
四、Nacos 集群原理
- Nacos 集群至少 3 个节点
- 配置中心采用 Raft 协议 选主,保证 CP 强一致
- 注册中心采用 Distro 协议,AP 最终一致性,节点间异步同步服务数据
- 集群任一节点宕机,不影响整体服务注册与配置使用,高可用
Distro 协议特点
- 去中心化、无主从强依赖
- 节点间异步同步服务实例数据
- 保证高可用、容错性强,适合注册中心场景
Raft 协议特点
- 选举 Leader,Leader 负责写入
- 数据同步到半数以上节点才生效
- 保证配置数据强一致性
五、Nacos 高频注解与开发用法
-
@EnableDiscoveryClient 开启微服务注册发现,注册到 Nacos
-
@RefreshScope 配置中心动态刷新配置核心注解
-
配置绑定 @ConfigurationProperties 批量绑定 Nacos 远程 yml 配置,和本地配置用法一致
六、Nacos 高频面试易错点汇总
- Nacos 注册中心 AP、配置中心 CP,分别对应 Distro、Raft 协议
- 心跳间隔5s、不健康15s、剔除60s
- 临时实例靠心跳自动剔除,持久化实例不会自动剔除
- namespace 分环境、group 分业务、cluster 分机房
- @RefreshScope 实现配置热刷新,不用重启服务
- 服务发现是客户端负载均衡,Nacos 只负责注册列表,不负责转发
- Nacos 集群3节点起步,保证高可用
- 配置中心支持版本回溯、灰度发布、配置监听
七、Nacos 整体知识框架背诵总结
- 两大能力:注册中心 + 配置中心
- 注册核心:服务注册发现 + 心跳机制 + 服务剔除 + AP(Distro)
- 配置核心:集中配置管理 + 动态推送 + @RefreshScope 热刷新 + CP(Raft)
- 三层隔离:命名空间(环境) → 分组(业务) → 集群(机房)
- 集群协议:注册用Distro、配置用Raft
- 开发核心:开启注册发现、远程配置绑定、动态刷新配置