4. Rate 指标详解:请求速率(RPS/QPS)

Rate(速率)是 RED 方法论中的第一个核心指标,用于衡量服务接收请求的速度。在微服务和分布式系统中,Rate 通常以 RPS(Requests Per Second) 或 QPS(Queries Per Second) 为单位。理解 Rate 的定义、计算方式以及在服务画像中的标注方法,是构建可观测性体系的第一步。

4.1 定义与核心概念

Rate 指标描述的是单位时间内服务接收到的请求数量。它反映了服务的负载水平和流量特征。在 RED 体系中,Rate 是触发告警和容量规划的基础。

术语 全称 适用场景 典型单位
RPS Requests Per Second HTTP API、gRPC 调用、消息队列消费 req/s
QPS Queries Per Second 数据库查询、搜索引擎、缓存读取 q/s
TPS Transactions Per Second 数据库事务、支付交易、订单处理 tps
实践建议:在服务画像中,统一使用 RPS 作为通用术语,仅在数据库或事务型服务中区分 QPS/TPS。这有助于跨团队沟通时减少歧义。

4.2 计算方式与采样窗口

Rate 的计算并非简单的“总请求数 / 总时间”,而是基于滑动窗口或速率窗口的统计。常见的计算方式包括:

  • 固定窗口计数器:将时间划分为固定长度窗口(如 1 秒),统计窗口内的请求总数。优点是实现简单,缺点是窗口边界处可能出现流量尖刺。
  • 滑动窗口计数器:以当前时间为终点,向前取固定时间窗口(如 1 分钟),统计窗口内的请求数并除以窗口时长。更平滑,但需要存储历史数据。
  • 指数加权移动平均(EWMA):通过加权平均的方式平滑速率曲线,对突发流量反应较慢,但能有效过滤噪声。
# 伪代码:滑动窗口 RPS 计算
window_size = 60  # 窗口大小:60 秒
current_time = now()
window_start = current_time - window_size

# 从时间序列数据库中查询窗口内的请求总数
total_requests = query_requests_between(window_start, current_time)

# 计算 RPS
rps = total_requests / window_size
关键公式:RPS = (窗口内请求总数) / (窗口时长)。窗口时长通常选择 1 分钟(60 秒)或 5 分钟(300 秒),以平衡实时性和稳定性。

4.3 在服务画像中的标注方法

服务画像是一张描述服务运行特征的“体检表”。Rate 指标在画像中通常以热力图、时间序列曲线或标注标签的形式呈现。以下是标准标注方法:

  1. 基线标注:标注服务的正常 RPS 范围(如 1000-2000 req/s),用于识别异常偏离。
  2. 峰值标注:标注历史最大 RPS 及对应时间点,用于容量规划。
  3. 分位标注:标注 P50、P95、P99 的 RPS 值,反映流量分布的集中趋势和尾部特征。
  4. 依赖标注:标注上游调用方对当前服务的 RPS 贡献比例,用于识别流量来源。
服务画像 Rate 标注示例 订单服务 RPS: 1500 req/s 基线标注 正常范围: 1000-2000 窗口: 1min 滑动 峰值标注 历史最大: 4500 req/s 时间: 2024-03-15 14:30 分位标注 P50: 1200 | P95: 2800 P99: 3800 req/s 依赖标注(上游流量来源) API 网关: 60% | 用户服务: 25% | 定时任务: 10% | 其他: 5% 下游依赖: 库存服务(800 req/s) | 支付服务(300 req/s)

4.4 常见异常场景

Rate 指标的异常通常表现为突增、突降或周期性波动。以下是服务画像中需要重点关注的异常场景:

异常类型 表现 可能原因 排查方向
流量突增 RPS 在短时间内上升 3-5 倍 营销活动、爬虫攻击、上游重试风暴 检查上游调用日志、限流策略、CDN 缓存
流量突降 RPS 从正常值骤降至接近 0 上游服务故障、DNS 解析失败、网络分区 检查上游健康状态、网络连通性、服务发现
周期性尖刺 RPS 每隔固定时间出现峰值 定时任务、缓存过期、批量数据同步 分析定时任务调度、缓存策略、批处理窗口
持续低负载 RPS 长期低于基线 50% 以下 用户流失、功能下线、流量被其他服务分流 检查业务指标、路由配置、灰度策略
注意:Rate 突增不一定是坏事(如正常促销),但必须与 Error 和 Duration 指标联动分析。如果 Rate 突增的同时 Error 率也上升,说明服务可能过载;如果 Error 率不变,则可能是正常流量增长。

4.5 Rate 与 RED 其他指标的关联

Rate 指标不能孤立看待,它与 Error 和 Duration 共同构成服务健康度的三维视图。以下是一个典型的关联分析场景:

Rate 与 Error/Duration 联动分析 Rate (RPS) 请求速率 Error (错误率) 错误比例 Duration (延迟) 响应时间 典型异常场景:过载崩溃 1. Rate 突增 3 倍 → 服务负载升高 2. Duration 从 50ms 飙升至 2000ms → 请求排队 3. Error 率从 0.1% 升至 15% → 超时/拒绝连接 结论:Rate 过载导致 Duration 恶化,进而引发 Error 飙升
核心原则:Rate 是“因”,Error 和 Duration 是“果”。当 Rate 异常时,优先判断是外部流量变化还是内部服务退化导致的。结合 RED 三维指标,可以快速定位故障根因。