从零跑通:JeecgBoot 微服务与 Nacos 服务注册发现实践

发布时间:2026/9/14 10:24:37
从零跑通:JeecgBoot 微服务与 Nacos 服务注册发现实践 从零跑通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本文以 JeecgBoot 微服务为切入点实操 Nacos 服务注册与发现、配置中心的配置方法。读完你可以启动整套微服务环境、看懂关键配置项并快速排查注册失败与调用超时。场景切入服务 A 找不到服务 B假设你已把系统服务 jeecg-system 部署到一台机器现在要让 demo 服务调用它。如果直接写 IP 和端口机器扩容、故障转移时这些地址就会失效。JeecgBoot 的做法是调用方只写服务名谁在哪台机器、哪个端口交给 Nacos 回答。这就是服务注册与发现要解决的问题。Nacos 的双重角色注册中心加配置中心在 JeecgBoot 中微服务基于 Spring Cloud Alibaba 技术栈搭建Nacos 承担两件事。一是服务注册中心。每个微服务启动后自动向 Nacos 注册实例停机时自动注销Nacos 通过心跳判断实例健康异常实例会被剔除不再接收流量。它同时管理实例的元数据与权重。二是配置中心。公共配置放在 Nacos 的 jeecg.yaml环境相关配置放在 jeecg-{环境}.yaml改完实时推送到各服务实例支持版本回滚按命名空间隔离多环境。相关模块都在 jeecg-server-cloud/ 目录下jeecg-cloud-gateway 是微服务网关jeecg-cloud-nacos 是 Nacos 服务含默认分组配置文件jeecg-system-cloud-start 和 jeecg-demo-cloud-start 分别是系统服务与示例服务的启动模块jeecg-visual 下是监控与可视化模块。项目支持单体与微服务两种形态按需切换部署即可。一条命令启动微服务环境环境要求 Docker 与 Docker Compose。克隆代码后在仓库根目录执行git clone https://gitcode.com/GitHub_Trending/je/jeecg-boot docker-compose -f jeecg-boot/jeecg-server-cloud/docker-compose.yml up -ddocker-compose.yml 会依次拉起 Nacos、MySQL、Redis、系统服务、demo 服务和网关。compose 里还做了一件值得注意的事网关容器启动前会轮询 Nacos直到 jeecg-system 注册为健康实例才放行避免网关拿到空路由。各服务端口清单组件端口说明Nacos8848控制台 http://localhost:8848/nacos默认账号 nacos/nacos系统服务7001服务名 jeecg-system示例服务7002服务名 jeecg-demo网关9999对外统一入口MySQL3306容器内端口compose 映射到宿主 13306Redis6379微服务内部网络互通默认不映射宿主如果不用 Docker手动启动的步骤是先执行mvn clean install按 Maven profile 构建默认 dev再分别进入 jeecg-system-cloud-start、jeecg-demo-cloud-start、jeecg-cloud-gateway 目录执行mvn spring-boot:run。注意此时 Nacos 地址要指向本机见下一节。最常改的 3 个 Nacos 配置项以 jeecg-system-cloud-start 的 application.yml 为例关键配置如下spring: cloud: nacos: discovery: server-addr: config.server-addr group: config.group namespace: config.namespace config: import: - optional:nacos:jeecg-profile.name.yamlserver-addrNacos 地址。...是 Maven 占位符构建时按 profile 替换。Docker 环境默认值为容器名 jeecg-boot-nacos:8848本机裸跑时需在根 pom 的 profile 里改成 localhost:8848。group 与 namespace配置和注册所属的分组与命名空间默认 DEFAULT_GROUP、命名空间为空public。配置中心找配置、注册中心找实例都靠这两个键定位。config.import声明从 Nacos 拉哪些配置除环境文件外还会导入 jeecg.yaml 公共配置。Nacos 里对应的文件见 jeecg-cloud-nacos/docs/DEFAULT_GROUP/。一次服务间调用的完整链路注册jeecg-system 启动后自动注册到 Nacos服务名 jeecg-system心跳维持健康状态。发现与负载均衡demo 或其他模块通过 Feign 声明式客户端发起调用例如 ISysBaseAPI 上标注FeignClient(value SERVICE_SYSTEM)。Spring Cloud 的 LoadBalancer 根据 Nacos 返回的实例列表挑一台调用方全程只感知服务名。降级Feign 客户端配置了 fallbackFactory如 SysBaseAPIFallbackFactory目标服务不可用时走降级逻辑而不是直接抛错。网关入口前端与外部请求统一打到 9999 端口的 jeecg-gateway。网关从 Nacos 发现各服务路由规则支持动态下发Sentinel 流控、降级规则以 JSON 形式存放在 NacosSENTINEL_GROUP 分组网关启动时拉取鉴权与跨域等统一过滤也在网关完成。排障速查3 个高频问题服务注册失败现象Nacos 控制台看不到实例或启动报连接错误。 原因Nacos 未启动或 server-addr 指向的地址不对。 解决确认 8848 端口可访问核对 Maven profile 与 application.yml 中的地址Docker 与本机部署用的是两个地址。配置不生效现象改了 Nacos 配置服务行为没变化。 原因配置文件的命名空间或分组与服务实际查找位置不一致或 dataId 写错应为 jeecg.yaml、jeecg-{profile}.yaml。 解决在 Nacos 控制台核对文件位置确认无误后重启服务或触发配置刷新。服务调用超时现象Feign 调用偶发或持续超时。 原因目标实例负载高、网络延迟或实例已被剔除后仍在旧缓存里。 解决调整 Feign 超时参数在 Nacos 确认实例健康状态与权重必要时增加实例。要点与下一步回顾本文用 docker-compose 一键拉起 Nacos、系统服务、demo 服务与网关通过 server-addr、group、namespace 三个键定位 Nacos一次 Feign 调用经历注册、发现、负载均衡、降级网关统一负责路由、限流与鉴权。生产环境的下一步为 Nacos 做集群部署避免单点按 dev、test、prod 划分命名空间做环境隔离开启本地配置缓存降低对配置中心的依赖用 jeecg-visual 下的 Sentinel 等模块补齐链路监控。【免费下载链接】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),仅供参考