Nacos简介
什么是Nacos?
-
定义:Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的服务发现与配置管理平台。
-
核心功能:
- 服务发现:管理微服务实例的注册与发现。
- 动态配置:实时更新应用配置,无需重启服务。
- 服务健康监测:自动检测服务健康状态,剔除故障节点。
为什么选择Nacos?
| 特性 | Nacos | Eureka | Consul |
|---|---|---|---|
| 配置管理 | ✔️ 支持动态配置 | ❌ 仅服务发现 | ✔️ 需额外组件 |
| 健康检查 | ✔️ TCP/HTTP/MySQL等多协议 | ✔️ HTTP心跳 | ✔️ 多种检查方式 |
| 易用性 | ✔️ 中文文档友好,集成Spring Cloud Alibaba | ✔️ 简单 | ❌ 复杂 |
nacos安装启动
我这里只讲在 windows 下的安装,linux的部署就自行下来了解
自行前往官网下载 zip 压缩包即可,选择 2.x 版本,自行解压到一个目录就是安装完成了
来到你的安装目录下的 bin 目录里面打开 cmd
输入启动命令:
cmd
startup.cmd -m standalone
启动之后在浏览器访问,默认账号:nacos,密码:nacos(是否需要看你的配置,如果没有就不管)
http
http://localhost:8848/nacos

到这里安装就算完成了
服务注册
操作步骤:
-
依赖配置
版本根据你的项目管理自行选择合适的(后面的也一样)
xml<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2023.0.1.0</version> </dependency> -
填写配置文件
yaml
spring:
application:
name: small-order # 应用名称,会在 nacos 中显示
cloud:
nacos:
server-addr: 127.0.0.1:8848 # nacos 地址
- 启动服务

验证注册结果
- Nacos控制台 ➔ 服务管理 ➔ 服务列表 ➔ 查看
small-order实例。
启动我们的springboot程序就可以在服务管理中看到我们注册的服务了,服务名称就是配置文件里面的名称
服务消费者发现与调用
我这里使用 springboot 的单元测试进行演示,大家导入相关的依赖就可以了
我这里多注册了一个服务small-product到了nacos中,你可以不注册,只要nacos有一个服务就可以
具体步骤:
- 开启服务发现功能
在springboot启动类上加上@EnableDiscoveryClient 注解
java
@EnableDiscoveryClient // 开启服务发现功能
@SpringBootApplication
public class ProductApplication {
public static void main(String[] args) {
SpringApplication.run(ProductApplication.class, args);
}
}
- 注入相关的bean
java
@Autowired
DiscoveryClient discoveryClient;
// 二选一即可,都是一样的
@Autowired
NacosServiceDiscovery nacosServiceDiscovery;
注意要在 springboot 的环境使用,这两个bean的功能都是相同的,
DiscoveryClient是spring的规范,使用其他的注册中心也可以使用,而NacosServiceDiscovery是nacos才可以使用的
- 使用
我直接给出了测试类的代码,通过第二步注入的 bean 可以获取到已经向nacos注册了的服务的信息,在调用其他服务的时候,会使用到这些信息。
java
@SpringBootTest
public class DiscoveryTest {
@Autowired
DiscoveryClient discoveryClient;
@Autowired
NacosServiceDiscovery nacosServiceDiscovery;
@Test
void discoveryClientTest() {
for (String service : discoveryClient.getServices()) {
System.out.println("service = " + service);
// 获取ip 和端口
discoveryClient.getInstances(service).forEach(instance -> {
System.out.println("host = " + instance.getHost());
System.out.println("port = " + instance.getPort());
});
}
}
}
运行截图:

配置中心
具体步骤:
- 添加依赖
xml
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2023.0.1.0</version>
</dependency>
- 修改配置文件
-
Data ID 格式:
bash${spring.application.name}-${spring.profiles.active}.${file-extension}- 示例:
user-service-dev.yaml
我这里就不遵守了
- 示例:
yaml
spring:
application:
name: small-product # 应用名称,会在 nacos 中显示
cloud:
nacos:
server-addr: 127.0.0.1:8848 # nacos 地址
config:
import: nacos:sall-product.yaml # 新添加的配置
nacos:sall-product.yaml冒号后面的是在nacos中创见的Data Id,如图:
创建好记得发布

- 重启服务,让配置生效
- 运行查看结果
可以在nacos中修改配置文件的信息,不用重启服务也能完成配置的更新。
java
@SpringBootTest
public class DiscoveryTest {
@Value("${small.name}")
String name;
@Value("${small.age}")
Integer age;
@Test
void Test() {
System.out.println("name:" + name + ",age:" + age);
}
}