1. 课程导论:etcd压测沙盘的整体目标、课程面向人群、学习前置知识、课程大纲概览

1.1 课程整体目标

本课程旨在构建一个可观测、可复现、可推演的 etcd 压测沙盘,帮助学员从分布式一致性日志存储模型的底层视角,理解 etcd 在高压场景下的行为边界与性能瓶颈。通过本课程,你将掌握:

  • 压测沙盘架构设计:如何搭建一套包含负载生成、指标采集、故障注入、日志回放的生产级压测环境。
  • Raft 日志复制与存储模型:从 entry 写入、持久化、网络分发到状态机应用的完整链路。
  • 性能瓶颈定位与调优:通过 WAL 写入延迟、RTT 分布、follower 追赶速率等关键指标,精准定位系统瓶颈。
  • 故障场景模拟与恢复:网络分区、磁盘 I/O 抖动、节点宕机等异常场景下的行为验证。
核心产出:一套可独立部署的 etcd 压测沙盘代码仓库 + 配套的分布式一致性日志存储模型分析报告。

1.2 课程面向人群

角色 关注点 预期收获
SRE / 运维工程师 etcd 集群稳定性、容量规划、故障恢复 掌握压测方法论与故障注入技术,提升线上应急能力
分布式系统开发者 Raft 实现细节、日志复制性能模型 深入理解 etcd 内核的日志存储与同步机制
中间件 / 存储工程师 存储引擎选型、写入路径优化 获得压测沙盘设计思路,可复用于其他分布式存储系统
技术管理者 / 架构师 系统边界、容量评估、架构决策 基于数据驱动的性能评估能力,提升架构设计质量

1.3 学习前置知识

为获得最佳学习体验,建议学员具备以下基础:

  • Raft 基础:理解 Leader 选举、日志复制、安全性等核心概念。至少阅读过 In Search of an Understandable Consensus Algorithm 原文或等效资料。
  • Go 语言基础:能够阅读 Go 代码,了解 goroutine、channel、interface 等基本语言特性。本课程中的压测工具与沙盘代码均使用 Go 实现。
  • Linux 基础操作:熟悉命令行、文件系统、网络配置、进程管理。压测环境部署在 Linux 上。
  • etcd 基本使用:了解 etcd 的 key-value 模型、watch 机制、集群搭建等基本操作。
建议:如果你对 Raft 尚不熟悉,建议先花 2-3 小时学习 Raft 动画演示(如 raft.github.io)并阅读 etcd 的 Raft 实现文档。

1.4 课程大纲概览

本课程共分为 30 章,按知识递进关系组织为 6 个模块:

模块 章节范围 核心内容
模块一:基础与架构 第 1-5 章 课程导论、etcd 整体架构、Raft 核心流程、日志存储模型、压测沙盘设计总览
模块二:压测工具链 第 6-10 章 压测负载生成器设计、指标采集与可视化、故障注入框架、压测场景编排、结果分析
模块三:日志复制深度 第 11-16 章 WAL 写入路径、entry 序列化与反序列化、网络传输模型、follower 追赶机制、快照与日志压缩
模块四:性能模型与调优 第 17-22 章 写入延迟分解、吞吐量模型、磁盘 I/O 影响、网络延迟与带宽、内存与缓存、参数调优实战
模块五:故障场景实战 第 23-27 章 网络分区模拟、磁盘故障注入、节点宕机与恢复、Leader 切换性能、脑裂与数据一致性验证
模块六:总结与扩展 第 28-30 章 压测沙盘最佳实践、etcd 未来演进方向、分布式一致性系统设计启示

1.5 压测沙盘整体架构

下图展示了本课程将要构建的压测沙盘的整体架构,包含负载生成、集群监控、故障注入、日志回放四个核心子系统:

压测沙盘整体架构图 负载生成器 并发请求 / 数据模型 故障注入器 网络 / 磁盘 / 节点故障 etcd 集群 3 节点 / 5 节点 Raft 日志复制 WAL / 状态机 快照 / 日志压缩 Watch / 事务 存储引擎 (boltdb) 指标采集器 Prometheus / 自定义指标 日志回放器 WAL 解析 / 事件回放 分析面板 Grafana / 自定义 Dashboard 说明 实线:数据流 虚线:控制/分析流

1.6 分布式一致性日志存储模型核心概念

本课程的核心研究对象是 etcd 的分布式一致性日志存储模型。该模型将 Raft 共识算法与持久化存储引擎(boltdb)深度结合,形成一条完整的写入路径:

  1. 客户端请求:客户端向 Leader 节点发送 Put / Delete / Txn 等写请求。
  2. 日志条目生成:Leader 将请求序列化为 Raft Log Entry,包含 term、index、data 等字段。
  3. WAL 持久化:Entry 写入 WAL(Write-Ahead Log)文件,确保宕机后不丢失。
  4. 日志复制:Leader 通过 RPC 将 Entry 并行复制到所有 Follower 节点。
  5. 日志提交:当多数节点(quorum)确认写入后,Leader 将 Entry 标记为 committed。
  6. 状态机应用:committed 的 Entry 被应用到 boltdb 状态机,更新内存索引与磁盘数据。
  7. 响应客户端:Leader 向客户端返回成功响应。
关键认知:etcd 的写入延迟 = WAL 写入延迟 + 网络 RTT(多数节点) + 状态机应用延迟。其中 WAL 写入延迟受磁盘 I/O 影响最大,是压测中需要重点关注的指标。

1.7 课程学习路径建议

学习阶段 建议章节 学习方式
快速入门 第 1-5 章 通读 + 动手搭建单节点 etcd 环境
压测实践 第 6-10 章 跟随代码实现压测工具,运行第一个压测场景
深度分析 第 11-22 章 阅读 etcd 源码 + 压测数据对比分析
故障演练 第 23-27 章 在沙盘中注入故障,观察系统行为并撰写报告
总结输出 第 28-30 章 整理笔记,形成自己的分布式一致性系统压测方法论

准备好了吗?让我们从第 2 章开始,深入 etcd 的整体架构与 Raft 核心流程。