Producer在启动之初会通过 /register 接口将自己的服务实例元数据注册到 Consul 中;
Consul 通过 Producer 提供的健康查抄接口 /health 定时查抄 Producer 的服务实例状态;
Consumer 请求 Consul 的接口获取 Producer 服务的元数据;
Consumer 从 Consul 中返回的 Producer 服务实例元数据列表中选择符合的服务实例,使用其设置的 IP 和端口信息发起服务调用,如图 7-1 中 Consumer 调用 Producer 的 /service 接口。
Consul 是一个高可用的分布式系统,支持多数据中心摆设。一个 Consul 集群由多个摆设和运行了 Consul Agent 的节点组成。Consul 集群中存在两种脚色,Server 和 Client。每个 Consul Agent 负责对本地的服务举行监控查抄,并将查询请求转发到 Server 中举行处理。Consul 简单的架构图如下图所示:
Consul 架构图
从上图可知,Consul 主要由 Consul Client 和 Consul Server 组成,且 Consul 使用 Gossip 协议来管理成员和广播消息到集群。
Consul 作为一个开箱即用、高可用分布式服务发现和设置系统,可以很方便地为微服务的服务治理提供强有力的支持。在背面的课时中,我们将实现一个 Consul 的客户端,将我们自身的 Web 服务注册到 Consul 中,以供其他服务大概网关调用。
基于 HTTP 协议的分布式 key/Value 存储系统 Etcd