3. 压测沙盘整体架构

压测沙盘的整体架构遵循“数据流驱动”的设计原则,从压测请求生成到最终可视化呈现,共分为四个核心层级。每一层承担明确的职责,并通过标准接口进行数据交换,确保系统具备高可观测性与故障隔离能力。

3.1 四层架构总览

下表概括了各层的核心组件、数据流向与关键指标,是理解整个沙盘的基础。

层级 核心组件 数据流向 关键观测指标
压测工具层 benchmark / ghz / k6 生成请求 → 发送至 etcd 集群 QPS、P99 延迟、错误率、并发数
数据采集层 etcd 内置 metrics / OpenTelemetry Collector / cAdvisor 拉取/推送指标 → 暂存于时序缓冲 采集延迟、丢点率、指标基数
存储层 VictoriaMetrics / Thanos / Prometheus 写入时序库 → 压缩/降采样 → 持久化 写入吞吐、磁盘 IO、数据保留周期
可视化层 Grafana / 自定义 Dashboard 查询存储层 → 渲染面板 → 告警触发 面板加载时间、查询并发、告警延迟
压测沙盘四层架构与数据流 压测工具层 benchmark (etcd) · ghz (gRPC) · k6 (自定义场景) 生成高并发读写请求,模拟真实负载 数据采集层 etcd /metrics · OpenTelemetry Collector · cAdvisor 拉取指标、解析标签、添加元数据、推送到存储 存储层 VictoriaMetrics · Thanos · Prometheus 时序数据写入、压缩、降采样、长期持久化 可视化层 Grafana Dashboard · 告警规则 · 面板复核 查询存储层,渲染面板,触发告警与风险通知

3.2 压测工具层

压测工具层是整个沙盘的流量发生器。根据测试目标的不同,选择不同的工具:

  • benchmark(etcd 官方):专为 etcd 设计的压测工具,支持 key-value 读写、事务、watch 等操作,输出延迟分布与吞吐量。
  • ghz:gRPC 协议压测工具,适合模拟微服务间对 etcd 的 gRPC 调用,支持元数据注入与负载配置。
  • k6:脚本化压测工具,可编写复杂业务场景(如模拟 leader 选举后的流量冲击)。
实践建议: 在压测沙盘中,建议同时运行 benchmark 与 ghz,分别覆盖 HTTP API 与 gRPC 接口,以暴露不同协议下的性能差异。

3.3 数据采集层

数据采集层负责从 etcd 集群及压测工具中收集指标,并做初步处理:

  • etcd 内置 metrics:通过 /metrics 端点暴露 Prometheus 格式指标,包括 Raft 状态、磁盘 fsync 延迟、请求速率等。
  • OpenTelemetry Collector:作为统一采集网关,接收 metrics/traces,进行标签处理、采样、重试,再转发到后端存储。
  • cAdvisor:采集容器级资源指标(CPU、内存、网络),用于关联 etcd 进程资源消耗与压测负载。
风险提示: 采集层容易成为瓶颈。当 etcd 集群 QPS 超过 10 万时,/metrics 端点自身可能产生毫秒级延迟,需提前配置采集间隔(建议 ≥15s)并启用指标缓存。

3.4 存储层

存储层负责时序数据的持久化与查询加速。在压测沙盘中,推荐使用 VictoriaMetrics 作为主存储,其优势包括:

  • 高写入吞吐:单实例可处理百万级指标/秒,适合压测场景的高频数据注入。
  • 降采样与保留策略:自动对历史数据做降采样,降低存储成本,同时保留原始精度数据 7 天。
  • PromQL 兼容:可直接对接 Grafana,无需修改查询语句。
存储方案 写入吞吐 压缩比 适用场景
VictoriaMetrics ~1M samples/s 10:1 ~ 20:1 高并发压测、长期存储
Thanos ~500K samples/s 5:1 ~ 10:1 多集群联邦、全局查询
Prometheus ~200K samples/s 3:1 ~ 5:1 小规模压测、单机验证

3.5 可视化层

可视化层是 SRE 观测压测状态的窗口。Grafana 面板需覆盖以下核心视图:

  • 实时 QPS 与延迟面板:展示当前压测请求速率、P99/P50 延迟,用于快速判断 etcd 是否达到性能拐点。
  • Raft 状态面板:监控 leader 切换次数、提案提交延迟、日志同步速率,识别集群稳定性风险。
  • 资源消耗面板:关联 etcd 进程的 CPU、内存、磁盘 IO,定位资源瓶颈。
  • 告警事件面板:展示触发告警的时间线,辅助复盘压测过程中的异常行为。
面板复核要点: 在压测沙盘中,每次压测结束后需复核面板数据的完整性——检查是否存在断点、指标缺失或标签错乱。这是风险控制的第一道防线。

3.6 架构总结

压测沙盘的四层架构形成了完整的可观测性闭环:

  1. 压测工具层 生成可控负载;
  2. 数据采集层 确保指标无遗漏;
  3. 存储层 提供高性能写入与查询;
  4. 可视化层 将数据转化为可操作的洞察。