SpringCloudConsul基本使用

编程

1、Consul介绍

1.1、市面上常用的几款注册中心比较


还有一款比较火的nocas没有说,想要了解可以自行了解。
Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其它分布式服务注册与发现的方案,Consul 的方案更“一站式”,内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value 存储、多数据中心方案,不再需要依赖其它工具(比如 ZooKeeper 等)。使用起来也较 为简单。Consul 使用 Go 语言编写,因此具有天然可移植性(支持Linux、windows和Mac OS X);安装包仅包含一个可执行文件,方便部署,与 Docker 等轻量级容器可无缝配合。

1.2、Consul优势

  1. 使用 Raft 算法来保证一致性, 比复杂的 Paxos 算法更直接. 相比较而言, zookeeper 采用的是 Paxos, 而 etcd 使用的则是 Raft。
  2. 支持多数据中心,内外网的服务采用不同的端口进行监听。 多数据中心集群可以避免单数据中心的单点故障,而其部署则需要考虑网络延迟, 分片等情况等。 zookeeper 和 etcd 均不提供多数据中心功能的支持。
  3. 支持健康检查。 etcd 不提供此功能。
  4. 支持 http 和 dns 协议接口。 zookeeper 的集成较为复杂, etcd 只支持 http 协议。
  5. 官方提供 web 管理界面, etcd 无此功能。
    综合比较, Consul 作为服务注册和配置管理的新星, 比较值得关注和研究。

1.3、特性

  • 服务发现
  • 健康检查
  • Key/Value 存储
  • 多数据中心

1.4、Consul角色

  • client: 客户端, 无状态, 将 HTTP 和 DNS 接口请求转发给局域网内的服务端集群。
  • server: 服务端, 保存配置信息, 高可用集群, 在局域网内与本地客户端通讯, 通过广域网与其它数据中心通讯。 每个数据中心的 server 数量推荐为 3 个或是 5 个。

1.5、Consul工作原理

  1. 当 Producer 启动的时候,会向 Consul 发送一个 post 请求,告诉 Consul 自己的 IP 和 Port
  2. Consul 接收到 Producer 的注册后,每隔10s(默认)会向 Producer 发送一个健康检查的请求,检验Producer是否健康
  3. 当 Consumer 发送 GET 方式请求 /api/address 到 Producer 时,会先从 Consul 中拿到一个存储服务 IP 和 Port 的临时表,从表中拿到 Producer 的 IP 和 Port 后再发送 GET 方式请求 /api/address
  4. 该临时表每隔10s会更新,只包含有通过了健康检查的 Producer
    Spring Cloud Consul 项目是针对 Consul 的服务治理实现。Consul 是一个分布式高可用的系统,它包含多个组件,但是作为一个整体,在微服务架构中为我们的基础设施提供服务发现和服务配置的工具。

2、Consul使用

2.1、Consul安装(略)

2.2、consul 服务发现

  • spring-boot-starter-actuator: 健康检查依赖于此包
  • spring-cloud-starter-consul-discovery: 服务发现

2.2.1、Consul 服务端

spring.application.name=spring-cloud-consul-producer

server.port=8501

spring.cloud.consul.host=localhost

spring.cloud.consul.port=8500

#注册到consul的服务名称

spring.cloud.consul.discovery.serviceName=service-producer

启动类

@SpringBootApplication

@EnableDiscoveryClient

public class ConsulProducerApplication {

public static void main(String[] args) {

SpringApplication.run(ConsulProducerApplication.class, args);

}

}

添加了 @EnableDiscoveryClient 注解表示支持服务发现。

2.2.1、Consul 消费端

spring.application.name=spring-cloud-consul-consumer

server.port=8503

spring.cloud.consul.host=127.0.0.1

spring.cloud.consul.port=8500

#设置不需要注册到 consul 中

spring.cloud.consul.discovery.register=false

客户端可以设置注册到 Consul 中,也可以不注册到 Consul 注册中心中,根据我们的业务来选择,只需要在使用服务时通过 Consul 对外提供的接口获取服务信息即可。
启动类

@SpringBootApplication

public class ConsulConsumerApplication {

public static void main(String[] args) {

SpringApplication.run(ConsulConsumerApplication.class, args);

}

}

2.3、服务配置中心

  • spring-cloud-starter-consul-config: 配置中心
    注:需要添加bootstrap.yml

spring:

application:

name: myconsul

cloud:

consul:

host: localhost

port: 8500

config:

enabled: true #false禁用Consul配置,默认true

format: YAML # 表示consul上面文件的格式 有四种 YAML PROPERTIES KEY-VALUE FILES

#data-key: configuration #表示consul上面的KEY值(或者说文件的名字) 默认是data

data-key: data #表示consul上面的KEY值(或者说文件的名字) 默认是data

#prefix设置配置值的基本文件夹

#defaultContext设置所有应用程序使用的文件夹名称

#profileSeparator设置用于使用配置文件在属性源中分隔配置文件名称的分隔符的值

server:

port: 8081

然后在consul页面就可以添加配置了
这个效果等同于在项目中添加配置效果相同。

以上是 SpringCloudConsul基本使用 的全部内容, 来源链接: utcz.com/z/512788.html

回到顶部