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 指标在画像中通常以热力图、时间序列曲线或标注标签的形式呈现。以下是标准标注方法:
- 基线标注:标注服务的正常 RPS 范围(如 1000-2000 req/s),用于识别异常偏离。
- 峰值标注:标注历史最大 RPS 及对应时间点,用于容量规划。
- 分位标注:标注 P50、P95、P99 的 RPS 值,反映流量分布的集中趋势和尾部特征。
- 依赖标注:标注上游调用方对当前服务的 RPS 贡献比例,用于识别流量来源。
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 异常时,优先判断是外部流量变化还是内部服务退化导致的。结合 RED 三维指标,可以快速定位故障根因。