上面两篇写了如何使用nacos做配置中心,有兴趣的童鞋可以回头看一下,《springboot使用nacos做配置中心》,以及《springboot使用nacos做配置中心(下)》,分别介绍了作为配置中心,数据默认存储方式和数据存储到mysql数据库的方式。
当然,nacos另一个特点是可以做注册中心,相对于zookeeper和eureka,nacos有以下特点:

  1. 他同时支持AP和CP模式,他根据服务注册选择临时和永久来决定走AP模式还是CP模式
  2. 自带分布式配置中心
  3. 选主节点效率更高,相对于zookeeper的30-60秒,提升到4-5秒。

一、引入配置

最小依赖原则,只需要引入nacos-discovery-spring-boot-starter即可

 

       <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>nacos-discovery-spring-boot-starter</artifactId>
            <version>${nacos-config-spring-boot.version}</version>
        </dependency>

二、添加配置项

 

nacos:
  discovery:
    server-addr: {服务端IP}:8848
spring:
  application:
    name: service-provider

三、开启服务发现

采用切面的方式,将所有服务注册上去。

 

@SpringBootApplication
@NacosPropertySource(dataId = "mos", autoRefreshed = true)
public class CoreApplication {

    @NacosInjected
    private NamingService namingService;

    @Value("${spring.application.name}")
    private String applicationName;

    @Value("${server.port}")
    private Integer serverPort;

    public static void main(String[] args) {
        SpringApplication.run(CoreApplication.class, args);
    }

    @PostConstruct
    public void registerService() throws NacosException {
        namingService.registerInstance(applicationName, "127.0.0.1", serverPort);
    }
}

四、测试

写一个测试类,获取当前注册的服务,nacos提供的有对应接口。

 

@RestController
@RequestMapping("discover")
public class DiscoverController {

    @NacosInjected
    private NamingService namingService;

    @GetMapping("get")
    public List<Instance> get(@RequestParam String serviceName) throws NacosException {
        return namingService.getAllInstances(serviceName);
    }

}

五、测试结果

1.服务未开启服务注册,返回一个空数组

  1. 开启服务注册后,会返回服务信息数组,如下图

     

    springboot使用nacos做注册中心_服务发现

    image.png