spring cloud nacos 一 注册与发现实践

spring cloud nacos 注册与发现实践


0.创建maven父工程, pom.xml 如下



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.6.RELEASE
         
    
    com.sunup
    practice
    0.0.1-SNAPSHOT
    practice
    spring cloud practice

    
        UTF-8
        UTF-8
        1.8
        Greenwich.RELEASE
    

    
        practice-springcloud-nacos-consuer
        practice-springcloud-nacos-provider
    

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

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



1.创建两个微服务一个服务提供者practice-springcloud-nacos-provider和一个服务消费者practice-springcloud-nacos-consuer
spring cloud nacos 一 注册与发现实践_第1张图片
2.practice-springcloud-nacos-provider服务提供者, pom.xml 如下



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.6.RELEASE
         
    
    com.sunup
    practice-springcloud-nacos-provider
    0.0.1-SNAPSHOT
    practice-springcloud-nacos-provider
    spring cloud nacos server register and find

    
        1.8
    

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

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

        
            org.projectlombok
            lombok
            1.18.8
            provided
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

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



2.practice-springcloud-nacos-consuer服务消费者,pom.xml 如下



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.6.RELEASE
         
    
    com.sunup
    practice-springcloud-nacos-consuer
    0.0.1-SNAPSHOT
    practice-springcloud-nacos-consuer
    Demo project for Spring Boot

    
        1.8
    

    
        
        
            org.springframework.cloud
            spring-cloud-dependencies
        
        
            org.springframework.cloud
            spring-cloud-starter-alibaba-nacos-discovery
            0.9.0.RELEASE
        
        
            org.springframework.cloud
            spring-cloud-starter-ribbon
        
        
            org.springframework.cloud
            spring-cloud-starter-openfeign
            2.1.2.RELEASE
        

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

        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

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



3.配置好pom.xml 之后,在服务提供者启动类里面 加入注解@EnableDiscoveryClient

package com.sunup.practice;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@EnableDiscoveryClient
@SpringBootApplication
public class PracticeSpringcloudNacosProviderApplication {

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

}

4.在服务提供者写一个controller rest 服务

package com.sunup.practice.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Slf4j
public class ProviderController {
    @GetMapping("/hello")
    public String hi(@RequestParam(value = "name", defaultValue = "nacos", required = false) String name) {
        log.debug(name);
        return "hello" + name;
    }
}

5.在消费者启动类加入注解@EnableFeignClients

package com.sunup.practice;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@EnableFeignClients
@SpringBootApplication
public class PracticeSpringcloudNacosConsuerApplication {

    @LoadBalanced
    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }

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

}

6.在消费者写一个服务提供者的客户端接口

package com.sunup.practice.controller;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

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

    @GetMapping("/hello")
    String hello(@RequestParam(value = "name",defaultValue = "nacos",required = false)String name);
}

7.在消费者写一个controller rest 服务 并调用服务提供者提供的服务

package com.sunup.practice.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
public class ConsumerController {
    @Autowired
    private RestTemplate restTemplate;

    @Autowired
    private ProviderClient providerClient;

    @GetMapping("/helloFeign")
    public String helloFeign(){
        return providerClient.hello("feign");
    }
    @GetMapping("/helloResttemplate")
    public String resttemplate(){
        return restTemplate.getForObject("http://nacos-provider/hello?name=resttemplate",String.class);
    }
}

8.配置服务提供者和消费者的application.yml文件

提供者

server:
  port: 8762
 # 注意:下面注释了是因为 消费者可能会因为配置了context-path 而调用请求不到提供者的服务
 # servlet:
 #   context-path: /nacos-provider
spring:
  application:
    name: nacos-provider
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

消费者

server:
  port: 8763
   # 注意:下面注释了是因为 消费者可能会因为配置了context-path 而调用请求不到提供者的服务
 # servlet:
 #   context-path: /nacos-consuer
spring:
  application:
    name: nacos-consuer
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

9.下载spring cloud alibaba nacos 服务器
https://github.com/alibaba/nacos/releases 我下载的是1.0.1版
下载完成后需要注意(特别注意:不要解压到带空格的目录下,不然有可能服务不会注册成功)

解压后在bin目录下windows 点击 startup.cmd 运行
spring cloud nacos 一 注册与发现实践_第2张图片
启动成功!访问地址为 http://localhost:8848/nacos/

然后访问 http://localhost:8763/helloFeign 得到响应

spring cloud nacos 一 注册与发现实践_第3张图片

然后就成功了!源码 https://github.com/sunuping/spring-cloud-nacos

你可能感兴趣的:(spring,cloud,nacos)