Nacos
- Nacos Spring Cloud
一、Nacos 核心概念
- 是什么?
Nacos(Dynamic Naming and Configuration Server)是阿里开源的服务发现+配置管理+服务治理平台,核心功能:
- 服务发现与健康监测:服务注册、心跳机制、DNS 查询
- 动态配置管理:配置发布、监听、版本管理
- 动态 DNS:基于权重的路由、地域就近访问
- 服务元数据管理:支持应用/版本/环境等元数据
- 关键特性
- 双模式:支持 CP(强一致性、如配置管理)和 AP(高可用,如服务发现)
- 配置实时推送:基于长轮询(减少无效请求)
- 生态兼容:无缝集成 Spring Cloud、Dubbo、Kubernetes
二、核心架构与原理
- 服务注册与发现流程
- 注册:服务启动时向 Nacos Server 发送注册请求(HTTP/gRPc)
- 心跳:客户端定期发送心跳(默认5秒),超时(15秒)标记为不健康,30秒后剔除
- 发现:消费者通过订阅机制获取服务列表,本地缓存+增量更新
- 配置管理机制
- 发布配置:通过控制台/API发布配置,存储与 Derby 或 MySQL
- 监听配置:客户端长轮询(默认30秒),服务端 Hold 住请求,配置变更立即返回
- 历史版本:支持配置回滚和版本对比
- 一致性协议
- CP 模式:使用 Raft 协议(配置管理场景)
- AP 模式:自研 Distro 协议(服务发现场景,最终一致性)
三、重要知识点
- Nacos vs Eureka vs Zookeeper?
- Eureka:AP 设计,适合服务发现,但功能单一
- Zookeeper:CP 设计,强一致性,但写性能低
- Nacos:AP/CP 可切换,集成服务发现+配置管理,生态更全面
- 长轮询如何实现配置实时推送?
- 客户端发起查询请求,若配置无变化,服务端 Hold 请求至超时(默认30秒)或期间配置变更立即返回
- 对比传统轮询:减少无效请求,提升实时性
- Nacos 集群如何保证数据一致性?
- Distro 模式(AP 模式):每个节点负责部分数据,通过异步复制保证最终一致性
- Raft 协议(CP 模式):选举 Leader,多数节点写成功才返回
- Nacos 2.0 升级了哪些内容?
- 通信层优化:gRPC 替代 HTTP,减少连接数
- 长连接增强:支持服务端主动推送,降低延迟
- 性能提升:支撑百万级服务实例
- 如何实现配置灰度发布?
- 通过 **Data ID 或 Group **分组,结合 Spring Cloud 的
@RefreshScope
或监听ConfigChangeEvent
实现部分实例更新
- 通过 **Data ID 或 Group **分组,结合 Spring Cloud 的
四、实战场景与排查思路
- 服务注册失败常见原因
- 网络不通:检查 Nacos Server 地址和端口
- 版本冲突:Spring Cloud Alibaba 与 Nacos 版本兼容性
- 命名空间 /Group 配置错误:确保客户端与服务端一致
- 配置不生效排查步骤
- 检查控制台配置是否发布成功
- 客户端是否添加
@RefreshScope
注解 - 查看日志:
com.alibaba.nacos.client.config
包日志是否有监听异常
五、高级话题
- Nacos-Sync 应用
- 跨注册中心同步(如 Kubernetes Service 到 Nacos)
- 安全控制
- 开启鉴权:
nacos.core.auth.enabled=true
,配置自定义用户角色
- 开启鉴权:
- 双活部署
- 多数据中心通过 Nacos-Sync 同步数据,结合 DNS 实现流量切换