拓冰建站拓冰建站
首页 / 资讯中心 / 正文

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 上每个服务实例启动时把自己登记给 Nacos其他服务发起调用前再从 Nacos 查出可用实例。这组登记 查询就是服务注册与发现下面按仓库里的实际代码把它走一遍。环境跑起来docker-compose 一条命令拉起 Nacos 与微服务后端微服务位于 jeecg-boot/jeecg-server-cloud/ 目录其下的 docker-compose.yml 负责整套部署docker-compose -f jeecg-boot/jeecg-server-cloud/docker-compose.yml up -d拉起的组件与端口清单Nacos服务端口 8848控制台端口 18080系统服务 jeecg-system7001示例服务 jeecg-demo7002网关 jeecg-gateway9999compose 内置等待脚本会等 jeecg-system 注册为健康实例后才放行MySQL容器内 3306宿主机映射 13306Redis6379仅容器网络内开放。手动启动时顺序不能乱先起 Nacos可直接用 jeecg-boot/jeecg-server-cloud/jeecg-cloud-nacos/ 目录里的 Dockerfile 构建打开控制台 http://localhost:18080 查看服务列表旧版控制台入口是 http://localhost:8848/nacos默认账号密码均为 nacos/nacos仓库这份开发配置关闭了鉴权可直接进入接着依次启动 jeecg-system-cloud-start7001和 jeecg-demo-cloud-start7002最后启动 jeecg-cloud-gateway9999。各服务打包成 jar 后 java -jar 运行或直接执行 Spring Boot 主类都可以。跑起来之后模块划分与 Nacos 的双重身份微服务相关模块都集中在 jeecg-boot/jeecg-server-cloud/ 下jeecg-cloud-gatewaySpring Cloud Gateway全部请求的统一入口jeecg-cloud-nacos内嵌 Nacos 服务端本身它持有的配置文件就放在 docs/DEFAULT_GROUP/ 目录jeecg-system-cloud-start、jeecg-demo-cloud-start两个业务服务的启动入口jeecg-visual可视化与测试模块含 monitor、sentinel、xxljob 以及 feign、mq、分布式事务等示例。Nacos 在这里是双重身份。当注册中心时jeecg-system 和 jeecg-demo 分别挂在 DEFAULT_GROUP 组下网关按服务名就能查到实例当配置中心时它存放 jeecg.yaml、jeecg-dev.yaml 等共享配置文件原始文件可在 jeecg-cloud-nacos/docs/DEFAULT_GROUP 目录核对。注册配置怎么读server-addr、group 与命名空间怎么配各服务的注册配置写在本地 application.yml 里用 Maven 属性占位同一份配置在不同环境可以指向不同 Nacos 地址。以系统服务为例spring: application: name: jeecg-system cloud: nacos: discovery: server-addr: ${spring.cloud.nacos.config.server-addr} group: config.group namespace: config.namespace白话解释server-addr 是 Nacos 地址即去哪里登记、去哪里取配置Docker 部署时取值为 jeecg-boot-nacos:8848是容器主机名group 是分组默认 DEFAULT_GROUP不同分组的服务互相看不到namespace 是命名空间承担开发、测试、生产之间的隔离。真实文件里 config 段还有同样的三项并附 username、passworddiscovery 的地址直接复用 config 段的取值三个占位符的值由根 pom 的 profile 提供。配置中心侧则靠 spring.config.import 导入业务服务写 optional:nacos:jeecg.yaml 拉公共配置再加 optional:nacos:jeecg-profile.name.yaml 区分环境网关导入的则是 jeecg-gateway.yaml。调用怎么走从网关到目标实例的一条链路一次外部调用要经过这样几个环节前端请求 - 网关(9999) - 路由匹配 - 查 Nacos 实例列表 - 负载均衡 - jeecg-system(7001)其中路由匹配是网关的动态路由路由定义由 DynamicRouteLoader 加载变更后重载即可不用重启进程。负载均衡则依赖注册中心客户端从 Nacos 拿到目标服务的实例清单再按策略挑一台。服务与服务之间仓库里留了 Feign 示例把远端接口写成一个标注 FeignClient 的 Java 接口value 填目标服务名配上 fallback 工厂即可在目标不可用时兜底。另外网关的 Sentinel 限流规则同样存放在 NacosdataId 形如 jeecg-gateway-flow-rules改规则会实时推送到网关生效。出问题怎么办注册失败、配置不生效与 Feign 调用超时排查现象一Nacos 服务列表里看不到某服务的实例注册失败。先看 Nacos 容器是否存活、8848 端口是否放开再核对业务服务配置里 server-addr 的取值Docker 环境必须写容器主机名本地进程写 localhost 是连不通的。处理改对地址后重启该服务观察控制台是否出现实例若实例时隐时现再查端口映射与心跳。现象二改了 Nacos 配置服务行为却没变配置不生效。优先核对 namespace、group、dataId 三要素是否一致错配最常出在这里其次检查配置内容本身的格式是否合法。处理支持刷新的配置等待推送生效即可不支持刷新的项只能重启服务应用。现象三调用目标服务偶发超时或 503Feign 调用超时排查。先在 Nacos 里确认实例状态是健康还是被隔离若网关报找不到实例多半是路由或服务名对不上若超时发生在 Feign 一侧则要看下游处理耗时。处理把 Feign 的连接、读取超时调到与实际耗时匹配负载偏高时加实例扩容。上生产之前命名空间隔离与集群部署每个环境单独建命名空间分组同步区分生产环境部署多节点 Nacos 集群按负载调整心跳超时与实例权重Sentinel 限流规则持久化并监控变更配置实例异常剔除与健康检查告警网关动态路由与 Nacos 服务名保持一致Nacos 在 JeecgBoot 中不只是个登记簿它同时承载了实例清单与共享配置网关的动态路由、Sentinel 规则也存放在这里。一个新服务只要指向同一个 server-addr、落进同一个分组就能被体系里的其他服务发现这是平台能在单体与微服务部署之间低成本切换的原因之一。若准备上生产把命名空间与集群这两项配置好其余大多开箱可用。【免费下载链接】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),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门