1. 延迟基础概念
延迟(Latency)是API网关性能诊断中最核心的度量指标之一。它衡量的是从请求发出到收到完整响应之间所经历的时间间隔。在微服务架构中,每一次API调用都会经过网关的路由、认证、限流、协议转换等多个环节,每个环节都会贡献一定的延迟。
核心定义:延迟 = 响应完成时间 − 请求发起时间。它反映的是系统的响应速度,而非处理能力。
1.1 延迟与吞吐量的关系
延迟和吞吐量(Throughput)是描述系统性能的两个基本维度,但二者并非独立。理解它们的关系是性能调优的前提。
| 维度 | 延迟(Latency) | 吞吐量(Throughput) |
|---|---|---|
| 定义 | 单个请求的完成时间 | 单位时间内完成的请求数 |
| 典型单位 | 毫秒(ms)、微秒(μs) | 请求/秒(RPS)、事务/秒(TPS) |
| 关注点 | 响应速度、用户体验 | 系统容量、资源利用率 |
| 调优方向 | 减少排队、优化处理路径 | 增加并发、提升资源效率 |
| 相互影响 | 高延迟会限制吞吐量(长尾效应) | 高吞吐量可能增加延迟(排队积压) |
在API网关场景中,当吞吐量接近系统上限时,请求会在网关内部排队,导致延迟急剧上升。这种现象称为“延迟拐点”。性能工程的目标之一,就是在保证延迟SLA的前提下,最大化吞吐量。
工程经验:不要只优化平均延迟。P99(99分位)延迟才是用户体验的真相——它代表最差情况下的响应速度,直接影响用户流失率。
1.2 延迟对用户体验的影响
延迟直接决定用户对系统“快”或“慢”的主观感受。研究表明,延迟对用户行为有明确的量化影响:
- 100ms 以内:用户感觉“即时响应”,操作流畅无感知。
- 100ms – 300ms:用户能感知到轻微延迟,但通常不影响操作连续性。
- 300ms – 1s:用户明显感到“卡顿”,注意力开始分散。
- 1s – 3s:用户可能中断操作,跳出率显著上升。
- 超过 3s:大部分用户会放弃请求,直接流失。
关键数据:亚马逊曾报告,每增加 100ms 延迟,销售额下降 1%。谷歌搜索每增加 500ms 延迟,流量下降 20%。在API网关场景中,延迟每增加 50ms,下游服务的超时重试率可能翻倍。
1.3 延迟的常见度量单位
在API网关性能工程中,延迟的度量粒度决定了诊断的精度。不同层级的延迟需要使用不同的单位:
| 单位 | 符号 | 换算关系 | 适用场景 |
|---|---|---|---|
| 秒 | s | 1 s = 1,000 ms | 端到端用户体验、超时配置 |
| 毫秒 | ms | 1 ms = 1,000 μs | API网关路由、认证、限流延迟 |
| 微秒 | μs | 1 μs = 1,000 ns | 内核网络栈、内存拷贝、序列化/反序列化 |
| 纳秒 | ns | 1 ns = 0.001 μs | CPU指令周期、缓存命中、原子操作 |
在API网关的延迟诊断中,毫秒(ms)是最常用的单位。网关内部各环节的延迟通常在 0.1ms 到 50ms 之间。当需要分析网络协议栈或内核级瓶颈时,才会进入微秒(μs)级别。
1.4 延迟的构成分解
在API网关中,一次完整的请求延迟可以分解为以下几个组成部分:
- 网络传输延迟:数据包在客户端与网关之间、网关与后端服务之间传输的时间。受物理距离、带宽、网络拥塞影响。
- 排队延迟:请求在网关内部队列中等待被处理的时间。当并发请求超过网关处理能力时,排队延迟会急剧增加。
- 处理延迟:网关执行路由匹配、身份认证、限流检查、协议转换、日志记录等逻辑所消耗的CPU时间。
- 后端服务延迟:网关将请求转发给上游服务后,等待服务响应的时间。这是整个链路中通常占比最大的部分。
- 序列化/反序列化延迟:网关在解析请求体、构造响应体时,对数据进行编解码所花费的时间。
延迟分解公式:
在性能调优中,优先优化占比最大的环节,通常是从“后端服务延迟”和“排队延迟”入手。
总延迟 = 网络传输延迟 + 排队延迟 + 处理延迟 + 后端服务延迟 + 序列化延迟在性能调优中,优先优化占比最大的环节,通常是从“后端服务延迟”和“排队延迟”入手。