微服务系列 之 Nacos 注册中心(服务发现)
前言
- 本工程在《微服务系列 之Nacos 注册中心(服务注册)》基础上,进行持续开发。
- 服务注册有两个模块:
service-machine和service-instance, - 当前是在
service-machine模块上进行功能开发&验证。
更新 pom.xml 文件
新增 test 依赖包的坐标,如下:
xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>

启动类添加注释
MachineApplication.java 启动类,添加 @EnableDiscoveryClient 注解,开启服务发现功能。
java
package com.junjiu.microservices;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
/**
* program: microservices-demo
* ClassName: MachineApplication
* description:
*
* @author: 君九
* @create: 2026-01-30 21:04
* @version: 1.0
**/
@EnableDiscoveryClient
@SpringBootApplication
public class MachineApplication {
public static void main(String[] args) {
SpringApplication.run(MachineApplication.class, args);
}
}
撰写测试类
在 test 包中新增测试 MachineDiscoveryTest.java
注意:
- 测试类所属的包路径,需和
MachineApplication.java启动类相同。

DiscoveryClient
测试类方法,如下:
java
@Autowired
DiscoveryClient discoveryClient;
@Test
public void discoveryClientTest() {
System.out.println("服务名称:");
discoveryClient.getServices().forEach(System.out::println);
System.out.println("---------------------------");
List<ServiceInstance> instances = discoveryClient.getInstances("service-machine");
System.out.println("服务信息:");
System.out.println(JSON.toJSONString(instances));
for (ServiceInstance instance : instances) {
System.out.println(instance.getHost() + ":" + instance.getPort());
}
}

输出日志如下:
java
2026-01-30T21:44:13.187+08:00 INFO 19136 --- [service-machine] [remote.worker.0] com.alibaba.nacos.common.remote.client : [db3981e9-7388-4dae-8604-747d980a92bf] Notify connected event to listeners.
2026-01-30T21:44:13.187+08:00 INFO 19136 --- [service-machine] [ main] com.alibaba.nacos.common.remote.client : [db3981e9-7388-4dae-8604-747d980a92bf] Register server push request handler:com.alibaba.nacos.common.remote.client.RpcClient$ConnectResetRequestHandler
2026-01-30T21:44:13.187+08:00 INFO 19136 --- [service-machine] [remote.worker.0] com.alibaba.nacos.client.naming : Grpc connection connect
2026-01-30T21:44:13.187+08:00 INFO 19136 --- [service-machine] [ main] com.alibaba.nacos.common.remote.client : [db3981e9-7388-4dae-8604-747d980a92bf] Register server push request handler:com.alibaba.nacos.common.remote.client.RpcClient$$Lambda/0x000001b17c6ee078
service-machine
service-instance
---------------------------
2026-01-30T21:44:13.197+08:00 INFO 19136 --- [service-machine] [ main] com.alibaba.nacos.client.naming : [SUBSCRIBE-SERVICE] service:service-machine, group:DEFAULT_GROUP, clusters:
2026-01-30T21:44:13.197+08:00 INFO 19136 --- [service-machine] [ main] com.alibaba.nacos.client.naming : [GRPC-SUBSCRIBE] service:service-machine, group:DEFAULT_GROUP, cluster:
2026-01-30T21:44:13.214+08:00 INFO 19136 --- [service-machine] [ main] com.alibaba.nacos.client.naming : init new ips(1) service: DEFAULT_GROUP@@service-machine -> [{"instanceId":"169.254.245.234#5826#DEFAULT#DEFAULT_GROUP@@service-machine","ip":"169.254.245.234","port":5826,"weight":1.0,"healthy":true,"enabled":true,"ephemeral":true,"clusterName":"DEFAULT","serviceName":"DEFAULT_GROUP@@service-machine","metadata":{"preserved.register.source":"SPRING_CLOUD","IPv6":"[2408:820c:8f1e:5650:54e7:c2f:4f57:3182]"},"ipDeleteTimeout":30000,"instanceHeartBeatInterval":5000,"instanceHeartBeatTimeOut":15000}]
2026-01-30T21:44:13.220+08:00 INFO 19136 --- [service-machine] [ main] com.alibaba.nacos.client.naming : current ips:(1) service: DEFAULT_GROUP@@service-machine -> [{"instanceId":"169.254.245.234#5826#DEFAULT#DEFAULT_GROUP@@service-machine","ip":"169.254.245.234","port":5826,"weight":1.0,"healthy":true,"enabled":true,"ephemeral":true,"clusterName":"DEFAULT","serviceName":"DEFAULT_GROUP@@service-machine","metadata":{"preserved.register.source":"SPRING_CLOUD","IPv6":"[2408:820c:8f1e:5650:54e7:c2f:4f57:3182]"},"ipDeleteTimeout":30000,"instanceHeartBeatInterval":5000,"instanceHeartBeatTimeOut":15000}]
服务信息:
[{"host":"169.254.245.234","instanceId":"169.254.245.234#5826#DEFAULT#DEFAULT_GROUP@@service-machine","metadata":{"nacos.instanceId":"169.254.245.234#5826#DEFAULT#DEFAULT_GROUP@@service-machine","nacos.weight":"1.0","nacos.cluster":"DEFAULT","IPv6":"[2408:820c:8f1e:5650:54e7:c2f:4f57:3182]","nacos.ephemeral":"true","nacos.healthy":"true","preserved.register.source":"SPRING_CLOUD"},"port":5826,"scheme":"http","secure":false,"serviceId":"service-machine","uri":"http://169.254.245.234:5826"}]
169.254.245.234:5826
NacosDiscoveryClient
测试类方法,如下:
java
@Autowired
NacosDiscoveryClient nacosDiscoveryClient;
@Test
public void nacosDiscoveryClientTest() {
for(String serviceName : discoveryClient.getServices()) {
System.out.println("=== 服务名称:" + serviceName);
List<ServiceInstance> instances = nacosDiscoveryClient.getInstances(serviceName);
for(ServiceInstance instance : instances) {
System.out.println("--->>> 完整数据:" + JSON.toJSONString(instance));
System.out.println("-->> IP:Port = " + instance.getHost() + ":" + instance.getPort());
System.out.println();
}
}
}

