
如何 30 分钟跑通 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 搭建一套企业级应用这篇实战讲的就是 JeecgBoot 微服务里 Nacos 服务注册与发现的落地配置。读完后你能自己动手把 Nacos、网关和两个业务服务跑起来弄明白配置到底放在哪、请求是怎么在服务之间流转的。一、先搞懂痛点微服务为什么离不开 Nacos先别急着记概念问自己三个真实问题服务之间怎么找到彼此单体时代大家调的是写死的 URL拆成多个服务后jeecg-system 想找 jeecg-demo对方 IP 是 192.168.1.10 还是 10.0.0.8实例扩缩容后地址还变总不能每改一次就改代码。配置改一次要重启多少机器数据库地址、开关参数散落在十几个服务的配置里动一个值就要挨个重启多环境更是灾难。多环境怎么隔离开发、测试、生产共用一套注册信息服务互相串门事故就是这么来的。换句话说你缺的是一个中央目录 集中配置台Nacos 干的就是这两件事。二、全局认知Nacos 在 JeecgBoot 里的位置在 JeecgBoot 的微服务模式中Nacos 一个组件扮演两个角色服务注册中心各服务启动时自动注册、掉线时自动摘除和配置中心数据库、业务开关等配置集中存放改动实时推送。你可以把它理解成团队的通讯录 公告栏。模块结构大致是这样微服务相关代码都集中在jeecg-server-cloud/下jeecg-cloud-nacos/内置的 Nacos 服务简化部署用详见 jeecg-cloud-nacos 模块jeecg-cloud-gateway/网关统一入口与路由jeecg-system-cloud-start/系统服务启动模块jeecg-demo-cloud-start/示例服务启动模块jeecg-visual/监控、Sentinel 等可视化组件注意一个设计亮点jeecg-system-cloud-api 是面向微服务的 Feign 接口包它和单体模式的 local-api 是平行的——切换部署模式只需要换启动模块的依赖业务代码一行不动。三、从零跑起来两种启动方式方式一Docker Compose 一键启动docker-compose -f jeecg-boot/jeecg-server-cloud/docker-compose.yml up -d一条命令拉起 Nacos、MySQL、Redis、系统服务、示例服务和网关。有个细节值得夸一下网关启动脚本会先轮询 Nacos等 jeecg-system 注册为健康实例后才真正启动避免网关拿到空路由——这个坑官方已经帮你填了。方式二手动分步启动顺序是Nacos → 系统服务 → 网关示例服务可插在中间启动 Nacos 后访问http://localhost:8848/nacos默认账号密码 nacos/nacos在jeecg-system-cloud-start模块执行mvn spring-boot:run再到jeecg-cloud-gateway模块执行mvn spring-boot:run。各组件端口清单组件端口说明Nacos8848 / 18080注册中心 配置中心控制台jeecg-system7001系统服务微服务实例jeecg-demo7002示例服务微服务实例Gateway9999统一入口请求都从这进MySQL13306 → 3306映射到容器内 3306Redis6379缓存与会话四、5 分钟看懂关键配置其余配置Maven 占位符config.server-addr由 profile 注入这里不展开只挑两段最关键的。第 1 段Nacos 注册与发现位于jeecg-system-cloud-start/src/main/resources/application.ymlspring: application: name: jeecg-system cloud: nacos: config: server-addr: config.server-addr group: config.group namespace: config.namespace discovery: server-addr: ${spring.cloud.nacos.config.server-addr}白话解释discovery决定这个服务以什么名字jeecg-system注册到 Nacos 的哪个命名空间、哪个分组config决定它启动时去哪拉配置。namespace 就是环境隔离的开关后面第五节会说。第 2 段配置导入同一个文件里config: import: - optional:classpath:config/application-liteflow.yml - optional:nacos:jeecg.yaml - optional:nacos:jeecg-profile.name.yaml含义是启动时从 Nacos 拉两份配置——公共的jeecg.yaml和按环境区分的jeecg-dev.yaml这类文件。注意optional:前缀配置不存在也不会让服务起不来调试时不容易被它卡住。这些配置文件就放在 jeecg-cloud-nacos 的 docs 目录 下改完发布即可推送到各实例。五、跟一个请求走服务调用链全解析把浏览器里的一次请求当主角按时间线走一遍进网关请求打到 Gateway 的 9999 端口。网关的路由不是写死的而是从 Nacos 配置中心拉取的比如jeecg-gateway-router.json/sys/**这类路径被映射到lb://jeecg-system——前缀lb://的意思就是交给负载均衡去挑实例。服务间 Feign 调用假如 jeecg-system 需要 demo 模块的数据它不会手拼 HTTP 请求而是通过 Feign 声明式客户端接口定义在 cloud-api 包带FeignClient注解像调本地方法一样调远端服务。负载均衡挑实例Feign 背后的负载均衡器从 Nacos 拿到该服务当前健康的实例列表按策略挑一个发起真实 HTTP 调用。实例摘除与恢复某个实例挂了Nacos 通过心跳判断后把它摘出列表调用方下一轮自动绕开它重启后又自动注册回来。看明白了吗Nacos 全程没被业务代码手动调用过但每一步的找谁、该不该找它都由它提供答案。六、上生产前必须做对的 3 件事命名空间做环境隔离dev / test / prod 各建一个 namespace同一套代码换个 profile 就能指向不同环境杜绝开发环境的服务注册进生产注册表。Nacos 集群 本地缓存生产至少 3 节点集群避免单点同时善用 Nacos 客户端的本地容灾缓存——Nacos 短暂抖动时服务仍能靠缓存里的配置和实例列表继续运行不会立刻雪崩。盯紧健康检查与配置动态刷新Nacos 靠心跳摘除异常实例要确认服务的健康检查端点正常暴露配置中心改完即推送配合RefreshScope类机制让实例无感更新把改配置要重启变成历史。七、踩坑速查3 个高频问题注册失败多半是 Nacos 没起或地址配错。查 8848 是否通、server-addr是否指对、防火墙是否放行。配置不生效检查 namespace / group 是否与配置文件一致YAML 缩进是否正确仍不行就重启实例或确认监听推送的日志。调用超时先区分是网络延迟还是实例过载再调 Feign 超时参数最后考虑加实例数分摊流量。结尾回顾一下Nacos 在 JeecgBoot 里既管谁在哪也管怎么配配合网关和 Feign服务拆分后你基本不用关心地址这些脏活。跑通本文后建议沿着两个方向继续深入一是自定义 jeecg-cloud-gateway 的路由规则与鉴权过滤器二是接上 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),仅供参考