zoukankan      html  css  js  c++  java
  • 服务注册与发现Nacos

    创建父工程,添加依赖:

        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.3.RELEASE</version>
        </parent>
    
        <properties>
            <java.version>1.8</java.version>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
            <spring-cloud-alibaba.version>2.1.0.RELEASE</spring-cloud-alibaba.version>
        </properties>
    
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>${spring-cloud.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
                <dependency>
                    <groupId>com.alibaba.cloud</groupId>
                    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                    <version>${spring-cloud-alibaba.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>

    服务提供者:

      1.pom.xml的配置

        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-openfeign</artifactId>
            </dependency>
        </dependencies>

      2.application.yml配置

    server:
      port: 56010
    spring:
      application:
        name: provider
      cloud:
        nacos:
          discovery:
            server-addr: localhost:8848 #如果是集群且不采用域名方式配置,需要配置多个集群ip,否则无法注册成功

      3.启动类

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

      4.服务实现

    @RestController
    public class ProviderController {
    
        @GetMapping("/service")
        public String service() {
            return "provider invoke";
        }
    }

    服务消费者:

      1.pom.xml的配置

        和服务提供者一样

      2.application.yml配置

    server:
      port: 56020
    spring:
      application:
        name: consumer
      cloud:
        nacos:
          discovery:
            server-addr: localhost:8848

      3.启动类

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

      4.远程代理定义

    @FeignClient(value = "provider")
    public interface ProviderClient {
    
        @GetMapping("/service")
        String service();
    }

      5.服务实现

    @RestController
    public class ConsumerController {
    
        @Autowired
        private ProviderClient providerClient;
    
        @GetMapping("/service")
        public String service() {
            String providerResult = providerClient.service();
            return "consumer invoke" + "|" + providerResult;
        }
    }

    访问地址:http://127.0.0.1:56020/service 成功调用,在nacos控制台也可以看到注册的服务

      

     应用通过Namespace、Server、Cluster(DEFAULT)的配置,描述了该服务向哪个环境(如开发环境)的哪个集群注册实例。

      

      集群作为实例的隔离,相同集群的实例才能相互感知。

      namespace、cluster-name若不填写都将采取默认值,namespace的默认是public命名空间,cluster-name的默认值为DEFAULT集群。

  • 相关阅读:
    指针和引用的区别
    vs不自动退出控制台程序的办法
    ads出现村田电容电感无法仿真的问题解决(`BJT1' is an instance of an undefined model `BJTM1')
    解决浏览器跨域的几中方式
    js的事件委托机制
    let和const命令
    JavaScript中闭包的写法和作用详解
    提升HTML5的性能体验系列之五 webview启动速度优化及事件顺序解析
    提升HTML5的性能体验系列之四 使用原生UI
    提升HTML5的性能体验系列之三 流畅下拉刷新和上拉
  • 原文地址:https://www.cnblogs.com/roadlandscape/p/12939440.html
Copyright © 2011-2022 走看看