JeecgBoot 微服务中 Nacos 服务注册与发现上手指南
【免费下载链接】jeecg-boot【低代码v2.0,一句话即可生成整个系统】企业级AI低代码平台,一键生成前后端代码甚至整个系统。 AI Skills 一句话画流程、设计表单、生成报表、大屏。内置 AI应用平台涵盖:AI聊天、知识库、流程编排、MCP插件等,兼容主流大模型。引领AI低代码「Skills 生成 → 在线配置 → 代码生成 → 手工合并->AI修改」开发模式,解决 Java 项目 90% 重复工作,提高效率又不失灵活。项目地址: https://gitcode.com/GitHub_Trending/je/jeecg-boot
服务拆多了,它们之间怎么互相找到?
服务越拆越多,一个问题就躲不开了:前端发个请求,怎么定位到正确的后端服务?demo 服务想调 system 服务,还得去查对方 IP 和端口吗?JeecgBoot 的答案是把 Nacos 服务注册与发现接进 Spring Cloud Alibaba 技术栈。Nacos 可以理解为微服务世界的"通讯录+公告栏":服务启动后自己报上名,互相调用时按名字找人,配置则统一贴在公告栏里。
Nacos 在这套架构里负责什么
在 JeecgBoot 微服务架构里,Nacos 干的活归拢成四类:
- 注册与发现:jeecg-system(7001 端口)、jeecg-demo(7002 端口)等服务启动后按服务名注册到 Nacos。调用方只说服务名,具体实例由 Nacos 指路。
- 健康检查:Nacos 靠心跳判断实例存活,宕掉的实例会被摘掉,请求不再路由到死掉的机器。
- 配置中心:数据库、Redis、第三方密钥这类公共配置集中在 Nacos,改动后推送到各实例,不用改代码。
- 环境隔离:用 namespace 和 group 区分开发、生产两套配置,仓库默认分组是 DEFAULT_GROUP。
🚀 一条命令用 Docker Compose 跑起微服务环境
最快的方式是整套装起。执行:
docker-compose -f jeecg-boot/jeecg-server-cloud/docker-compose.yml up -d
Nacos 注册中心(8848)、system 服务(7001)、demo 服务(7002)、网关(9999)以及 MySQL、Redis 会一起拉起来。打开 http://localhost:8848/nacos 控制台,账号密码默认都是 nacos,能看到已注册的服务列表。完整编排见 docker-compose.yml。
服务怎么找到 Nacos?各启动模块的 application.yml 里写的是 Maven 占位符,默认值定义在根 pom(默认地址 jeecg-boot-nacos:8848):
spring: cloud: nacos: config: server-addr: @config.server-addr@ group: @config.group@ discovery: server-addr: ${spring.cloud.nacos.config.server-addr}注册完成后,业务配置由 Nacos 配置中心下发。每个服务导入两份配置:jeecg.yaml 放公共项,jeecg-{profile}.yaml 放环境项,比如开发环境对应 jeecg-dev.yaml,Nacos 默认配置里能看到数据源、Redis 等默认值。
一次请求的完整旅程
把一个请求从头到尾走一遍。请求先打到网关 9999 端口,经过全局认证过滤器,再按路由规则转发到对应服务。这些路由规则不是写死在网关里的,网关的动态路由加载器从 Nacos 读取 jeecg-gateway.yaml 和路由 JSON 来生效。
服务之间呢?比如 system 服务要调 demo 服务,走的是 Feign 服务调用:调用方只声明一个接口(公共的 Feign 接口都放在 jeecg-system-cloud-api 模块),框架按服务名从注册中心找到健康实例,负载均衡交给它做。调用方从头到尾不需要知道对方的 IP。
🛠️ 让它稳定运行:常见异常与处理
- 现象:Nacos 控制台里看不到服务。原因:Nacos 没起来,或地址配错。处理:先确认 8848 端口能通,再核对根 pom 里 server-addr 占位符展开后的值。
- 现象:改了配置不生效。原因:命名空间、分组和控制台里的配置对不上,或 dataId 拼错。处理:对照 application.yml 的 config.import 条目逐项核对,改完重启服务。
- 现象:网关路由是空的,前端调不到后台。原因:网关比 system 服务先启动,拿到了空路由表。仓库的 compose 文件里已经加了轮询,等 jeecg-system 注册为健康实例才放行网关;手动部署时注意启动顺序。
- 现象:服务间调用超时。原因:网络延迟或实例负载高。处理:先排查网络和负载,再调 Feign 客户端超时。
- 现象:生产环境单节点 Nacos 挂掉,全部服务失联。处理:上 Nacos 集群部署,避免注册中心成为单点故障。
带走要点
- Nacos 身兼注册发现与配置中心两职,仓库里两者指向同一地址,切换环境只改占位符。
- Docker Compose 一条命令拉全套:8848 Nacos、7001 system、7002 demo、9999 网关。
- 配置集中在两份文件:jeecg.yaml 管公共,jeecg-{profile}.yaml 管环境差异。
- 微服务网关路由同样由 Nacos 下发,部署时让服务先于网关启动。
- 生产环境直接用 Nacos 集群部署,注册中心不能单点。
【免费下载链接】jeecg-boot【低代码v2.0,一句话即可生成整个系统】企业级AI低代码平台,一键生成前后端代码甚至整个系统。 AI Skills 一句话画流程、设计表单、生成报表、大屏。内置 AI应用平台涵盖:AI聊天、知识库、流程编排、MCP插件等,兼容主流大模型。引领AI低代码「Skills 生成 → 在线配置 → 代码生成 → 手工合并->AI修改」开发模式,解决 Java 项目 90% 重复工作,提高效率又不失灵活。项目地址: https://gitcode.com/GitHub_Trending/je/jeecg-boot
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考