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
新增一个微服务,要挨个改调用方地址吗?改一行配置,所有实例都得重启吗?这两个成本,正是 Nacos 服务注册与发现加配置中心要解决的。本文以 JeecgBoot 3.9.3 仓库中的 jeecg-server-cloud 模块为对象,覆盖 Nacos、system、demo、gateway 四个组件的部署、三项关键配置和一次跨服务调用的完整路径。
前置准备:组件与端口对照
先明确谁在哪个端口,全部取自仓库实际的 compose 文件与各模块 application.yml:
| 组件 | 模块 / 容器 | 端口 | 说明 |
|---|---|---|---|
| Nacos | jeecg-cloud-nacos / jeecg-boot-nacos | 8848,18080(控制台) | 注册中心 + 配置中心,鉴权已关闭 |
| 系统服务 | jeecg-system-cloud-start(jeecg-system) | 7001 | 仅 docker 网络内可达,未映射宿主机 |
| 示例服务 | jeecg-demo-cloud-start(jeecg-demo) | 7002 | 同上 |
| 网关 | jeecg-cloud-gateway(jeecg-gateway) | 9999 | 唯一映射宿主机的服务入口 |
| MySQL | jeecg-boot-mysql | 13306 → 3306 | nacos 库与业务库同库,root/root |
| Redis | jeecg-boot-redis | 6379 | 仅内网,未映射宿主机 |
两个前提要记住:
- 7001/7002 没有发布到宿主机,宿主机上只能通过 9999 网关访问,或查 Nacos 接口。
- 仓库内置的 Nacos 是官方简化版(默认关闭鉴权),不依赖它时,需按 docs 目录里的配置在自己 Nacos 中创建同名配置。
从零搭建:两条路径,各有成功判据
路径一:Docker 一键部署
在 jeecg-server-cloud 目录执行 compose 文件,按依赖顺序构建并启动 Nacos、system、demo、gateway:
cd jeecg-server-cloud && docker compose up -d --build用途是一次拉起全部组件。验证方式:打开 http://localhost:8848/nacos(内置模块默认关闭鉴权),服务管理下应看到 jeecg-system、jeecg-demo、jeecg-gateway 三个服务,且各有一个健康实例。
路径二:手动启动
想本地调试服务时,先用 compose 只起基础组件,再逐模块运行:
docker compose up -d jeecg-boot-mysql jeecg-boot-redis jeecg-boot-nacos cd jeecg-system-cloud-start && mvn spring-boot:run注意 dev profile 把 @config.server-addr@ 构造成容器主机名 jeecg-boot-nacos:8848,本地 JVM 解析不到,需以 -Dspring.cloud.nacos.config.server-addr=127.0.0.1:8848 覆盖。验证方式与路径一相同:Nacos 控制台出现该服务实例且 healthy 为 true,再经 9999 网关访问任一接口返回正常 JSON。
配置深潜:改这三个值会发生什么
微服务配置集中在各 start 模块的 application.yml(system 可代表三个模块):
spring: cloud: nacos: config: server-addr: @config.server-addr@ group: @config.group@ namespace: @config.namespace@ discovery: server-addr: ${spring.cloud.nacos.config.server-addr} config: import: - optional:nacos:jeecg.yaml - optional:nacos:jeecg-@profile.name@.yaml验证方式:改动其中一项后重新打包启动,观察启动日志连接的地址与加载的配置列表是否变化。
- server-addr:Maven 占位符,dev profile 默认 jeecg-boot-nacos:8848。改它,注册与配置会同时指向新注册中心,因为 discovery 直接复用 config 的地址,一处生效。
- namespace:空值即 public 命名空间。多环境隔离时必须填命名空间 ID 而非显示名称;填了不存在的 ID,import 拉不到任何配置,服务在"裸配置"下启动而不报错,这是最隐蔽的坑。
- config.import:jeecg.yaml 是共享配置(数据库、Redis 等),jeecg-dev.yaml 按 dev profile 叠加;真实内容在 docs/DEFAULT_GROUP/ 配置目录。optional: 前缀保证文件缺失时服务仍能启动。gateway 例外,只导入 jeecg-gateway.yaml,路由表 jeecg-gateway-router.json 也在该目录。
一次完整调用链路:从网关到降级兜底
以"前端经网关访问系统服务接口"为例,链路分五步:
- 入口:请求打到 9999 端口的 jeecg-gateway。
- 路由:网关路由是动态的,jeecg-gateway.yaml 声明 />
收尾
这套方案的价值一句话概括:新增服务、修改配置都不需要改动其他服务的代码,环境可以靠一条 compose 命令整体复现。读完本文你应具备四件事的能力:
- 用 docker compose 拉起 Nacos 与三个微服务,并用控制台和 v3 admin 接口判定部署成功
- 说清 server-addr、namespace、config.import 三个值的作用与各自出错的表现
- 沿一次请求走通网关路由、服务发现、负载均衡到降级兜底的完整链路
- 按"现象 → 排查 → 修复"定位空路由、命名空间错填、接口被移除三类高频故障 🚀
【免费下载链接】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),仅供参考