Spring Cloud 注册中心之Consul

286 阅读2分钟

一、简介

  • 官方介绍中文翻译官方下载
  • 总的来说,consul可以提供注册服务。并且也可以通过网页监控。是一个eureka蛮不错的替代产品。
  • 值得一提的是,这也是一个保证AP(高可用性、分区容错性),而丢弃C(高一致性)的产品。

二、安装并使用

1. 安装

  • 为了模拟现实生产环境,本次将consul安装在centos7环境下。可以点击官方的下载地址,依据自己实际的环境进行选择。 image.png
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
sudo yum -y install consul

2. 开启consul服务

  • -dev表示目前正在开发环境,-client 0.0.0.0表示允许所有ip访问,必须要有这一步,否则无法远程访问。
consul agent -dev -client 0.0.0.0

3. 监控中心

  • 获取consul运行机器的ip地址
ifconfig
  • 在本地的浏览器上,根据ip地址,加上8500端口号,查看监控。看到以下界面,表示开启成功。 image.png

三、注册中心

  • 在Java上的操作,与Eureka、zk没有太大差别。

1. 导包

  • 最重要的,当然是spring-cloud-starter-consul-discovery
<dependencies>
    <!--SpringCloud consul-server -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-consul-discovery</artifactId>
    </dependency>
    <!-- SpringBoot整合Web组件 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <!--日常通用jar包配置-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

2. yaml配置文件

  • spring.cloud.consul.host根据实际情况来,和之前查的ip地址一致。端口号如果没修改,都是8500。
  • 值得一提的是,需要开启心跳,否则在监控界面会显示服务不健康。
# consul服务端口号
server:
  port: 8006

spring:
  application:
    name: cloud-payment-service
  # consul注册中心地址
  cloud:
    consul:
      host: 192.168.233.137
      port: 8500
      discovery:
        #hostname: 127.0.0.1
        service-name: ${spring.application.name}
        # 开启心跳
        heartbeat:
          enabled: true

3. 主启动类

@SpringBootApplication
@EnableDiscoveryClient//该注解用于向使用consul或者zookeeper作为注册中心时注册服务
public class PaymentApplication8006 {
  public static void main(String[] args) {
    SpringApplication.run(PaymentApplication8006.class, args);
  }
}

4. 查看监控

  • 目前已经有两个服务,分别具有一个实例了。 image.png