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 压测沙盘整体架构
下图展示了本课程将要构建的压测沙盘的整体架构,包含负载生成、集群监控、故障注入、日志回放四个核心子系统:
1.6 分布式一致性日志存储模型核心概念
本课程的核心研究对象是 etcd 的分布式一致性日志存储模型。该模型将 Raft 共识算法与持久化存储引擎(boltdb)深度结合,形成一条完整的写入路径:
- 客户端请求:客户端向 Leader 节点发送 Put / Delete / Txn 等写请求。
- 日志条目生成:Leader 将请求序列化为 Raft Log Entry,包含 term、index、data 等字段。
- WAL 持久化:Entry 写入 WAL(Write-Ahead Log)文件,确保宕机后不丢失。
- 日志复制:Leader 通过 RPC 将 Entry 并行复制到所有 Follower 节点。
- 日志提交:当多数节点(quorum)确认写入后,Leader 将 Entry 标记为 committed。
- 状态机应用:committed 的 Entry 被应用到 boltdb 状态机,更新内存索引与磁盘数据。
- 响应客户端:Leader 向客户端返回成功响应。
关键认知:etcd 的写入延迟 = WAL 写入延迟 + 网络 RTT(多数节点) + 状态机应用延迟。其中 WAL 写入延迟受磁盘 I/O 影响最大,是压测中需要重点关注的指标。
1.7 课程学习路径建议
| 学习阶段 | 建议章节 | 学习方式 |
|---|---|---|
| 快速入门 | 第 1-5 章 | 通读 + 动手搭建单节点 etcd 环境 |
| 压测实践 | 第 6-10 章 | 跟随代码实现压测工具,运行第一个压测场景 |
| 深度分析 | 第 11-22 章 | 阅读 etcd 源码 + 压测数据对比分析 |
| 故障演练 | 第 23-27 章 | 在沙盘中注入故障,观察系统行为并撰写报告 |
| 总结输出 | 第 28-30 章 | 整理笔记,形成自己的分布式一致性系统压测方法论 |
准备好了吗?让我们从第 2 章开始,深入 etcd 的整体架构与 Raft 核心流程。