Consul 服务注册与发现(CP)

Posted by Beyonderwei on 2020-11-20
Words 445 and Reading Time 2 Minutes
Viewed Times

一、简介

​ Consul用于微服务的注册和发现,由Go语言编写,提供HTTP和DNS两种服务发现方式,支持HTTP、TCP、Docker、Shell脚本定制化,支持多数据中心,有可视化的Web界面。

二、安装

  • 拉镜像,当前最新1.9.3,Consul 官网

    docker pull consul:1.9.3

  • 运行得到容器 (默认是以开发模式启动,数据保存在内存中,持久化需要通过数据卷映射到宿主机)

    docker run -d --name=sc-consul -p 8500:8500 -e CONSUL_BIND_INTERFACE=eth0 consul

  • 访问页面查看Consul

    地址:http://ip地址:8500/

三、微服务注册

  • pom依赖,引入Consul

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-consul-discovery -->
    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-discovery</artifactId>
    </dependency>

    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
  • yaml配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    server:
    port: 8006

    spring:
    application:
    name: 服务名
    cloud:
    consul:
    host: Consul 服务器IP
    port: 8500
    discovery:
    service-name: ${spring.application.name}
    # 为了Consul可以进行健康检测
    heartbeat:
    enabled: true
  • 启动类添加服务发现注解

    @EnableDiscoveryClient

四、调用服务注册

  • pom依赖,引入Consul

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-consul-discovery -->
    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-discovery</artifactId>
    </dependency>

    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
  • yaml配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    server:
    port: 调用服务端口


    spring:
    application:
    name: 服务名
    cloud:
    consul:
    host: consul 服务IP
    port: 8500
    discovery:
    service-name: ${spring.application.name}
    # 为了Consul可以进行健康检测
    heartbeat:
    enabled: true
  • RestTemplate配置类

    1
    2
    3
    4
    5
    6
    7
    8
    9
    @Configuration
    public class ApplicationContextConfig {
    @LoadBalanced
    @Bean
    public RestTemplate getRestTemplate(){
    return new RestTemplate();
    }

    }
  • 调用服务时直接访问 http://微服务的注册名


本文为作者原创文章,未经作者允许不得转载。

...

...

00:00
00:00