1. consul对外暴露了4种通讯接口

1.1 RPC

主要用于内部通讯Gossip/日志分发/选主等

1.2 HTTP API

服务发现/健康检查/KV存储等几乎所有功能
默认端口为8500

1.3 Consul Commands (CLI)

consul命令行工具可以与consul agent进行连接,提供一部分consul的功能。
实时上Consul CLI默认就是调用的HTTP API来与consul集群进行通讯。
可以通过配置CONSUL_HTTP_ADDR修改Consul CLI连接的目标地址

CONSUL_HTTP_ADDR=http://127.0.0.1:8500

1.4 DNS

仅用于服务查询

2 服务发现

2.1 DNS方式

$ dig @127.0.0.1 -p 8600 web.service.consul

;; QUESTION SECTION:
;web.service.consul.        IN  A

;; ANSWER SECTION:
web.service.consul. 0   IN  A   127.0.0.1

我们可以通过cosul提供的DNS接口来获取当前的service“web” 对应的可用节点(详细用法见参考资料4)
DNS方式要求使用方主动进行DNS解析,是主动请求的过程。它对线上服务节点的变化,反应是延迟的。

2.2 Watch方式

  • watch采用HTTP长轮训(long polling)实现的。

2.3 服务注册

服务注册可以通过 服务注册接口 /agent/service/register 很容易做到

3 服务注销

节点和服务的注销可以使用HTTP API:

注销任意节点和服务:/catalog/deregister
注销当前节点的服务:/agent/service/deregister/:service_id

注意

如果注销的服务还在运行,则会再次同步到catalog中,因此应该只在agent不可用时才使用catalog的注销API。

节点在宕机时状态会变为failed,默认情况下72小时后会被从集群移除。

如果某个节点不继续使用了,也可以在本机使用consul leave命令,或者在其它节点使用consul force-leave 节点Id,则节点上的服务和健康检查全部注销。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!