
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用 Docker Compose 三条命令拉起一套完整的 JeecgBoot 微服务环境Nacos 同时承担服务注册发现与配置中心两个角色。本文带你从服务怎么跑起来到配置放在哪、调用怎么走最后给出一份照着排查就能解决问题的踩坑清单。一、5 个服务如何协作先看清全局JeecgBoot 的微服务端集中在jeecg-boot/jeecg-server-cloud/目录下核心就 5 个服务服务模块端口职责Nacosjeecg-cloud-nacos8848 / 18080注册中心 配置中心系统服务jeecg-system-cloud-start7001用户、权限、菜单等系统能力示例服务jeecg-demo-cloud-start7002演示 Feign 调用、MQ 等网关jeecg-cloud-gateway9999统一入口、路由、限流MySQL / Rediscompose 内置13306→3306 / 内部 6379数据与缓存单体和微服务是两套入口想本地快速体验直接用系统模块自带的单体启动类即可要体验服务拆分、Feign 调用、网关路由才需要拉起上面的 cloud 环境。二、三步部署一条命令拉起微服务集群 第 1 步启动全部组件在jeecg-boot/jeecg-server-cloud/目录下执行docker-compose up -d这条命令会按依赖顺序启动MySQL、Redis、Nacos 先起来system 和 demo 依赖 Nacos网关依赖 system见 docker-compose.yml。第 2 步等 system 注册成功网关才启动这是这套 compose 文件里最较真的一处depends_on只能保证启动顺序不能保证 system 已经注册进 Nacos。所以网关容器启动前有一段等待脚本轮询 Nacos 3.x 的 admin 接口直到查到jeecg-system的healthy:true才真正执行java -jar。这个设计解决一个经典事故网关比 system 先拿到路由加载到空路由表结果 Swagger 是空的、前端调不到接口只能手动重启网关。现在它会自动等到路由可用再放行。第 3 步验证三个点浏览器打开http://localhost:8848/nacos能看到jeecg-system、jeecg-demo两个服务各有一个健康实例项目自带的 Nacos 模块关闭了鉴权直接访问即可网关 9999 端口有响应前端请求经网关转发到 7001/7002 的业务接口返回正常。三、配置在哪Nacos 配置中心文件清单内置配置文件都放在一个目录里所有该导入 Nacos 的配置文件都在 jeecg-cloud-nacos/docs/DEFAULT_GROUP/jeecg.yaml所有服务共享的基础配置jeecg-dev.yamldev 环境的数据库、Redis 等连接信息jeecg-gateway.yaml、jeecg-gateway-router.json网关配置与路由数据jeecg-dev-satoken.yaml、sharding.yaml认证与分库分表相关。如果你用自己的 Nacos把这目录下的 YAML 按同名 dataId 导入即可项目模块本身不绑定官方 Nacos 版本。application.yml 的两个关键写法以 jeecg-system-cloud-start 的 application.yml 为例本地文件里只有骨架spring: cloud: nacos: config: server-addr: config.server-addr # Maven 占位符打包时替换 namespace: config.namespace discovery: server-addr: ${spring.cloud.nacos.config.server-addr} # 复用 config 的地址 config: import: - optional:nacos:jeecg.yaml - optional:nacos:jeecg-profile.name.yaml两个要点config.xxx是 Maven profile 占位符改 Nacos 地址、命名空间不用动代码optional:前缀表示找不到也不报错所以配置缺失时服务能起来但行为不完整排查时要留意这点。demo 服务的 yml 写法完全同构只是dataId组合和端口7002不同。四、服务之间怎么调用注册 → 发现 → 路由 Feign按服务名调不写 IP服务间调用走 Spring Cloud OpenFeign。项目自带的演示模块 jeecg-cloud-test-more 里就是完整范例JeecgTestClient接口声明远程调用JeecgTestFallback提供失败降级。负载均衡、按服务名解析实例地址都由 Nacos 注册信息自动完成业务代码里看不到任何硬编码 IP。网关静态 动态双路由网关的 application.yml 开了discovery.locator.enabled即按 Nacos 里的服务名自动发现路由这是兜底能力真正的路由以动态路由为主jeecg-gateway.yaml中data-type: database路由数据存在库表里改路由不用重启网关。另外Sentinel 的五类规则flow、degrade、system、authority、param-flow全部以 JSON 形式存在 Nacos 的SENTINEL_GROUP分组中网关启动时直接拉取限流规则随配置中心热更新。五、踩坑排查清单4 个最常见症状 ️症状 1控制台里看不到服务先确认三件事Nacos 容器是否健康docker ps看 8848 是否 LISTENserver-addr是否指向同一台discovery 与 config 的namespace、group是否一致。注意本地调试时config.server-addr占位符必须被 Maven profile 替换原样残留就代表打包命令不对。症状 2改了配置不生效对照 Nacos 控制台核对 dataId、分组、命名空间三者。再确认 dataId 是否以optional:导入——如果配置根本不在 Nacos 里服务会静默跳过表现就是配置不生效。改完确认控制台版本记录有变更必要时重启实例触发重新拉取。症状 3网关启动后路由为空、前端调不通这正是 compose 等待脚本要防的场景。若你是手动逐个启动的顺序应是 Nacos → system → demo → 网关或者按项目要求给 jar 加-Dfile.encodingutf-8再启动 system否则 Nacos 相关文件加载不到。症状 4服务调用超时依次检查被调方实例是否 healthy跨容器网络compose 网络jeecg_boot内域名是否可解析Feign 的 connect/read 超时是否小于下游实际耗时。演示模块的 Feign 接口可直接作为压测入口定位是网络慢还是业务慢。六、进阶上生产的 3 条建议环境隔离dev / test / prod 各建一个 namespaceconfig.namespace占位符配合 Maven profile 切换避免多环境配置互相污染。Nacos 集群化单机 Nacos 只适合本地体验生产建议三节点集群并做数据持久化备份配置变更走权限管控。实例治理给服务实例设置权重做灰度放量通过 Nacos 控制台观察健康状态心跳与剔除策略保持默认即可先跑通再调参。小结JeecgBoot 的微服务方案核心很克制Nacos 一个组件同时干注册发现和配置中心两件事网关负责入口路由与限流Feign 负责服务间调用。本地用docker-compose up -d三步跑通生产按namespace 隔离 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),仅供参考