1. 课程导论:云原生日志平台架构全景、etcd在日志平台中的核心角色、压测沙盘与水位复核的定义与目标
1.1 云原生日志平台架构全景
在云原生环境下,日志平台需要应对海量、高并发、多租户的日志采集、传输、存储与查询挑战。一个典型的云原生日志平台采用微服务 + 事件驱动架构,核心组件包括采集层、缓冲层、计算层、存储层与查询层。
架构核心原则: 日志数据流从 Agent 采集 → Kafka 缓冲 → Flink/Logstash 加工 → 后端存储(Elasticsearch / Loki / ClickHouse)→ 查询 API 对外暴露。etcd 作为分布式协调与元数据存储,贯穿整个控制面。
下表列出日志平台各层的关键组件及其职责:
| 层级 | 组件 | 核心职责 | etcd 关联 |
|---|---|---|---|
| 采集层 | Fluentd / Filebeat / OpenTelemetry Collector | 容器标准输出、文件、系统日志采集 | 配置下发、采集任务调度 |
| 缓冲层 | Kafka / Pulsar | 削峰填谷、解耦生产与消费 | Topic 元数据、分区分配 |
| 计算层 | Flink / Logstash / Vector | 日志解析、字段提取、路由分发 | 作业状态、分布式锁 |
| 存储层 | Elasticsearch / Loki / ClickHouse | 日志索引、压缩、持久化 | 集群成员、shard 分配、租约 |
| 查询层 | Grafana / Kibana / 自研 API | 日志检索、聚合、告警 | 用户权限、数据源注册 |
| 控制面 | etcd | 元数据存储、服务发现、配置管理、分布式协调 | — |
1.2 etcd 在日志平台中的核心角色
etcd 作为云原生日志平台的控制面中枢,承担以下关键职责:
- 元数据存储: 存储日志流配置、采集任务状态、索引映射、租户信息等核心元数据。
- 服务发现与注册: 采集 Agent、计算作业、存储节点通过 etcd 进行注册与健康检查。
- 分布式协调: 实现 Leader 选举、分布式锁、任务分配,确保高可用与一致性。
- 配置管理: 动态下发日志采集规则、过滤条件、路由策略,支持热更新。
- Prometheus 远端写入水位记录: 记录每个写入请求的进度、偏移量、背压状态,是压测复核的关键数据源。
关键洞察: 在日志平台中,etcd 的写入 QPS 与延迟直接决定控制面的响应速度。Prometheus 远端写入到 etcd 的“水位”指标(如写入偏移量、pending 请求数)是评估系统健康度的核心信号。
1.3 压测沙盘与水位复核的定义与目标
1.3.1 压测沙盘定义
压测沙盘是一个隔离的、可复现的测试环境,用于模拟日志平台在极端负载下的行为。它包含完整的日志采集、缓冲、计算、存储链路,并注入可控的 Prometheus 远端写入压力,重点观测 etcd 的写入水位变化。
1.3.2 水位复核定义
水位复核是指在压测过程中,对 etcd 的写入负载指标进行实时采集、记录与对比分析,验证系统是否达到预期的容量阈值,并发现潜在的瓶颈点。
1.3.3 核心目标
| 目标维度 | 具体描述 | 衡量指标 |
|---|---|---|
| 容量验证 | 确定 etcd 在日志平台场景下的最大写入吞吐 | 峰值 QPS、P99 延迟 |
| 稳定性评估 | 观察持续高压下 etcd 是否出现抖动、OOM、Raft 分裂 | 错误率、Leader 切换次数 |
| 背压响应 | 验证 Prometheus 远端写入背压机制是否有效保护 etcd | pending 请求数、拒绝率 |
| 水位基线 | 建立不同负载等级下的 etcd 写入水位基线 | 磁盘 IO、网络带宽、内存占用 |
| 故障注入 | 模拟网络分区、节点宕机,验证 etcd 的容错与恢复能力 | 恢复时间、数据一致性 |
注意: 水位复核不是一次性活动,而是持续迭代的过程。每次压测后需更新基线,并与生产环境指标进行对比,确保沙盘结论可迁移。