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你同时起了 5 个微服务它们分布在不同的机器上互相之间怎么找到对方总不能把 IP 和端口硬编码在配置里吧。JeecgBoot 的微服务架构用 Nacos 解决服务注册发现顺带把微服务配置管理也收进了同一个控制台。Nacos 在这里到底干什么把 Nacos 想象成小区门禁系统每户入住先登记房号和姓名注册访客报上房号就能找到人发现有人搬走了门禁自动失效。JeecgBoot 里每个微服务启动时都走一遍这套流程Nacos 具体干三件事服务注册发现服务启动自动上报自己的实例调用方按服务名拉取健康实例列表全程不用写死地址配置中心数据库、Redis、Quartz 等公共配置集中在 Nacos 上改一处、全部服务感知健康检查实例心跳异常会被自动摘除调用方再也不会把请求发给一台已经宕掉的机器。docker-compose 一键拉起 Nacos 并验证服务注册整套环境在 jeecg-server-cloud 的 docker-compose.yml 里定义进入该目录执行一条命令docker-compose -f jeecg-server-cloud/docker-compose.yml up -d等一两分钟Nacos 控制台在 http://localhost:8848/nacos 账号 nacos/nacos进入服务管理 → 服务列表能看到 jeecg-system、jeecg-demo、jeecg-gateway 等实例。不放心就用接口验一下curl http://localhost:8848/nacos/v3/admin/ns/instance/list?serviceNamejeecg-systemgroupNameDEFAULT_GROUP返回里出现healthy:true说明注册成功。想脱离 Docker 本地调试的话在 jeecg-system-cloud-start 下跑mvn spring-boot:run即可可选。读懂 application.yml 里的 Nacos 配置占位符以 jeecg-system-cloud-start 的 application.yml 为例核心就这几行spring: cloud: nacos: config: server-addr: config.server-addr # Maven 构建期占位符打包时被 profile 替换成真实地址 group: config.group # 配置分组默认 DEFAULT_GROUP namespace: config.namespace # 环境隔离维度dev/test/prod 各一个 username: config.username password: config.password discovery: server-addr: ${spring.cloud.nacos.config.server-addr} # 复用 config 的地址 group: config.group namespace: config.namespace config: import: - optional:nacos:jeecg.yaml # 公共配置从 Nacos 拉取 - optional:nacos:jeecg-profile.name.yaml # 环境专属配置那些config.server-addr双 at 符号是 Maven 占位符真实的地址、账号写在根 pom 的 profile 里dev、test、docker、prod 各一份mvn package -P dev打包时被替换进 yml所以同一套代码换个 profile 就能指向不同环境。optional:nacos:则表示这份配置来自 Nacos 而非本地 classpath前缀 optional 意味着 Nacos 没连上或配置不存在时不阻止启动只是少加载这部分。各环境应录入的配置内容可对照 jeecg-cloud-nacos 配置文件。服务之间怎么看见彼此以 demo 模块里的 JeecgTestClient 为例它就是一个普通 Java 接口类上标了FeignClient(value jeecg-demo)方法上标GetMapping(/test/getMessage)。你调client.getMessage(张三)时并不关心 demo 服务跑在哪台机器、哪个端口Feign 在真正发请求前先拿服务名jeecg-demo到 Nacos 查健康实例列表再由负载均衡组件按规则挑一个最后把 HTTP 请求打过去。哪台实例挂了Nacos 健康检查会把它摘掉负载均衡自然不再选它。从浏览器进来的流量走另一条路统一打到 9999 端口的 jeecg-gateway 网关网关从 Nacos 读取路由配置按路径前缀转发到对应服务。整条链路上没有任何一处写死 IP 和端口实例扩缩容、换机器部署对调用方都是无感的。微服务 Nacos 踩坑速查注册失败与配置不生效服务注册失败你看到什么Nacos 控制台服务列表里压根没有你的服务或者实例状态一直是 NOT HEALTHY。先查哪里启动日志里 Nacos 相关异常以及curl http://nacos地址:8848/nacos/是否通。怎么解决确认打包时激活的 profile 对不对、替换出的 server-addr 是不是当前环境容器环境里地址必须是 Docker 网络内主机名 jeecg-boot-nacos写成 localhost 是典型错误再核对 Nacos 控制台实际账号日志里出现认证失败就是用户名密码不对。配置不生效你看到什么控制台明明改了配置服务行为却纹丝不动。先查哪里这份配置所在的 namespace 和 group是否与 application.yml 里解析后的值一致。怎么解决两边对齐后重启验证并确认 YAML 缩进合法格式解析失败时应用会整份丢弃该配置还要留意数据库、Redis 这类连接配置通常只在启动时读取改完需要重启只有声明了动态刷新的属性才支持热更新。上生产前盯住 Nacos 集群、命名空间与权限Nacos 至少 3 节点组集群单机模式进程一挂所有注册与配置随之不可用集群模式下节点间通过 Raft 协议同步配置容忍单节点故障。按环境拆分命名空间dev、test、prod 各占一个 namespace实例列表和配置互不可见避免测试实例混进生产列表抢流量。配置权限按最小化分配能写生产 namespace 的账号只给发布负责人其他角色默认只读改配置留痕。收尾Nacos 在 JeecgBoot 微服务架构里只干三件事服务注册发现、配置中心、健康摘除。所有服务对 Nacos 的认知都收敛在 pom 的 profile 占位符和控制台里。控制台里看得到实例、拉得到配置这两步验证通过后面排查问题就有了确定的起点。下一步可以看看网关的限流怎么做仓库里的网关模块已经接了 Sentinel限流降级规则同样走 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),仅供参考
