• spring boot2X整合Consul一服务注册与发现


    Consul 

      是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置。

      关键特性:

        服务注册/发现

        数据强一致性保证

        多数据中心

        健康检查

        key/value存储

    1.下载 https://www.consul.io/downloads.html

      eg:下载的文件consul_1.6.1_windows_amd64.zip

      解压

      在path添加consul.exe所在路径

    2.启动

      启动就是运行一个Consul Agent实例

      可以作为Server或Client角色运行

    consul agent -dev

     

      -dev 表示开发模式运行, -server 表示服务模式运行

      说明:

        启动dev模式需要使用到的端口有

    8300 服务间通信(tcp)
    8301 lan cossip的端口
    8302 wan gossip的端口
    8500 web ui界面的端口
    8600 dns通信

    浏览器打开http://localhost:8500

    3.spring boot 整合

     spring boot 版本 2.2.1.RELEASE

    (1)添加依赖

    修改pom.xml

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Greenwich.SR3</spring-cloud.version>
    </properties>
    
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
        </dependency>
    </dependencies>
    
    <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>
        </dependencies>
    </dependencyManagement>

    (2)修改配置

    application.properties

    server.port=8010
    
    spring.application.name=provider
    spring.cloud.consul.host=localhost
    spring.cloud.consul.port=8500
    spring.cloud.consul.discovery.health-check-path=/actuator/health
    spring.cloud.consul.discovery.service-name=service-provider
    spring.cloud.consul.discovery.heartbeat.enabled=true
    
    management.endpoints.web.exposure.include=*
    management.endpoint.health.show-details=always

    说明:

      spring.cloud.consul.discovery.service-name是指注册到 Consul 的服务名称,后期客户端会根据这个名称来进行服务调用

    (3)修改启动类

    开启服务发现支持,添加注解 @EnableDiscoveryClient

    package com.xyz.provider;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    
    @EnableDiscoveryClient
    @SpringBootApplication
    public class ProviderApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(ProviderApplication.class, args);
        }
    
    }
    View Code

    (4)添加测试方法

    package com.xyz.provider.controller;
    
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class demoController {
        @RequestMapping("/hello")
        public String Hello(){
            return "hello,provider";
        }
        
    }

    浏览器打开http://localhost:8500

  • 相关阅读:
    Android CTS 测试
    Cygwin 不兼容Win7 64
    真滴有太多不懂的的东西,有点扛不住了。
    ffmpeg yasm not found, use disableyasm for a crippled build
    手机搜索不到 Connectify
    Android ICS 横竖屏切换时不销毁Activity
    MinGw\bin\ar.exe: libavcodec/: Permission denied
    Cannot complete the install because one or more required items could not be found.
    Eclipse 启动时报错 JVM terminated. Exit code=1
    【Java 从入坑到放弃】No 5. 控制流程
  • 原文地址:https://www.cnblogs.com/baby123/p/11834449.html
Copyright © 2020-2023  润新知