4. Golden Signals 详解 – 流量(Traffic)

流量(Traffic)是 Golden Signals 中最直观的信号,它直接反映系统当前承载的请求压力。没有流量,其他四个信号(延迟、错误、饱和度)便无从谈起。本节将深入解析流量的定义、度量单位、典型模式以及如何基于流量数据进行容量规划。

4.1 流量的定义与核心度量单位

在 SRE 语境下,流量衡量的是系统接收到的请求数量。它通常以两种单位表示:

单位 全称 适用场景 典型示例
RPS Requests Per Second 通用 API、微服务、Web 应用 HTTP GET /api/users 请求
QPS Queries Per Second 数据库、搜索引擎、缓存层 MySQL SELECT 查询、Elasticsearch 搜索
实践建议: 在微服务架构中,优先使用 RPS 作为统一度量单位。QPS 更适合描述数据存储层的负载。如果团队同时使用两者,务必在监控面板上明确标注,避免混淆。

4.2 流量模式分析

流量并非均匀分布,理解其模式是制定弹性策略和容量规划的前提。常见的流量模式包括:

  • 周期性模式: 每日、每周或每月的固定高峰与低谷。例如,电商平台在白天流量高,凌晨流量低。
  • 突发性模式: 由营销活动、热点事件或故障恢复引起的瞬时流量尖峰。
  • 趋势性模式: 随着用户增长或业务扩张,流量呈现长期上升或下降趋势。
  • 季节性模式: 与特定节日或季节强相关,如“双十一”或“黑色星期五”。

下图展示了一个典型 Web 服务在 24 小时内的流量模式,包含周期性波动和一次突发尖峰:

典型 Web 服务 24 小时流量模式(RPS) 00:00 06:00 12:00 18:00 24:00 0 500 1000 突发流量尖峰 周期性日间高峰 基线流量 突发流量

4.3 流量与容量规划

容量规划的核心目标是确保系统在预期流量下仍能满足 SLO(服务等级目标)。流量数据是容量规划的输入,以下是基于流量进行容量规划的步骤:

  1. 采集历史流量数据: 至少保留 90 天的 RPS/QPS 数据,包含峰值和均值。
  2. 识别流量模式: 分析周期性、趋势性和突发性特征,预测未来流量。
  3. 设定容量阈值: 通常以峰值流量的 1.5x – 2x 作为扩容触发线。
  4. 执行压力测试: 在预发环境模拟目标流量,验证系统瓶颈。
  5. 制定扩缩容策略: 基于 HPA(水平自动扩缩)或定时策略,匹配流量模式。
关键公式: 所需实例数 = ceil( 预测峰值 RPS / 单实例最大安全 RPS )
其中“单实例最大安全 RPS”通常取压力测试中 P99 延迟达标时的 80% 负载值。

下图展示了流量数据如何驱动容量规划决策流程:

流量驱动的容量规划决策流程 流量采集 模式分析 流量预测 压力测试 扩缩容策略 说明:流量预测和压力测试结果共同决定最终的扩缩容策略,确保系统在流量波动下保持稳定。

4.4 流量监控的黄金实践

  • 多维度聚合: 按服务、端点、状态码、来源 IP 等维度拆分流量,快速定位异常来源。
  • 实时与历史结合: 实时监控用于告警,历史数据用于容量规划和趋势分析。
  • 设置基线告警: 当流量偏离基线(如突增 300% 或突降 90%)时触发告警,可能预示故障或攻击。
  • 避免单一指标陷阱: 流量高不一定代表系统健康,必须结合延迟和错误率综合判断。
常见误区: 只关注平均 RPS 而忽略峰值。平均流量可能掩盖瞬间的流量尖峰,导致系统在高峰期过载。始终以 P99 或 Max RPS 作为容量规划的参考基准。