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 个点
- Etcd 是什么
- 为什么适合注册发现
- lease
- watch
- Raft
- 和 Redis 区别
- 和 MySQL 区别
- 在微服务治理里的作用