SpringVortexNotes

Nacos 服务注册与发现

zjc 于 2026-08-05 发布

代码环境

Nacos 在这套系统里承担“服务台账”的角色:服务启动时注册自己的地址,调用方通过服务名拿到可用实例。它不参与业务请求转发,真正的转发由 Gateway、OpenFeign 和 LoadBalancer 完成。

一、公共认证配置

spring:
  cloud:
    nacos:
      discovery:
        username: nacos
        password: nacos
      config:
        enabled: false

https://github.com/springvortex/spring-cloud-alibaba/blob/release/v1.0.0/service-provider/src/main/resources/config/application-nacos.yaml

这份公共配置把边界说得很清楚:Discovery 开启,Config 显式关闭。也就是说,当前项目不用 Nacos 下发业务配置,配置仍随服务包内的 Profile 分发。

二、地址按环境拆分

application-dev.yamlapplication-prod.yaml 只维护 Nacos 地址差异;账号、密码和“关闭 Config”的规则放在公共 Profile。这样环境差异不会把公共规则复制出多份。

三、服务名是协作契约

Provider、Consumer、Gateway、Mail 都通过 spring.application.name 注册。Gateway 的 lb://service-provider、Feign 的 name = "service-provider" 依赖的都是这个名字。

因此服务名一旦确定,就不能随意改。它不是包名,也不是工程显示名,而是运行期服务发现契约。

四、避坑点

  1. 服务注册成功不代表业务健康,健康状态要结合 Actuator。
  2. Nacos 地址、网络分区、认证失败表现不同,排查时要分层看。
  3. 只调用服务不需要感知实例 IP,调试时再查 Nacos 控制台。
  4. 使用 Nacos Config 前要先想清楚配置刷新边界,当前项目刻意没有使用。

五、经验总结

Nacos 让多实例部署从“配置 IP 清单”变成“按服务名发现”。这个项目保持它只做注册与发现,配置仍由本地 Profile 管理,边界简单,问题也更容易定位。

评论

评论由 GitHub Discussions 承载,需要 GitHub 账号登录。