Consul 简介

Consul 是 HashiCorp 出品的一套服务网格(Service Mesh)解决方案,核心能力是服务发现与健康检查,同时自带 KV 键值存储、多数据中心支持与安全通信。微服务架构里实例会不停启停,Consul 就是让服务"找得到、靠得住"的注册中心。

Consul 是什么

Consul 用 Go 编写、以单个二进制分发,开箱即可提供服务网格所需的基础能力:

功能说明
服务发现服务启动时注册,调用方按服务名拿到地址与端口
健康检查定时探测实例状态,自动摘除故障实例
KV 键值存储存放动态配置、功能开关等小数据
多数据中心数据中心间自动发现与请求转发,天然支持容灾
安全通信TLS 加密、ACL 访问控制、服务网格 mTLS

典型使用场景

  • 微服务注册中心:Spring Cloud、Go 等服务互相注册发现,配合客户端负载均衡调用;
  • 动态配置中心:服务启动时拉取 KV 配置,配合 Consul Template 实现配置热更新;
  • 服务网格控制面:为各服务下发代理配置,并做 mTLS 通信加密。

与同类产品对比

同为注册/协调类组件,定位各有侧重,一句话区分:

产品一句话定位
etcdKubernetes 生态的键值存储,偏重配置与分布式协调
ZooKeeper老牌协调服务,靠临时节点做服务注册
Nacos面向 Java 微服务生态的注册与配置中心
Consul注册、健康检查、KV 一体,多数据中心与服务网格见长

何时不必选 Consul

  • 只有两三个固定实例、几乎不扩缩容的小系统:配置文件甚至写死地址更省事;
  • 需要强一致的分布式锁等协调原语:可考虑 etcd 或 ZooKeeper;
  • 已深度绑定 Kubernetes 生态、仅需键值存储:etcd 往往更顺。

选型依据是规模与复杂度,不要为了用而用、盲目堆组件。

阅读路线建议

建议按“原理 → 部署 → 使用 → 进阶”推进:先理解 agent 角色与 gossip、Raft 协议,再安装并以 dev 模式跑通常用命令,随后逐个掌握注册、健康检查、DNS、KV 等核心功能,最后学习集群、多数据中心、ACL 与备份恢复。

用 Spring Cloud 可直接跳去微服务集成章节,涉及跨机房再看多数据中心章节,不必逐章细读。

小结

Consul 以服务发现为核心,把健康检查、KV 存储、多数据中心整合成开箱即用的整套方案,是云原生与微服务架构里最常见的选型之一。接下来从架构原理开始,一步步把它跑起来。

笔记加载中…