Nacos
Nacos(Naming and Configuration Service)是阿里巴巴开源的服务发现与配置管理平台,致力于帮助发现、配置和管理微服务。
适用场景:Spring Cloud Alibaba 微服务架构、需要同时支持服务注册发现和配置中心的场景、对高可用和数据一致性有要求的系统。
核心能力
| 能力 | 说明 |
|---|---|
| 服务发现 | 注册和发现微服务实例 |
| 配置管理 | 集中管理应用配置 |
| 动态配置更新 | 配置变更实时推送到应用 |
| 服务及元数据管理 | 管理服务列表、权重、标签 |
服务端启动
# Linux/Mac
sh startup.sh -m standalone
# Windows
startup.cmd -m standalone机器配置
Nacos 运行建议至少 2C4G60G 的机器配置。
服务发现
引入依赖:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>配置:
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848使用 @EnableDiscoveryClient 注解开启服务发现。
注意事项
使用 @FeignClient(name = "service-goods") 时 name 值大小写敏感。
配置管理
引入依赖:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>dataId 完整格式:
${prefix}-${spring.profiles.active}.${file-extension}| 配置项 | 说明 |
|---|---|
| prefix | 默认 spring.application.name(应用名称) |
| spring.profiles.active | 当前环境对应的 profile(如 dev、prod) |
| file-extension | 配置格式,支持 properties 和 yaml |
⚠️ 注意:配置管理需要使用 bootstrap.properties 文件(Spring Boot 启动早期加载的配置文件),确保在应用启动早期获取到配置中心的配置。
配置示例:
spring.application.name=service-goods
spring.profiles.active=dev
spring.cloud.nacos.server-addr=192.168.2.252:8848
spring.cloud.nacos.config.namespace=68de352b-c271-4be8-906e-36a9402fd071CP 与 AP 模式
Nacos 同时支持 CP 和 AP 模式:
- CP 模式(网络分区时优先保证数据一致):使用 Raft 协议(一种分布式共识算法,通过选举 Leader 保证数据一致),适合对数据一致性要求高的场景,如配置管理
- AP 模式(网络分区时优先保证服务可用):使用 Distro 协议(基于 Gossip 的最终一致性协议),适合对可用性要求高的场景,如服务发现
常见问题处理
服务注册失败
- 检查 Nacos Server 是否正常运行:访问
http://localhost:8848/nacos - 确认
spring.cloud.nacos.discovery.server-addr配置正确 - 检查网络连通性和防火墙设置
配置获取失败
- 确认使用
bootstrap.properties而非application.properties - 检查
spring.cloud.nacos.config.namespace配置是否正确 - 确认 dataId 格式:
${prefix}-${profile}.${extension}