微服务之Nacos使用

一、Nacos

1、基本概念

 

(1)Nacos 是阿里巴巴推出来的一个新开源项目,是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

(2)常见的注册中心:

  1. Eureka(原生,2.0遇到性能瓶颈,停止维护)

  2. Zookeeper(支持,专业的独立产品。例如:dubbo)

  3. Consul(原生,GO语言开发)

  4. Nacos

    相对于 Spring Cloud Eureka 来说,Nacos 更强大。Nacos = Spring Cloud Eureka + Spring Cloud Config

Nacos 可以与 Spring, Spring Boot, Spring Cloud 集成,并能代替 Spring Cloud Eureka, Spring Cloud Config

  • 通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-discovery 实现服务的注册与发现。

(3)Nacos是以服务为主要服务对象的中间件,Nacos支持所有主流的服务发现、配置和管理。

Nacos主要提供以下四大功能:

  1. 服务发现和服务健康监测

  2. 动态配置服务

  1. 动态DNS服务

  1. 服务及其元数据管理

(4)Nacos结构图

微服务之Nacos使用_第1张图片

(5) Nacos 提供功能

微服务之Nacos使用_第2张图片

微服务之Nacos使用_第3张图片

2、Nacos下载和安装

 

(1)下载地址和版本

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

下载版本:nacos-server-1.1.4.tar.gz或nacos-server-1.1.4.zip,解压任意目录即可

安装 jdk1.8 以上版本 且必须配置环境变量 JAVA_HOME

(2)启动nacos服务

- Linux/Unix/Mac

启动命令(standalone代表着单机模式运行,非集群模式)

启动命令:sh startup.sh -m standalone

- Windows

启动命令:cmd startup.cmd 或者双击startup.cmd运行文件。

微服务之Nacos使用_第4张图片

启动成功

访问:http://localhost:8848/nacos

用户名密码:nacos/nacos

微服务之Nacos使用_第5张图片

配置列表

微服务之Nacos使用_第6张图片

服务列表

微服务之Nacos使用_第7张图片

二、nacos 服务注册

2.1 创建服务生产者

微服务之Nacos使用_第8张图片

填写好服务提供者名称

微服务之Nacos使用_第9张图片

微服务之Nacos使用_第10张图片

微服务之Nacos使用_第11张图片

项目结构

微服务之Nacos使用_第12张图片

 

pom.xml文件



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.3.1.RELEASE
         
    
    cn.nacos.provider
    nacos-provider
    0.0.1-SNAPSHOT
    nacos-provider
    Demo project for Spring Boot

    
        1.8
    

    
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
            
                
                    org.junit.vintage
                    junit-vintage-engine
                
            
        

        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
            2.0.1.RELEASE
        

        
        
            org.springframework.cloud
            spring-cloud-starter-openfeign
            2.1.1.RELEASE
        
    

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


 

application.yml文件

server:
  port: 8086
spring:
  application:
    name: nacos-provider
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
logging:
  level:
    root: info
    org.springframework: info

 

NacosProviderController代码
@RestController
public class NacosProviderController {
    @GetMapping("/provider")
    public String provider(){
        return "provider invoke";
    }
}
NacosProviderApplication启动类
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class NacosProviderApplication {

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

}

最后启动项目

微服务之Nacos使用_第13张图片

 

查看服务列表

微服务之Nacos使用_第14张图片

 

2.1 创建服务消费者

创建脚手架,有时候会出现下面这种情况Initialization failed for 'https://start.spring.io'
Please check URL, network and proxy settings.Error message:
Cannot download 'https://start.spring.io': connect timed ou

微服务之Nacos使用_第15张图片

解决:改url地址,改成http://start.spring.io,或者https://start.aliyun.com/

微服务之Nacos使用_第16张图片

 

微服务之Nacos使用_第17张图片

 

微服务之Nacos使用_第18张图片

微服务之Nacos使用_第19张图片

项目结构

微服务之Nacos使用_第20张图片

pom.xml代码



    4.0.0
    cn.nacos.consumer
    nacos-consumer
    0.0.1-SNAPSHOT
    nacos-consumer
    Demo project for Spring Boot

    
        1.8
        UTF-8
        UTF-8
        2.3.0.RELEASE
    

    
        
            org.springframework.boot
            spring-boot-starter-web
        


        
            org.springframework.boot
            spring-boot-starter-test
            test
            
                
                    org.junit.vintage
                    junit-vintage-engine
                
            
        

        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
            2.0.1.RELEASE
        

        
        
            org.springframework.cloud
            spring-cloud-starter-openfeign
            2.1.1.RELEASE
        

    

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

    
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                
                    1.8
                    1.8
                    UTF-8
                
            
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    


application.yml代码

server:
  port: 8087
spring:
  application:
    name: nacos-consumer
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
logging:
  level:
    root: info
    org.springframework: info

ProviderClient代码

@FeignClient(value = "nacos-provider")
public interface ProviderClient {

    /**
    * @Author: M
    * @Description: 调用生产者
    * @DateTime: 2020/7/16
    * @Params: []
    * @Return java.lang.String
    */
    @GetMapping("/provider")
    public String provider();
}

ConsumerController代码

@RestController
public class ConsumerController {

    @Autowired
    private ProviderClient providerClient;

    /**
    * @Author: M
    * @Description: 调用Client接口
    * @DateTime: 2020/7/16
    * @Params: []
    * @Return java.lang.String
    */
    @GetMapping("consumer")
    public String consumer(){
        String provider = providerClient.provider();
        return "consumer invoke "+"|"+provider;
    }
}

启动类NacosConsumerApplication代码

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class NacosConsumerApplication {

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

}

最后启动生产者跟消费者,启动成功

微服务之Nacos使用_第21张图片

注:在这里提一下Services窗口是怎么出来的,如果idea没有这个窗口的话

1、按两次Shift健,弹出如下窗口

 

输入Application Servers View,如图设置,重新启动idea,右下角会弹出一个提示,然后确定就可以了

微服务之Nacos使用_第22张图片

回归这个项目,查看服务列表

微服务之Nacos使用_第23张图片

通过消费者访问提供者,http://localhost:8087/consumer

微服务之Nacos使用_第24张图片

你可能感兴趣的:(微服务之Nacos使用)