Nacos实现服务的注册和发现

什么是Nacos?
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。简之就是作为配置中心和注册中心。
Nacos的安装

应用构建Nacos作为注册中心实现

  1. 构建SpringBoot项目,修改pom.xml
   
        org.springframework.boot
        spring-boot-starter-parent
        2.0.0.RELEASE
         
    

      
          
              org.springframework.cloud
              spring-cloud-dependencies
              Finchley.SR1
              pom
              import
          
          
              org.springframework.cloud
              spring-cloud-alibaba-dependencies
              0.2.2.RELEASE
              pom
              import
          
      
  

    
        
            org.springframework.boot
            spring-boot-starter
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
            
                
                    org.junit.vintage
                    junit-vintage-engine
                
            
        
        
            org.springframework.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        
    

关于pom中部分定义的说明:
parent:定义spring boot的版本
dependencyManagement:spring cloud的版本以及spring cloud alibaba的版本,由于spring cloud alibaba还未纳入spring cloud的主版本管理中,所以需要自己加入
dependencies:应用中使用的依赖包。spring-cloud-starter-alibaba-nacos-discovery是nacos依赖包。因为在dependencyManagement中已经引入了版本,所以这里就不用指定具体版本了。

  1. 创建modul ,定义名字为 member作为生产者

    创建启动类,并添加@EnableDiscoveryClient 开启服务的注册与发现,以及controller作为web访问接口。自己测试的是@EnableDiscoveryClient 可加可不加,自己也不知道原因
    代码实现如下:

@SpringBootApplication
@EnableDiscoveryClient    
public class MemberApplication {
    public static void main(String[] args) {
        SpringApplication.run(MemberApplication.class, args);
    }

    @RestController
    static class TestController {
        @RequestMapping("/hello")
        public String hello(@RequestParam String name) {
            return "hello " + name;
        }
    }
}

添加配置文件,连接nacos

spring:
  application:
    ###服务的名称
    name: nacos-client-member
  cloud:
    nacos:
      discovery:
        ###nacos注册地址
        server-addr: 127.0.0.1:8848

启动后将会在nacos上面看到服务名称为nacos-client-member的服务
Nacos实现服务的注册和发现_第1张图片
3. 创建module,定义名字为order作为消费者
和创建生产者的步骤一样,创建启动类和controller。这里通过LoadBalancerClient 或者 DiscoveryClient 均可获取注册中心上相对应的服务,再通过RestTemplate 进行rpc远程调用。

@SpringBootApplication
@EnableDiscoveryClient
public class OrderApplication {
    public static void main(String[] args) {
        SpringApplication.run(OrderApplication.class,args);
    }
@RestController
    public static  class TestController{
    @Autowired
    LoadBalancerClient loadBalancerClient;

    @Autowired
    DiscoveryClient discoveryClient;
    @RequestMapping("/test")
    public String test(){
        //通过LoadBalancerClient获取注册中心上面服务名字为nacos-client-member的服务
       // ServiceInstance serviceInstance = loadBalancerClient.choose("nacos-client-member");
        //通过DiscoveryClient获取服务名称为nacos-client-member的所有服务实例,因为可能是集群,所以返回的实例结果集是list
        List instances = discoveryClient.getInstances("nacos-client-member");
        String url = instances.get(0).getUri()+ "/hello?name=" + "lixiaonan";
       // String url = serviceInstance.getUri() + "/hello?name=" + "lixiaonan";
        RestTemplate restTemplate = new RestTemplate();
        String result = restTemplate.getForObject(url, String.class);
        return "调用生产者hello接口的返回结果:"+result;
    }
    }
}

配置nacos

spring:
  cloud:
    sentinel:
      transport:
        dashboard: 127.0.0.1:8718
      eager: true
    nacos:
      discovery:
        ###服务注册地址
        server-addr: 127.0.0.1:8848
  application:
    name: nacos-client-order
server:
  port: 9011

启动消费者后,在注册中心上也会看到名称为nacos-client-order的服务,通过访问http://localhost:9011/test 将会调用名称为nacos-client-member的生产者中hello接口。

自己测试结果如下:

调用生产者hello接口的返回结果:hello lixiaonan

参考资料:nacos官网文档

你可能感兴趣的:(Spring,Cloud,Alibaba)