Nacos 注册中心(服务注册、服务发现)

一、服务注册

1、依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

2、yaml

spring:
  cloud:
    nacos:
      serverAddr: 127.0.0.1:8848 #如果用的云上托管版本,输入可访问的Nacos Server地址即可
#  config:
#    import:
#      - nacos:nacos-config-example.properties?refreshEnabled=true
  application:
    name: service-order # 项目名称
server:
  port: 8000  # 端口号

3、启动springboot项目

4、查看

http://localhost:8848/nacos

二、服务发现

1、开启服务发现

在springboot启动类中添加注解

@EnableDiscoveryClient  

2、服务发现api 

a、DiscoveryClient  范围更广

测试 

package com.wt.order;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;

import java.util.List;

@SpringBootTest
public class DiscoveryTest {

    @Autowired
    private DiscoveryClient discoveryClient;

    @Test
    public void discoveryClientTest(){
        //获取所有的微服务
        List<String> services = discoveryClient.getServices();

        for (String service : services) {
            System.out.println("service = " + service);
            // 获取 微服务的 ip + port
            List<ServiceInstance> instances = discoveryClient.getInstances(service);
            for (ServiceInstance instance : instances) {
                System.out.println("ip+port:" + instance.getHost()+":"+ instance.getPort());
            }
        }
    }
}

b、NacosServiceDiscovery

测试

package com.wt.order;

import com.alibaba.cloud.nacos.discovery.NacosServiceDiscovery;
import com.alibaba.nacos.api.exception.NacosException;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.cloud.client.ServiceInstance;

import java.util.List;

@SpringBootTest
public class NacosDiscoveryTest {
    @Autowired
    private NacosServiceDiscovery nacosServiceDiscovery;

    @Test
    public void nacosDiscovery(){
        try {
            // 获取微服务
            List<String> services = nacosServiceDiscovery.getServices();
            for (String service : services) {
                System.out.println("service = " + service);
                // 获取 ip + port
                List<ServiceInstance> instances = nacosServiceDiscovery.getInstances(service);
                for (ServiceInstance instance : instances) {
                    System.out.println("ip+port:"+ instance.getHost()+":"+instance.getPort());
                }
            }
        } catch (NacosException e) {
            e.printStackTrace();
        }
    }
}

 

posted @ 2025-06-05 21:35  市丸银  阅读(18)  评论(0)    收藏  举报