Skip to content

Consul面试题:标准回答与原理跳转

本页只保留面试回答与精确原理入口,详细流程、Demo和Runbook见Consul主线

高频问题

问题标准回答原理页
Consul是什么Consul是服务网络控制面,提供Agent、Catalog、Health、DNS/HTTP发现、KV、Session、多DC和Connect Service Mesh。定位架构
Client Agent和Server区别Client靠近业务服务,负责本地注册、检查、DNS/API和转发;Server参与Raft并保存Catalog、KV、ACL、Session等一致状态。Agent架构
Gossip和Raft区别LAN/WAN Gossip最终传播成员和故障信息;Raft在单DC Server集群中多数派提交Catalog、KV等一致状态。members Alive不代表Raft有Leader。Gossip与RaftRaft
SWIM怎样检测故障Agent直接Ping,失败后请求其他成员间接Ping,仍失败先进入Suspect并传播,怀疑窗口内可用incarnation反驳,最后才判Dead,降低单次丢包误判。SWIM与Serf
服务注册怎么走Provider向本地Agent注册Service和Check,Agent同步到Server,Leader经Raft提交Catalog,Check状态更新后DNS/Health API才可返回健康实例。注册流程
Catalog和Health API区别Catalog返回已注册实例,不等于健康;Health API同时返回Checks并可passing=true过滤,Agent Services只表示本机注册。Catalog与Health
TTL Check和Session TTL一样吗不一样。TTL Check要求应用定期更新健康状态;Session将Node、Checks、TTL和KV所有权组合,用于锁/选主,失效行为可release或delete。TTL CheckSession
DNS下线后为什么仍调用旧实例Consul Agent、递归DNS、OS、JVM和连接池都有缓存/长连接,Health变化不会瞬间清除所有层。DNS缓存陈旧地址Runbook
Blocking Query怎么工作首次查询得到X-Consul-Index=R,下一次带index=R和wait;状态不变时Server挂起,变化或超时后返回新快照和Index。Blocking Query
KV CAS怎么做cas=0表示Key不存在才创建,cas=N表示ModifyIndex等于N才更新;false是明确冲突,应重读合并。KV CAS
Session锁怎么实现创建Session后PUT KV并带acquire=sessionId,成功时KV绑定Session并推进LockIndex;失败者用Blocking Query等待,释放用release或Session失效。锁流程
Lock Delay能代替Fencing吗不能。Lock Delay只延迟新Session获得同Key,旧客户端之后仍可能恢复写外部资源;数据库必须比较单调LockIndex等Token。Lock DelayFencing
Consul多DC是一个Raft集群吗不是。每个DC有独立Server Raft和Catalog,传统模式通过WAN Federation互联,较新版本可用Peering;跨DC查询和数据面仍受网络分区影响。多数据中心
Consul Connect是什么Connect通过服务身份、CA证书、sidecar/Envoy、mTLS和Intentions实现Service Mesh控制面与数据面。Connect边界
无Leader怎么排查members只看Gossip;还要查Raft peers、Quorum、8300网络、RPC TLS、Server磁盘、CPU/GC和是否同时重启多数Server。无Leader Runbook

项目回答模板

我们把Consul用于VM服务发现和健康治理。Provider向本地Agent注册Service和HTTP/gRPC Check,Consumer通过Health API Blocking Query维护不可变地址快照,记录X-Consul-Index避免固定轮询。LAN Gossip负责成员探测,Server Raft负责Catalog一致提交。DNS场景治理JVM缓存和长连接。低频选主使用Session/KV acquire,但外部任务表校验LockIndex Fencing并保持幂等。生产启用TLS、ACL默认拒绝和Gossip加密,监控Raft Leader、Gossip Flap、Check状态、Blocking Query和证书轮换。

本章小结

Consul面试应沿“Agent → Gossip → Raft → Catalog/Health → DNS/Blocking Query → Session/Lock → Fencing → Multi-DC → Connect”回答,并说明每层失败窗口。