Consul 简介
Consul 是 HashiCorp 出品的一套服务网格(Service Mesh)解决方案,核心能力是服务发现与健康检查,同时自带 KV 键值存储、多数据中心支持与安全通信。微服务架构里实例会不停启停,Consul 就是让服务"找得到、靠得住"的注册中心。
Consul 是什么
Consul 用 Go 编写、以单个二进制分发,开箱即可提供服务网格所需的基础能力:
| 功能 | 说明 |
|---|---|
| 服务发现 | 服务启动时注册,调用方按服务名拿到地址与端口 |
| 健康检查 | 定时探测实例状态,自动摘除故障实例 |
| KV 键值存储 | 存放动态配置、功能开关等小数据 |
| 多数据中心 | 数据中心间自动发现与请求转发,天然支持容灾 |
| 安全通信 | TLS 加密、ACL 访问控制、服务网格 mTLS |
典型使用场景
- 微服务注册中心:Spring Cloud、Go 等服务互相注册发现,配合客户端负载均衡调用;
- 动态配置中心:服务启动时拉取 KV 配置,配合 Consul Template 实现配置热更新;
- 服务网格控制面:为各服务下发代理配置,并做 mTLS 通信加密。
与同类产品对比
同为注册/协调类组件,定位各有侧重,一句话区分:
| 产品 | 一句话定位 |
|---|---|
| etcd | Kubernetes 生态的键值存储,偏重配置与分布式协调 |
| ZooKeeper | 老牌协调服务,靠临时节点做服务注册 |
| Nacos | 面向 Java 微服务生态的注册与配置中心 |
| Consul | 注册、健康检查、KV 一体,多数据中心与服务网格见长 |
何时不必选 Consul
- 只有两三个固定实例、几乎不扩缩容的小系统:配置文件甚至写死地址更省事;
- 需要强一致的分布式锁等协调原语:可考虑 etcd 或 ZooKeeper;
- 已深度绑定 Kubernetes 生态、仅需键值存储:etcd 往往更顺。
选型依据是规模与复杂度,不要为了用而用、盲目堆组件。
阅读路线建议
建议按“原理 → 部署 → 使用 → 进阶”推进:先理解 agent 角色与 gossip、Raft 协议,再安装并以 dev 模式跑通常用命令,随后逐个掌握注册、健康检查、DNS、KV 等核心功能,最后学习集群、多数据中心、ACL 与备份恢复。
用 Spring Cloud 可直接跳去微服务集成章节,涉及跨机房再看多数据中心章节,不必逐章细读。
小结
Consul 以服务发现为核心,把健康检查、KV 存储、多数据中心整合成开箱即用的整套方案,是云原生与微服务架构里最常见的选型之一。接下来从架构原理开始,一步步把它跑起来。