Etcd 八股题库

Etcd 这块如果你没有很深的生产 owner 经验,不要硬吹。但你一定要准备到“能把它讲清楚”,因为很多 Go / 微服务岗位都会问。


一、Etcd 是什么

标准回答

Etcd 是一个分布式一致性键值存储,常用于配置中心、服务注册发现、分布式协调和 leader 选举。它的核心特点是强一致性和 watch 能力,底层依赖 Raft 协议保证多节点一致性。


二、Etcd 为什么适合做服务注册发现

标准回答

因为它支持:

  • 强一致存储
  • watch 监听变化
  • lease 租约机制

服务实例启动时注册自己,定期续租;服务下线或续租失败时,注册信息会自动失效。客户端或服务框架可以通过 watch 感知服务列表变化。


三、lease 和 watch 是什么

lease

租约,给 key 设置存活时间,需要续租,适合做临时注册信息。

watch

监听某个 key 或前缀的变化,适合做配置变更感知和服务列表感知。


四、Etcd 和 Redis 的区别

标准回答

  • Redis 更适合缓存、计数、短期状态和高性能读写
  • Etcd 更适合配置中心、服务发现和分布式协调

一句话理解

Redis 强在性能和缓存,Etcd 强在一致性和协调。


五、Etcd 和 MySQL 的区别

标准回答

  • MySQL 是关系型数据库,适合业务主数据和事务处理
  • Etcd 是一致性 KV 存储,适合配置、注册信息和协调元数据

Etcd 不是拿来做业务主库的。


六、Raft 你怎么理解

标准回答

Raft 是一种分布式一致性协议,核心是:

  • 选主
  • 日志复制
  • 多数派提交

Etcd 通过 Raft 确保多节点之间数据一致。

面试更稳的说法

不一定要把 Raft 细节背到源码级,但一定要知道它解决的是“分布式一致性”。


七、Etcd 适合什么场景

适合

  • 服务注册发现
  • 配置中心
  • leader 选举
  • 分布式锁 / 协调
  • 微服务元数据管理

不适合

  • 大量业务主数据
  • 高频复杂查询
  • 分析型数据

八、为什么微服务体系常用 Etcd

因为微服务里最常见的几个需求:

  • 服务实例动态上下线
  • 配置实时变更
  • 节点选主
  • 协调状态管理

Etcd 都比较适合。


九、如果面试官问你实战深度

你可以稳稳地这么答:

Etcd 我不是生产里最深的 owner,但我理解它在微服务治理里的核心作用是服务注册发现、配置同步和分布式协调。它和 Redis、MySQL 解决的是不同问题。我自己在多服务拆分、链路治理、配置和状态边界这些方面经验比较多,上手这块不会慢。

这个回答的关键是:

  • 诚实
  • 不示弱
  • 把自己拉回解决方案能力

十、如果继续追问“服务注册发现怎么工作的”

可以答:

服务启动时把自己的地址注册到 Etcd,并绑定 lease;客户端或服务框架通过 watch 监听对应前缀,感知服务上下线变化,再更新本地服务列表。这样服务实例变化就能动态感知。


十一、如果追问“Etcd 为什么强一致”

可以答:

因为 Etcd 底层通过 Raft 做日志复制和多数派确认,写操作必须在集群内达成一致后才提交,所以它更适合强一致的元数据场景。


十二、你复习 Etcd 最该背的 8 个点

  1. Etcd 是什么
  2. 为什么适合注册发现
  3. lease
  4. watch
  5. Raft
  6. 和 Redis 区别
  7. 和 MySQL 区别
  8. 在微服务治理里的作用