SpringCloud整合Nacos(一)----------- 使用Nacos作为注册中心

一、Nacos简介

   Nacos核心提供两个功能:服务注册与发现,动态配置管理。

  1、服务注册与发现

     Nacos提供基于DNS和基于RPC的服务发现,即能被用来支持https/http的服务注册与发现,也支持RPC如dubbo的服务注册与发现。

    与Dubbo使用的zookeeper相比而言,两者差异还是比较大的,zookeeper是一种分布式的协调服务,它天生是作为分布式数据一致性场景下的解决方案,所以zookeeper是CP的,它牺牲了可用性来保证一致性,在极端情况下(master选举期间)服务会对外停止,对于服务可用性要求比较高的系统是难以接受的。Nacos是一种去中心化的架构,属于CAP理论里的AP架构,支持最终一致性,在分布式服务发现与注册场景下具有很不错的性能。目前dubbo官方也支持使用Nacos代替zookeeper。

    2、动态配置服务

     动态修改配置并实时生效对于服务端的同学而已并不陌生,这种服务能够让我们的服务拥有更多的灵活性,不需要重启服务即可做到配置实时生效,非常适合于“配置优先”的服务开发。

二、Nacos安装(windows)

   1.下载安装

     下载地址:https://github.com/alibaba/nacos/releases/tag/1.1.0 

     选择:nacos-server-1.1.0.zip或者nacos-server-1.1.0.tar.gz 下载;下载完成解压。解压文件中的bin文件夹中有个startup.cmd文件,双击该文件就可以启动。启动成功后会弹出一个cmd窗口。启动失败则不会弹出。

SpringCloud整合Nacos(一)----------- 使用Nacos作为注册中心_第1张图片

   2.访问

   访问地址:http://localhost:8848/nacos/index.html    用户名密码:nacos/nacos

SpringCloud整合Nacos(一)----------- 使用Nacos作为注册中心_第2张图片

三、使用Nacos作为注册中心 

      1.我的环境

           windows7、JDK8、nacos-server-1.1.0、springboot-2.1.9.RELEASE、springcloud-Greenwich.SR3、spring-cloud-alibaba-dependencie-0.9.0.RELEASE

       2.创建服务提供者

           创建一个聚合工程SpringCloudNacos作为父工程,pom.xml如下



    4.0.0

    com.learning.nacos
    springcloudnacos
    0.0.1-SNAPSHOT
    springcloudnacos
    Demo project for Spring Boot
    
    
        1.8
        2.1.9.RELEASE
        Greenwich.SR3
        0.9.0.RELEASE
    

    
        
            org.projectlombok
            lombok
            1.18.2
            provided
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
        
            org.junit.jupiter
            junit-jupiter-api
            5.5.2
            test
        
    

    
    
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring-cloud.version}
                pom
                import
            
            
                org.springframework.boot
                spring-boot-dependencies
                ${spring-boot.version}
                pom
                import
            
            
                org.springframework.cloud
                spring-cloud-alibaba-dependencies
                ${nacos.version}
                pom
                import
            
        
    


在父工程springcloudnacos下创建子工程nacos-provider(服务提供者)。pom.xml如下:



    4.0.0
    
        com.learning.nacos
        springcloudnacos
        0.0.1-SNAPSHOT
    
    com.sprincloud.nacos
    nacos-provider
    0.0.1-SNAPSHOT
    nacos-provider
    Demo project for Spring Boot

    
        1.8
    

    
        
            org.springframework.boot
            spring-boot-starter-web
        
        
        
            org.springframework.cloud
            spring-cloud-starter-alibaba-nacos-discovery
            0.9.0.RELEASE
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    


在启动类NacosProviderApplication中提供一个对外接口,并添加@EnableDiscoveryClient注解,开启注册发现功能。

package com.sprincloud.nacos.nacosprovider;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@EnableDiscoveryClient
@SpringBootApplication
public class NacosProviderApplication {

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

    @GetMapping("/hello")
    public String helloNacos(){
        return "Hello Nacos !";
    }
}

最好一步:application.yml配置文件:

server:
  port: 8001
spring:
  application:
    name: nacos-provide
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

3.创建服务消费者

在父工程springcloudnacos下创建子工程nacos-consumers(服务消费者)。pom.xml文件和nacos-provider一样。

服务消费者通过TestTemplate+Ribbon进行服务调用;NacosConsumersApplication启动类代码如下:

package com.springcloud.nacos.nacosconsumers;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
@EnableDiscoveryClient
@SpringBootApplication
public class NacosConsumersApplication {

    public static void main(String[] args) {
        SpringApplication.run(NacosConsumersApplication.class, args);
    }
    @Autowired
    private RestTemplate template;
    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
    @GetMapping("/consumer")
    public String test1() {
        return template.getForObject("http://nacos-provider/hello",String.class);
    }
}

application.yml配置如下:

server:
  port: 8002
spring:
  application:
    name: nacos-consumers
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

4.启动测试

    先启动启动nacos,然后运行刚刚创建好的两个子工程。

SpringCloud整合Nacos(一)----------- 使用Nacos作为注册中心_第3张图片

你可能感兴趣的:(springcloud,maven,springboot)