Skip to content

Consul

是什么

一个支持多数据中心的分布式服务注册、发现和配置服务,采用Raft一致性协议算法来保证服务的高可用,使用Gossip协议管理采用状态和广播消息,并且支持ACL访问控制。

Consul支持HTTP和DNS协议接口,Zookeeper集成了DNS协议,Etcd只支持HTTP。

按功能可分为

可以分为服务端和客户端。

服务端用来保存服务配置信息的高可用集群,在集群中,Server又可以分为Server Leader和Server。

Leader负责同步注册信息和进行各个节点的健康检查、负责整个集群的写请求;

Server负责把配置信息持久化并接受读请求。

Server在一个数据中心内使用LAN Gossip协议的一致性算法,在跨数据中心内使用WAN Gossip协议的一致性算法。

客户端是无状态的服务,将HTTP和DNS协议的接口请求转发给局域网内的服务端集群。

服务端和客户端还支持跨数据中心的访问,提供了跨区域的高可用功能。

服务注册和发现的4个阶段

有4个阶段服务注册、健康检查、服务发现、服务请求。

  1. 服务注册是指Producer在启动时会向Consul服务端发送一个POST注册请求,注册请求中包含服务地址和端口等信息;
  2. 健康检查是指Consul服务端在接收Producer的注册信息后,默认每10s会向Producer发送一个健康检查的请求,检验Producer是否健康。
  3. 服务发现是指当Consumer发起请求时,首先会从Consul服务端获取一个包含通过健康检查的Producer的服务地址和端口的临时表;
  4. 服务请求是指客户端从临时表中获取一个可用的服务地址,向Producer发起请求,Producer在收到请求后返回请求响应。

使用Consul分为3步

下载安装包、启动服务端、启动客户端。

实现一个服务提供者的步骤

分为5步

  1. 在pom文件中添加spring-cloud-starter-consul-discovery依赖,
  2. 通过@EnableDiscoveryClient注解开启服务发现的功能;
  3. 设置application.properties;
  4. 定义服务接口;
  5. 访问和使用。

实现一个服务消费者的步骤

分为4步

  1. 在pom文件中添加spring-cloud-starter-consul-discovery依赖,
  2. 设置application.properties;
  3. 获取临时服务列表;
  4. 调用服务