主题
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个阶段服务注册、健康检查、服务发现、服务请求。
- 服务注册是指Producer在启动时会向Consul服务端发送一个POST注册请求,注册请求中包含服务地址和端口等信息;
- 健康检查是指Consul服务端在接收Producer的注册信息后,默认每10s会向Producer发送一个健康检查的请求,检验Producer是否健康。
- 服务发现是指当Consumer发起请求时,首先会从Consul服务端获取一个包含通过健康检查的Producer的服务地址和端口的临时表;
- 服务请求是指客户端从临时表中获取一个可用的服务地址,向Producer发起请求,Producer在收到请求后返回请求响应。
使用Consul分为3步
下载安装包、启动服务端、启动客户端。
实现一个服务提供者的步骤
分为5步
- 在pom文件中添加spring-cloud-starter-consul-discovery依赖,
- 通过@EnableDiscoveryClient注解开启服务发现的功能;
- 设置application.properties;
- 定义服务接口;
- 访问和使用。
实现一个服务消费者的步骤
分为4步
- 在pom文件中添加spring-cloud-starter-consul-discovery依赖,
- 设置application.properties;
- 获取临时服务列表;
- 调用服务