已完成分析,共参考 12 篇资料
Nacos 可以理解为微服务架构里的 "服务注册中心 + 配置中心 + 服务管理平台"。
在 Spring Boot 多项目里,它主要解决两件事:服务之间怎么互相找到,以及配置怎么统一管理、动态刷新。
| 能力 | 作用 | 实际场景 |
|---|---|---|
| 服务注册与发现 | 服务启动后把自己的地址注册到 Nacos,调用方从 Nacos 拉取可用实例 | 订单服务调用用户服务时,不用写死 IP 和端口 |
| 配置中心 | 把数据库地址、开关、超时时间等配置集中管理 | 修改某个参数后推送给所有服务,不用逐个重启 |
| 健康检查 | 自动判断服务实例是否存活 | 某个服务挂了,流量不再转发到它 |
| 命名空间 / 分组 | 按环境、业务线隔离配置和服务 | dev、test、prod 环境互不影响 |
| 服务治理 | 支持权重、元数据、灰度发布等 | 新版本服务先接少量流量,再全量发布 |
上面的解释好官方啊,
我的理解
把写在application.yml里的配置,统一让nacos管理
获取nacos-server-2.1.2软件
可以直接拷贝同事的,
Nacos Server 本质上就是一个 Java 服务。
它底层是 Spring Boot 应用,入口是 com.alibaba.nacos.Nacos 的 main 方法,内嵌 Web 容器,启动后会监听端口,提供注册中心、配置中心和控制台能力。
启动
nacos-server-2.1.2\nacos\bin\startup.cmd 点击启动
配置
浏览器直接打开 http://localhost:8848/nacos/#/
账号/密码 nacos/nacos
设置命名空间

注意这个命名空间,不是随便填写的, 去代码里找application.yml 里

这个配置 , 要和这个同名, 多个项目可以统一在这里配置,
导入配置

这里导入同事们的配置,
里面有什么东西
其实就是application.yaml里对应的配置
优先级
默认情况下:Nacos 远程配置优先级高于本地 application.yml。
同一个配置项,如果 Nacos 和本地都配了,最终以 Nacos 上的值 为准
这里可以学一下 springboot 配置文件和配置文件的优先级
配置文件
java
spring:
config:
import:
- optional:nacos:ezgo.yaml
- optional:nacos:oa-service-dev.yaml
cloud:
inetutils:
preferred-networks:
- 172.29
loadbalancer:
ip: true
nacos:
server-addr: http://127.0.0.1:8848
discovery:
enabled: true
namespace: czzjk_${spring.profiles.active}
group: DEFAULT_GROUP
config:
enabled: true
namespace: czzjk_${spring.profiles.active}
group: DEFAULT_GROUP
file-extension: yaml
这份配置是 Spring Cloud Alibaba + Nacos 的标准接入配置,核心作用就两件事:把 Nacos 当成配置中心和服务注册中心接进来,并指定连哪个环境(命名空间)
报错
若不启动nacos, 本地服务启动也会失败
| 可能原因 | 说明 |
|---|---|
实际没有 optional: |
写成 nacos:ezgo.yaml,就会强制要求 Nacos 可达 |
| Nacos 上配置不存在 | 没有 ezgo.yaml、oa-service-dev.yaml,且没加 optional: |
| 命名空间没建 | namespace: czzjk_dev 对应的命名空间 ID 不存在 |
| 端口/网络不通 | 8848 没启动,或防火墙、Docker 端口没开放 |
| Nacos 3.x 控制台端口变了 | 3.x 控制台可能是 8080,但客户端通信仍用 8848 / 9848 |