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 容量规划的核心步骤
- 基线采集:持续采集至少 3-6 个月的流量数据,建立历史基线。
- 峰值识别:识别 P99、P95、P50 分位的流量峰值,以及最大突发峰值。
- 资源映射:将流量指标映射到具体资源消耗(CPU、内存、网络带宽、数据库连接数)。
- 冗余计算:在峰值基础上增加 30%-50% 的冗余容量,应对突发增长。
- 压测验证:通过全链路压测验证容量模型的准确性。
容量规划公式:
所需容量 = 历史峰值流量 × (1 + 业务增长率) × 冗余系数
其中,冗余系数通常取 1.3 ~ 1.5,业务增长率由产品/运营团队提供。
所需容量 = 历史峰值流量 × (1 + 业务增长率) × 冗余系数
其中,冗余系数通常取 1.3 ~ 1.5,业务增长率由产品/运营团队提供。
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 个月:基于历史数据构建流量模型,预估峰值 RPS 和 TPS,完成容量规划。
- 提前 1 周:部署限流规则(核心接口限流阈值 = 预估峰值 × 1.2),配置弹性伸缩策略。
- 大促当天:实时监控 RPS 和错误率,当 RPS 达到阈值的 80% 时触发预扩容,达到 100% 时触发限流。
- 大促结束后:分析实际流量数据,修正容量模型,更新限流规则。
关键指标参考:
• 核心接口 RPS 峰值:50,000 req/s
• 支付 TPS 峰值:8,000 txn/s
• 限流阈值:60,000 req/s(核心接口)
• 弹性扩容步长:每次增加 20% 实例数,冷却时间 60 秒
• 核心接口 RPS 峰值:50,000 req/s
• 支付 TPS 峰值:8,000 txn/s
• 限流阈值:60,000 req/s(核心接口)
• 弹性扩容步长:每次增加 20% 实例数,冷却时间 60 秒
通过上述策略,该电商平台在连续三年的双十一大促中实现了零宕机,流量突增应对成功率 100%。