输出日志:
java
2026-01-30T21:56:59.365+08:00 INFO 2544 --- [service-machine] [remote.worker.0] com.alibaba.nacos.common.remote.client : [02e5c997-5625-4c6f-a6c1-f5834bbcdd6a] Notify connected event to listeners.
2026-01-30T21:56:59.365+08:00 INFO 2544 --- [service-machine] [remote.worker.0] com.alibaba.nacos.client.naming : Grpc connection connect
2026-01-30T21:56:59.365+08:00 INFO 2544 --- [service-machine] [ main] com.alibaba.nacos.common.remote.client : [02e5c997-5625-4c6f-a6c1-f5834bbcdd6a] Register server push request handler:com.alibaba.nacos.common.remote.client.RpcClient$ConnectResetRequestHandler
2026-01-30T21:56:59.365+08:00 INFO 2544 --- [service-machine] [ main] com.alibaba.nacos.common.remote.client : [02e5c997-5625-4c6f-a6c1-f5834bbcdd6a] Register server push request handler:com.alibaba.nacos.common.remote.client.RpcClient$$Lambda/0x00000209d86f1998
=== 服务名称:service-machine
2026-01-30T21:56:59.374+08:00 INFO 2544 --- [service-machine] [ main] com.alibaba.nacos.client.naming : [SUBSCRIBE-SERVICE] service:service-machine, group:DEFAULT_GROUP, clusters:
2026-01-30T21:56:59.374+08:00 INFO 2544 --- [service-machine] [ main] com.alibaba.nacos.client.naming : [GRPC-SUBSCRIBE] service:service-machine, group:DEFAULT_GROUP, cluster:
2026-01-30T21:56:59.387+08:00 INFO 2544 --- [service-machine] [ main] com.alibaba.nacos.client.naming : init new ips(1) service: DEFAULT_GROUP@@service-machine -> [{"instanceId":"169.254.245.234#5826#DEFAULT#DEFAULT_GROUP@@service-machine","ip":"169.254.245.234","port":5826,"weight":1.0,"healthy":true,"enabled":true,"ephemeral":true,"clusterName":"DEFAULT","serviceName":"DEFAULT_GROUP@@service-machine","metadata":{"preserved.register.source":"SPRING_CLOUD","IPv6":"[2408:820c:8f1e:5650:54e7:c2f:4f57:3182]"},"ipDeleteTimeout":30000,"instanceHeartBeatInterval":5000,"instanceHeartBeatTimeOut":15000}]
2026-01-30T21:56:59.393+08:00 INFO 2544 --- [service-machine] [ main] com.alibaba.nacos.client.naming : current ips:(1) service: DEFAULT_GROUP@@service-machine -> [{"instanceId":"169.254.245.234#5826#DEFAULT#DEFAULT_GROUP@@service-machine","ip":"169.254.245.234","port":5826,"weight":1.0,"healthy":true,"enabled":true,"ephemeral":true,"clusterName":"DEFAULT","serviceName":"DEFAULT_GROUP@@service-machine","metadata":{"preserved.register.source":"SPRING_CLOUD","IPv6":"[2408:820c:8f1e:5650:54e7:c2f:4f57:3182]"},"ipDeleteTimeout":30000,"instanceHeartBeatInterval":5000,"instanceHeartBeatTimeOut":15000}]
--->>> 完整数据:{"host":"169.254.245.234","instanceId":"169.254.245.234#5826#DEFAULT#DEFAULT_GROUP@@service-machine","metadata":{"nacos.instanceId":"169.254.245.234#5826#DEFAULT#DEFAULT_GROUP@@service-machine","nacos.weight":"1.0","nacos.cluster":"DEFAULT","IPv6":"[2408:820c:8f1e:5650:54e7:c2f:4f57:3182]","nacos.ephemeral":"true","nacos.healthy":"true","preserved.register.source":"SPRING_CLOUD"},"port":5826,"scheme":"http","secure":false,"serviceId":"service-machine","uri":"http://169.254.245.234:5826"}
-->> IP:Port = 169.254.245.234:5826
=== 服务名称:service-instance
2026-01-30T21:56:59.515+08:00 INFO 2544 --- [service-machine] [ main] com.alibaba.nacos.client.naming : [SUBSCRIBE-SERVICE] service:service-instance, group:DEFAULT_GROUP, clusters:
2026-01-30T21:56:59.515+08:00 INFO 2544 --- [service-machine] [ main] com.alibaba.nacos.client.naming : [GRPC-SUBSCRIBE] service:service-instance, group:DEFAULT_GROUP, cluster:
2026-01-30T21:56:59.518+08:00 INFO 2544 --- [service-machine] [ main] com.alibaba.nacos.client.naming : init new ips(1) service: DEFAULT_GROUP@@service-instance -> [{"instanceId":"169.254.245.234#5827#DEFAULT#DEFAULT_GROUP@@service-instance","ip":"169.254.245.234","port":5827,"weight":1.0,"healthy":true,"enabled":true,"ephemeral":true,"clusterName":"DEFAULT","serviceName":"DEFAULT_GROUP@@service-instance","metadata":{"preserved.register.source":"SPRING_CLOUD","IPv6":"[2408:820c:8f1e:5650:54e7:c2f:4f57:3182]"},"ipDeleteTimeout":30000,"instanceHeartBeatInterval":5000,"instanceHeartBeatTimeOut":15000}]
2026-01-30T21:56:59.518+08:00 INFO 2544 --- [service-machine] [ main] com.alibaba.nacos.client.naming : current ips:(1) service: DEFAULT_GROUP@@service-instance -> [{"instanceId":"169.254.245.234#5827#DEFAULT#DEFAULT_GROUP@@service-instance","ip":"169.254.245.234","port":5827,"weight":1.0,"healthy":true,"enabled":true,"ephemeral":true,"clusterName":"DEFAULT","serviceName":"DEFAULT_GROUP@@service-instance","metadata":{"preserved.register.source":"SPRING_CLOUD","IPv6":"[2408:820c:8f1e:5650:54e7:c2f:4f57:3182]"},"ipDeleteTimeout":30000,"instanceHeartBeatInterval":5000,"instanceHeartBeatTimeOut":15000}]
--->>> 完整数据:{"host":"169.254.245.234","instanceId":"169.254.245.234#5827#DEFAULT#DEFAULT_GROUP@@service-instance","metadata":{"nacos.instanceId":"169.254.245.234#5827#DEFAULT#DEFAULT_GROUP@@service-instance","nacos.weight":"1.0","nacos.cluster":"DEFAULT","IPv6":"[2408:820c:8f1e:5650:54e7:c2f:4f57:3182]","nacos.ephemeral":"true","nacos.healthy":"true","preserved.register.source":"SPRING_CLOUD"},"port":5827,"scheme":"http","secure":false,"serviceId":"service-instance","uri":"http://169.254.245.234:5827"}
-->> IP:Port = 169.254.245.234:5827
启动多应用
如下截图中,可知:目前每个服务模块,只启动了一个服务,现在启动多个服务(仅端口不同)。
启多个服务,因生产环境一般高可用架构多服务部署,本次仅用模拟生产多个应用服务。

示例:MachineApplication
-
选择服务模块,鼠标右键,选择
Copy Configuration...

在配置框中的
Program arguments文本框填写如下,新增服务端口:--server.port=5828

-
启动新服务

启动成功后,Nacos 服务中可查阅注册成功:

-
再次执行服务发现测试代码,输出日志如下:
仍能发现新的服务。

若有转载,请标明出处:https://blog.csdn.net/CharlesYuangc/article/details/157554818