3、四大黄金信号之流量:流量指标、流量模型与容量规划、流量突增的应对策略

流量(Traffic)是四大黄金信号中最为直观的指标,它直接反映了用户对系统的需求强度。在可观测性体系中,流量指标不仅用于衡量系统当前的负载水平,更是容量规划、成本控制、弹性伸缩和故障预防的核心依据。本节将深入剖析流量指标的定义与差异、流量模型的构建方法,以及应对流量突增的实战策略。

3.1 流量指标:QPS / RPS / TPS 的定义与差异

在流量监控中,QPS、RPS、TPS 是最常被提及的三个指标,但它们在语义和适用场景上存在显著差异。混淆使用会导致监控数据失真和容量评估偏差。

指标 全称 定义 典型场景 关注点
QPS Queries Per Second 每秒查询次数,通常指读请求 数据库查询、搜索引擎、缓存读取 数据读取效率、缓存命中率
RPS Requests Per Second 每秒请求次数,涵盖所有 HTTP/API 调用 Web 服务、API 网关、负载均衡器 整体入口流量、请求成功率
TPS Transactions Per Second 每秒事务次数,通常指包含多个步骤的完整业务操作 支付下单、订单创建、数据库写入事务 业务完成率、数据一致性
实践建议:在可观测性平台中,建议同时采集 RPS 和 TPS。RPS 用于衡量系统入口压力,TPS 用于衡量业务吞吐能力。QPS 则更适合在数据库或缓存层独立监控,避免与业务层指标混淆。

3.2 流量模型与容量规划

流量模型是对系统负载随时间、空间、用户行为变化的抽象描述。一个准确的流量模型是容量规划的基础,它决定了系统在峰值负载下能否稳定运行。

3.2.1 流量模型的三个维度

  • 时间维度:日周期(早高峰/晚高峰)、周周期(工作日/周末)、季节性周期(促销季/节假日)。
  • 空间维度:地域分布(多数据中心流量比例)、用户群体(VIP 用户 vs 普通用户)。
  • 行为维度:读写比例、热点资源集中度、突发请求模式(如秒杀、抢票)。

3.2.2 容量规划的核心步骤

  1. 基线采集:持续采集至少 3-6 个月的流量数据,建立历史基线。
  2. 峰值识别:识别 P99、P95、P50 分位的流量峰值,以及最大突发峰值。
  3. 资源映射:将流量指标映射到具体资源消耗(CPU、内存、网络带宽、数据库连接数)。
  4. 冗余计算:在峰值基础上增加 30%-50% 的冗余容量,应对突发增长。
  5. 压测验证:通过全链路压测验证容量模型的准确性。
容量规划公式:
所需容量 = 历史峰值流量 × (1 + 业务增长率) × 冗余系数
其中,冗余系数通常取 1.3 ~ 1.5,业务增长率由产品/运营团队提供。
流量模型与容量规划流程 历史数据采集 3-6 个月基线 峰值识别 P99 / P95 / 突发 资源映射 CPU / 内存 / 带宽 冗余计算 +30%~50% 冗余 压测验证 全链路压测 持续优化与弹性伸缩 容量规划不是一次性工作,需要根据业务增长和流量模型变化持续迭代

3.3 流量突增的应对策略

流量突增是生产环境中最为常见的故障诱因之一。无论是促销活动、热点事件还是 DDoS 攻击,突增流量都会对系统稳定性构成直接威胁。以下是经过生产验证的应对策略体系。

3.3.1 事前预防:弹性架构与限流设计

  • 弹性伸缩:基于流量指标(RPS/TPS)配置 HPA(Horizontal Pod Autoscaler),实现秒级扩容。
  • 限流降级:在网关层配置令牌桶或漏桶算法,保护下游服务不被击穿。
  • 缓存预热:针对可预见的流量高峰(如秒杀),提前将热点数据加载到缓存。

3.3.2 事中应对:快速发现与自动熔断

  • 实时告警:设置流量突增告警阈值(如 RPS 超过基线 200% 持续 30 秒)。
  • 自动熔断:当错误率或延迟超过阈值时,自动熔断非核心服务调用。
  • 流量调度:通过 DNS 或全局负载均衡器将流量调度到备用集群。

3.3.3 事后复盘:根因分析与模型修正

  • 流量溯源:分析突增流量的来源(用户群体、地域、渠道)。
  • 容量模型修正:将本次突增数据纳入历史基线,更新容量规划模型。
  • 预案演练:定期进行流量突增的混沌工程演练,验证应对策略的有效性。
常见误区:不要仅依赖自动扩容应对所有流量突增。扩容存在延迟(通常 30 秒到数分钟),对于秒级突增的流量,必须配合限流和缓存策略。同时,扩容不是无限的,需要设置最大实例数上限,防止资源耗尽。

3.4 流量指标的可观测性实践

在可观测性平台中,流量指标的采集和展示需要遵循以下最佳实践:

维度 指标 采集方式 可视化建议
入口流量 RPS、成功率、平均延迟 API 网关 / 反向代理日志 时间序列折线图 + 分位线
业务流量 TPS、业务完成率 应用埋点 / 消息队列指标 柱状图 + 趋势线
数据层流量 QPS、连接数、慢查询数 数据库监控代理 / 慢日志 热力图 + 散点图
基础设施 带宽使用率、连接数 SNMP / 云厂商 API 仪表盘 + 阈值线
流量突增应对策略全景图 事前预防 • 弹性伸缩策略配置 • 限流降级规则部署 • 缓存预热与热点数据 • 容量规划与冗余 事中应对 • 实时告警与通知 • 自动熔断降级 • 流量调度与切换 • 弹性扩容执行 事后复盘 • 根因分析 • 流量溯源与审计 • 容量模型修正 • 预案演练与改进 反馈闭环:事后复盘结果反哺事前预防策略 核心原则:事前预防为主,事中自动化为辅,事后复盘闭环。三者缺一不可。 流量突增应对不是一次性工作,而是持续演进的系统工程

3.5 实战案例:电商大促流量突增应对

以电商平台双十一大促为例,流量突增的应对策略可以拆解为以下步骤:

  1. 提前 1 个月:基于历史数据构建流量模型,预估峰值 RPS 和 TPS,完成容量规划。
  2. 提前 1 周:部署限流规则(核心接口限流阈值 = 预估峰值 × 1.2),配置弹性伸缩策略。
  3. 大促当天:实时监控 RPS 和错误率,当 RPS 达到阈值的 80% 时触发预扩容,达到 100% 时触发限流。
  4. 大促结束后:分析实际流量数据,修正容量模型,更新限流规则。
关键指标参考:
• 核心接口 RPS 峰值:50,000 req/s
• 支付 TPS 峰值:8,000 txn/s
• 限流阈值:60,000 req/s(核心接口)
• 弹性扩容步长:每次增加 20% 实例数,冷却时间 60 秒

通过上述策略,该电商平台在连续三年的双十一大促中实现了零宕机,流量突增应对成功率 100%。