Consul 是什么?
Consul 是一个 service mesh 解决方案,提供功能齐全的控制界面和服务发现、配置和分割功能。
Consul 有以下几大特征
服务发现:Clients 注册一个服务,像API 或者 mysql 或者其他Client 使用Consul 去发现 提供服务,使用DNS or HTTP, 程序 能容易找到他们服务依赖 。
健康检查:Consul Clients 提供健康检查 如果服务return 200 表示 ok
KV 存储:Consul 存储结构上KV存储,比如存储动态配置、功能标记、协调、leader选主。
安全服务通信:Consul 能为服务生成和分发TLS证书,建立相互的TLS链接。
多数据中心:Consul 支持多数据中心开箱及用,这意味着用户使用Consul 不需要额外搭建抽象层扩展到多个区域。
Consul 基础架构图
Consul 专业术语名词:
Agent:Agent 线程安全运行在每一个Consul 集群中,它是Consul Agent 启动运行,它可能是client 或者 server 模式运行。
Client(客户端):Client 是将agent 所有RPCs 转发到Server。
Server(服务器):Server 参与选主、维护集群状态、响应RPC查询、与其他数据中心交换 WAN gossip 、转发查询给leader和远程数据中心。
Datacenter(数据中心):数据中心 定义为专用,低延迟和高宽带的网络环境。
Consensu(共识):Consensu 意味着复制状态机一致性,达到共识。事务应用于finite-state machine (有限状态机)。
LAN Gossip:主要是 提供故障检测、事件广播,更多的请参考gossip协议文档 https://www.consul.io/docs/internals/gossip.html
WAN Gossip:指包含服务器的WAN gossip pool ,这些服务器属于不同的数据中心通常通过Internet 和广域网进行通信。
RPC-Remote Procedure Call(远程调用):是一个请求/响应机制,客户端发请求给服务端。
参考文献:
https://www.consul.io/intro/index.html
https://www.consul.io/docs/internals/architecture.html