etcd核心概念与核心流程
etcd核心概念与核心流程
一、核心概念
- 分布式键值存储
-
etcd 是一个基于 Raft 算法 的高可用键值数据库,核心目标是保证分布式系统的 强一致性和 高可用性。
-
数据模型为简单的键值对,支持多版本并发控制(MVCC),每个操作生成全局递增的 Revision标识版本 。
- Raft 一致性协议
-
Leader 选举:集群通过随机超时机制触发选举,获得半数以上投票的节点成为 Leader,任期(Term)标识 Leader 的合法性。
-
日志复制:所有写操作由 Leader 生成日志条目(Log Entry),同步至半数以上节点后才提交(Commit),确保数据一致性。
- 存储架构
-
WAL(预写日志):所有变更操作先记录到 WAL,确保宕机后可通过日志恢复。
-
BoltDB:底层存储引擎,基于 B+ 树实现键值存储,支持事务操作。
-
Snapshot(快照):定期压缩历史日志,减少存储压力并加速故障恢复。
- 客户端交互
-
线性读:通过 Raft 协议验证数据最新性,保证强一致性 。
-
串行读:直接读取任意节点的本地数据,牺牲一致性换取低延迟。
二、核心流程
- Leader 选举流程
-
触发条件:Follower 节点在心跳超时后转为 Candidate,发起投票请求。
-
投票规则:节点仅投票给 Term 更高或日志更完整的 Candidate;半数以上投票即当选 Leader。
-
防脑裂:通过 Term 和随机选举超时避免多个 Leader 共存。
- 数据写入流程
-
客户端请求:写请求发送至任意节点,若非 Leader 则重定向至 Leader。
-
日志复制:Leader 将操作封装为 Raft 日志,广播至半数节点确认后提交。
-
持久化:提交后的日志通过 WAL 写入磁盘,并更新 BoltDB 存储。
- 数据读取流程
-
线性读:客户端向 Leader 获取当前 ReadIndex,等待本地状态机同步后返回数据 。
-
Watch 机制:监听键值变化,通过长连接实时推送增量事件(ADDED、MODIFIED、DELETED)。
- 集群高可用机制
-
Quorum 机制:集群需半数以上节点存活(如 3 节点容忍 1 故障) 。
-
动态成员管理:支持运行时增删节点,新节点通过快照和日志同步数据。
三、关键设计思想
- 强一致性优先
-
所有写操作需经 Raft 协议达成共识,确保全局数据一致。
-
读操作默认使用线性读,避免脏数据风险。
- 性能与扩展性平衡
-
MVCC 多版本:支持历史版本查询,避免读写冲突。
-
批处理与压缩:合并日志写入,定期清理历史数据。
- 应用场景适配
-
服务发现:通过 Lease 机制实现节点心跳保活。
-
分布式锁:基于事务(Txn)和 Revision 实现锁竞争。
总结
etcd 通过 Raft 算法实现强一致性,WAL 和快照 保障数据持久化与恢复,MVCC 和 BoltDB 支撑高性能读写。
其核心流程(选举、写日志、读验证)与设计思想(一致性优先、扩展性优化)共同构建了云原生系统的可靠基石。

浙公网安备 33010602011771号