17 Prometheus 之服务发现介绍
基于 Consul 的服务发现是一种使用网络的服务发现机制和配置工具,是使用 Go 语言开发的,部署安装较为简单,具有分布式、高可用性和极高的可扩展性。它提供了以下几个关键功能。
服务发现:Consul 通过 HTTP API 和 DNS 进行服务注册和服务发现。对于外部服务(如 SaaS 提供者)也可以注册。
健康检查:Consul 支持对各类服务运行状态的健康检查工作,能够迅速向管理员告警集群中的任何问题,可以防止将流量路由到问题或故障主机,可动态监视服务运行状况并适当更新服务注册表。
键/值存储:键/值存储可以灵活地进行存储动态配置、功能标记、协调和领导者选举等。简单的 HTTP API 使其易于在任何地方使用。
多数据中心:Consul 支持单一数据中心,可扩展以支持多个数据中心,并且无须复杂的配置。
服务分割:通过自动 TLS 加密和基于身份的授权实现安全的服务间通信。
Gossip 是分布式系统中被广泛使用的协议,协议本身简单且通信性能好,主要用于实现分布式节点或者进程之间的信息交换,最终状态都达成一致。常用于 P2P 的通信和实现应用层多播。
Consul 服务注册提供了两种注册方法:一种是定义配置文件服务注册方法,即在配置文件中定义服务来进行注册;一种是 HTTP API 服务注册方法,即在启动后由服务自身通过调用 API 进行自我注册。
DNS SRV 是 DNS 资源记录中的一种记录类型,用来指定服务地址和服务端口,并且可以设置每个服务地址的优先级和权重。访问服务的时候,本地的 DNS resolver 从 DNS 服务器查询到一个地址列表,根据优先级和权重,从中选取一个地址作为本次请求的目标地址。SRV 的记录格式如下:
SRV 的记录格式说明如下。
-service:服务名称,前缀“_”是为防止与 DNS Label(普通域名)冲突。
proto:服务使用的通信协议,通常是 TCP 或 UDP 协议。
name:此记录有效域名,以.(点)结束。
TTL:标准 DNS TTL 字段,设置缓存有效时间。
class:标准 DNS class 字段,例如 IN。
priority:该记录优先级,数值越小优先级越高,范围 0~65535。
weight:该记录的权重,数值越大权重越高,范围 0~65535。
port:服务使用的端口号。
target:提供服务的主机地址名称,以.(点)结束。
版权声明: 本文为 InfoQ 作者【穿过生命散发芬芳】的原创文章。
原文链接:【http://xie.infoq.cn/article/107ef5bf1c077eba7c6261b15】。文章转载请联系作者。
评论