一文读懂计算机系统核心流量术语
在后端开发、运维以及系统架构设计中,我们经常听到"QPS 抗不住了"、"RT 太高"、"带宽打满了"等描述。这些术语是衡量系统健康状况的"体检指标"。
要设计一个高可用、高性能的系统,首先需要统一语言。本文将计算机系统中的常见流量术语分为四大维度:处理能力、响应速度、通道容量、业务规模,并深入解析它们之间的换算关系。
一、处理能力指标:系统有多"强"?
这一类指标衡量服务器在单位时间内能完成多少工作量,是评估系统负载能力的核心。
1. QPS (Queries Per Second) - 每秒查询率
- 定义 :服务器每秒钟能够处理的读操作或 API 请求数量。
- 场景:通常用于衡量接口的吞吐能力。例如,一个查询用户信息的 API,其 QPS 为 1000,意味着它每秒能响应 1000 次请求。
- 注意:QPS 是对单一接口或单一查询维度的度量。
2. TPS (Transactions Per Second) - 每秒事务处理量
- 定义 :服务器每秒处理的事务数量。
- 场景:多用于涉及数据写入、修改或复杂逻辑的场景(如银行转账、电商下单)。
- 关键区别 :一个事务 (Transaction) 可能包含多次查询 (Query)。
- 例子:一个"下单"动作(1个 TPS)可能包含:查库存、减库存、创建订单、写入日志(4个 QPS)。因此,在复杂业务中,QPS 数值通常远大于 TPS。
3. Concurrency (并发数)
- 定义:系统同时处理的请求数量或保持的连接数量。
- 误区 :并发数 <math xmlns="http://www.w3.org/1998/Math/MathML"> ≠ \neq </math>= QPS。并发数是指"正在车道上跑的车",而 QPS 是"每秒通过收费站的车"。
二、时间延迟指标:系统有多"快"?
处理能力强不代表速度快。这一类指标关注用户等待的时间,数值越低越好。
1. RT (Response Time) - 响应时间
- 定义:从客户端发出请求到接收到完整响应的总耗时。
- 公式 :
RT = 网络传输时间 + 服务器排队时间 + 应用处理时间。
2. TTFB (Time To First Byte) - 首字节时间
- 定义 :从发送请求到接收到服务器返回的第一个字节的时间。
- 意义:它排除了下载大文件耗时的干扰,纯粹衡量服务器的反应速度和网络链路质量。
3. P99 / P95 / P90 - 百分位延迟(长尾效应)
- 定义 :统计学术语。P99 = 100ms 意味着 99% 的请求都在 100ms 内完成,只有 1% 的请求超过这个时间。
- 为什么不用平均值?:平均值极易被少数极端慢的请求(长尾)拉高或掩盖。P99 是衡量系统稳定性和用户体验更真实的指标,也是大厂 SLA(服务等级协议)的标准考核项。
三、容量与带宽指标:管道有多"宽"?
这一类指标衡量数据传输的物理极限。
1. Bandwidth (带宽) vs. Throughput (吞吐量)
- Bandwidth (带宽) :链路的理论最大传输能力。单位通常是 bps (bits per second)。
- Throughput (吞吐量):单位时间内实际成功传输的数据量。
- 关系:带宽是水管的粗细,吞吐量是实际流过的水量。吞吐量永远不可能超过带宽。
2. IOPS (Input/Output Operations Per Second)
- 定义:磁盘每秒的读写次数。
- 瓶颈:数据库性能往往受限于磁盘 IOPS。传统机械硬盘 IOPS 只有几百,而企业级 SSD 可达数万。
四、业务规模指标:压力来自哪里?
这是产品经理和运营关注的指标,它们直接决定了技术团队需要准备多大的服务器资源。
- PV (Page View):页面浏览量。用户每刷新一次即计算一次。
- UV (Unique Visitor):独立访客数。一定时间内访问的用户去重后的数量。
- DAU (Daily Active Users):日活跃用户数。
- PCU (Peak Concurrent Users):最高同时在线人数。这是容量规划(扩容)的最重要依据。
五、核心公式与估算方法(重点)
理解术语后,架构师需要通过公式进行容量预估。
1. QPS、并发与 RT 的三角关系
这是性能测试中最核心的公式: <math xmlns="http://www.w3.org/1998/Math/MathML"> Q P S = 并发数 平均响应时间 (秒) QPS = \frac{\text{并发数}}{\text{平均响应时间 (秒)}} </math>QPS=平均响应时间 (秒)并发数
- 推论:如果想提高 QPS,要么增加并发能力(加机器/线程),要么优化代码降低 RT。
2. 流量估算(二八原则)
已知每天的 PV 量,如何估算系统需要承受的 QPS? 通常假设 80% 的流量集中在 20% 的高峰时段:
<math xmlns="http://www.w3.org/1998/Math/MathML"> 峰值 QPS = 总PV × 0.8 一天秒数(86400) × 0.2 \text{峰值 QPS} = \frac{\text{总PV} \times 0.8}{\text{一天秒数(86400)} \times 0.2} </math>峰值 QPS=一天秒数(86400)×0.2总PV×0.8
- 速算技巧 :
峰值 QPS ≈ 总PV / 20000。
3. 带宽换算
如何根据 QPS 计算需要购买多少带宽?
<math xmlns="http://www.w3.org/1998/Math/MathML"> 带宽 (Mbps) = QPS × 平均包大小(KB) × 8 1024 \text{带宽 (Mbps)} = \frac{\text{QPS} \times \text{平均包大小(KB)} \times 8}{1024} </math>带宽 (Mbps)=1024QPS×平均包大小(KB)×8
- 注意:务必乘以 8,因为带宽单位是 bit,而数据包单位通常是 Byte。
六、特殊场景术语
在应对高并发或故障时,还会用到以下术语:
- Burst (突发):短时间内激增的流量(如秒杀、热点新闻)。
- Backpressure (背压):当下游服务处理不过来时,向上游反馈信号减缓发送,防止系统崩溃。
- Throttling (限流):主动丢弃超出系统承载能力的流量(如 Nginx 限制每秒请求数),属于自我保护机制。
- C10K 问题:经典的系统设计挑战,指单机如何同时维持 10,000 个并发连接。