etcd核心概念与核心流程

etcd核心概念与核心流程


一、核心概念

  1. 分布式键值存储
  • etcd 是一个基于 Raft 算法 的高可用键值数据库,核心目标是保证分布式系统的 强一致性和 高可用性。

  • 数据模型为简单的键值对,支持多版本并发控制(MVCC),每个操作生成全局递增的 Revision标识版本 。

  1. Raft 一致性协议
  • Leader 选举:集群通过随机超时机制触发选举,获得半数以上投票的节点成为 Leader,任期(Term)标识 Leader 的合法性。

  • 日志复制:所有写操作由 Leader 生成日志条目(Log Entry),同步至半数以上节点后才提交(Commit),确保数据一致性。

  1. 存储架构
  • WAL(预写日志):所有变更操作先记录到 WAL,确保宕机后可通过日志恢复。

  • BoltDB:底层存储引擎,基于 B+ 树实现键值存储,支持事务操作。

  • Snapshot(快照):定期压缩历史日志,减少存储压力并加速故障恢复。

  1. 客户端交互
  • 线性读:通过 Raft 协议验证数据最新性,保证强一致性 。

  • 串行读:直接读取任意节点的本地数据,牺牲一致性换取低延迟。


二、核心流程

  1. Leader 选举流程
  • 触发条件:Follower 节点在心跳超时后转为 Candidate,发起投票请求。

  • 投票规则:节点仅投票给 Term 更高或日志更完整的 Candidate;半数以上投票即当选 Leader。

  • 防脑裂:通过 Term 和随机选举超时避免多个 Leader 共存。

  1. 数据写入流程
  • 客户端请求:写请求发送至任意节点,若非 Leader 则重定向至 Leader。

  • 日志复制:Leader 将操作封装为 Raft 日志,广播至半数节点确认后提交。

  • 持久化:提交后的日志通过 WAL 写入磁盘,并更新 BoltDB 存储。

  1. 数据读取流程
  • 线性读:客户端向 Leader 获取当前 ReadIndex,等待本地状态机同步后返回数据 。

  • Watch 机制:监听键值变化,通过长连接实时推送增量事件(ADDED、MODIFIED、DELETED)。

  1. 集群高可用机制
  • Quorum 机制:集群需半数以上节点存活(如 3 节点容忍 1 故障) 。

  • 动态成员管理:支持运行时增删节点,新节点通过快照和日志同步数据。


三、关键设计思想

  1. 强一致性优先
  • 所有写操作需经 Raft 协议达成共识,确保全局数据一致。

  • 读操作默认使用线性读,避免脏数据风险。

  1. 性能与扩展性平衡
  • MVCC 多版本:支持历史版本查询,避免读写冲突。

  • 批处理与压缩:合并日志写入,定期清理历史数据。

  1. 应用场景适配
  • 服务发现:通过 Lease 机制实现节点心跳保活。

  • 分布式锁:基于事务(Txn)和 Revision 实现锁竞争。


总结

etcd 通过 Raft 算法实现强一致性,WAL 和快照 保障数据持久化与恢复,MVCC 和 BoltDB 支撑高性能读写。

其核心流程(选举、写日志、读验证)与设计思想(一致性优先、扩展性优化)共同构建了云原生系统的可靠基石。

posted @ 2025-05-19 23:29  JaxYoun  阅读(38)  评论(0)    收藏  举报