Nacos服务注册发现配置实战:新手入门完整指南
为什么你需要搞懂Nacos服务注册发现配置
微服务架构下,各个服务需要相互通信,但IP和端口经常变化。
Nacos 就是用来解决这个问题的——它提供一个中心化的“电话簿”,服务启动时自动注册进去,其他服务通过名字就能找到它。
今天这篇教程会带你从零完成 Nacos服务注册发现配置,让你亲手跑通一个能用的小例子。
开始前先准备好这几样东西
- JDK 1.8 或更高:Nacos 依赖 Java 环境。去 Oracle 官网 下载安装,配置好
JAVA_HOME环境变量。安装完成后在终端执行java -version检查版本。 - MySQL 5.7+:Nacos 默认使用内嵌数据库,但生产环境推荐用 MySQL。新建一个数据库,比如
nacos_config,然后执行 Nacos 安装包里的conf/nacos-mysql.sql建表。 - Nacos 服务端:到 GitHub Releases 下载最新稳定版压缩包(如
nacos-server-2.2.3.tar.gz)。解压到服务器上的目录,比如/usr/local/nacos。
小提醒:如果你的服务器内存不足 1GB,启动 Nacos 前需要调整 JVM 参数,后面避坑部分会讲。
一步一步修改配置文件,让Nacos用上MySQL
Nacos 默认连接内嵌 Derby 数据库,不支持持久化。
我们要改成 MySQL,这样才能在重启后保留服务注册信息。
1. 修改 application.properties
进入 Nacos conf 目录,找到 application.properties 文件,打开后找到以下配置区域,取消注释并修改:
# 启用 MySQL 数据源
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://localhost:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&serverTimezone=Asia/Shanghai
db.user=你的数据库用户名
db.password=你的数据库密码
如果用的是 MySQL 8.0+,别忘了在 db.url.0 里加上 &allowPublicKeyRetrieval=true。
2. 修改 cluster.conf (仅单机模式可跳过)
如果你部署的不是集群,保持单机模式即可。
单机模式下此文件不需要动。
3. 启动 Nacos
回到 Nacos 的 bin 目录,执行启动命令(Linux/Mac):
sh startup.sh -m standalone
Windows 用 startup.cmd -m standalone。
看到控制台输出 Nacos started successfully 就说明启动成功了。
让一个Spring Boot服务成功注册到Nacos
这里我们拿一个简单的 Spring Boot 项目做演示,项目名为 service-demo。
1. 添加 Nacos 服务发现依赖
在 pom.xml 里加入:
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
同时确保 spring-cloud-alibaba 版本与 Spring Boot 版本兼容,建议对照 官方版本说明 选择。
2. 配置 bootstrap.yml
在 src/main/resources 下创建 bootstrap.yml,配置 Nacos 地址和服务名:
spring:
application:
name: service-demo
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
3. 启动应用并检查注册结果
运行 Spring Boot 应用的主类。
控制台会出现类似 Registering service... succeeded 的日志。
此时打开浏览器访问 http://localhost:8848/nacos,默认用户名密码都是 nacos,进入“服务管理”页面,你应该能看到 service-demo 出现在服务列表里,状态为“健康”。
踩坑经验:这些细节不注意容易卡住半天
- 端口被占用:Nacos 默认端口 8848,如果冲突,在
application.properties里修改server.port=8849。 - MySQL 连接报错:常见原因有数据库没建表、密码错误、时区不对。检查
nacos_config中是否已有数据表(至少几十张)。 - 服务注册不上:检查
spring.application.name是否设置,bootstrap.yml 是否被读取(优先于 application.yml)。如果用了@EnableDiscoveryClient注解,确保它在启动类上。 - 内存不足导致启动失败:编辑
startup.sh中的JAVA_OPT,把-Xms2g -Xmx2g改小,比如-Xms512m -Xmx512m。 - 命名空间混淆:默认命名空间为 public,如果你的服务注册到了其他命名空间,登录时注意切换到对应空间查看。
三步验证你的Nacos服务注册发现配置是否成功
- 看日志:无论是 Nacos 还是你的 Spring Boot 应用,日志里都没有 ERROR 级异常,且出现“Registering service”成功提示。
- 看控制台:Nacos 管理界面“服务列表”里你的服务名出现,并显示“健康实例数”大于 0。
- 模拟调用:如果你有另一个服务(比如
service-consumer),可以通过@LoadBalanced RestTemplate的http://service-demo/api/test方式调用,能获取到正确响应说明注册发现全部正常。
最后说两句
到这里你已经完成了完整的 Nacos服务注册发现配置。
实际生产环境中还会涉及集群部署、权限控制和持久化调优,但今天这套基础流程是后续所有操作的地基。
建议你先在本地或测试机完整跑一遍,遇到问题优先回头看“踩坑经验”部分。
记住:任何高可用架构都是从一次成功的注册开始的。