3. 高并发核心概念

做支付网关的容量设计,第一步不是选中间件,而是把指标口径统一。很多团队在评审时争论“系统到底能扛多少”,本质是有人在说QPS、有人在说TPS、有人在说并发连接数,口径不一致,结论自然对不上。本节把七个关键指标的定义、换算关系和工程用法一次讲清。

一、核心指标定义与口径

QPS(Queries Per Second):每秒查询数,强调“请求次数”。在支付网关中,一次下单可能对应多个内部查询(查商户、查路由、查限额),因此要区分“入口QPS”和“内部调用QPS”。

TPS(Transactions Per Second):每秒事务数,强调“完整业务事务”。一笔支付从请求到落库、记账、返回结果算一个TPS。TPS通常小于等于入口QPS,因为一个事务可能包含多次查询。

RT(Response Time):响应时间,通常关注平均值、P95、P99。支付场景必须看P99,因为尾延迟直接决定用户是否重复提交。

并发数(Concurrency):系统同时正在处理的请求数量,不是连接数。用利特尔法则描述:并发数 ≈ QPS × RT。这是容量估算最常用的桥梁公式。

吞吐量(Throughput):单位时间内系统成功处理的请求或数据量,是QPS/TPS的统称,但强调“成功处理”,失败请求不计入有效吞吐。

峰值系数(Peak Factor):峰值流量与平均流量的比值。支付网关日常峰值系数常在3~8之间,大促或发薪日可达10以上。

容量水位(Capacity Water Level):当前实际负载占系统安全容量的百分比。行业通常把70%作为警戒线,85%以上视为高风险。

核心换算关系:

并发数 ≈ QPS × RT(秒)
峰值QPS = 平均QPS × 峰值系数
所需实例数 = 峰值QPS ÷ 单实例安全QPS
容量水位 = 当前QPS ÷ 安全容量QPS × 100%
安全容量QPS = 单实例压测QPS × 实例数 × 冗余折扣(通常0.7)

二、指标之间的换算与容量推导流程

容量推导不是拍脑袋,而是一条可复算的链路。建议按以下步骤执行:

  1. 从业务侧拿到日均交易笔数和峰值系数,算出峰值TPS。
  2. 根据网关内部调用放大倍数,把峰值TPS换算为入口峰值QPS。
  3. 用压测得到单实例在目标RT下的安全QPS。
  4. 用峰值QPS除以单实例安全QPS,得到理论实例数。
  5. 叠加冗余折扣和容量水位目标,得到最终部署实例数。
  6. 上线后持续观测实际水位,反哺压测模型。

下面这张图展示了从业务交易量到最终实例数的推导关系,以及各指标在链路中的位置。

支付网关容量推导链路 日均交易笔数 业务输入 峰值系数 ×3~×10 峰值TPS 事务/秒 入口峰值QPS TPS × 放大倍数 单实例安全QPS 压测得出 理论实例数 峰值QPS ÷ 单实例QPS 冗余折扣 ×0.7 最终实例数 部署值 容量水位 = 当前QPS ÷ 安全容量QPS × 100% 警戒线:70% 高风险:85% 必须扩容:90%以上

三、支付场景案例:一次大促的容量估算

某支付网关日常日均交易800万笔,峰值系数取6,网关内部平均放大倍数为2.5,单实例在P99 RT≤200ms下压测安全QPS为1200。估算过程如下:

日均TPS = 8,000,000 ÷ 86,400 ≈ 92.6
峰值TPS = 92.6 × 6 ≈ 555.6
入口峰值QPS = 555.6 × 2.5 ≈ 1389
理论实例数 = 1389 ÷ 1200 ≈ 1.16 → 向上取整为2
叠加冗余折扣0.7:2 ÷ 0.7 ≈ 2.86 → 最终部署3台
容量水位 = 1389 ÷ (1200 × 3 × 0.7) × 100% ≈ 55.1%

这个结果说明:日常峰值下水位约55%,处于健康区间;但如果大促峰值系数升到10,入口峰值QPS变为2315,水位将升至约91.9%,必须提前扩容或限流。

实用提示:压测时必须同时记录QPS和RT。只报QPS不报RT的压测结果没有容量意义,因为RT恶化时并发数会迅速堆积,系统可能在QPS未达上限时就因线程池耗尽而雪崩。

四、常见误区与复盘要点

误区问题本质正确做法
把并发连接数当并发数连接数包含空闲长连接,远大于实际处理中请求用QPS×RT估算真实并发处理数
用平均RT做容量规划平均值掩盖尾延迟,P99才是用户体验瓶颈以P99 RT为约束做压测和扩容
忽略峰值系数直接按日均扩容日均QPS远低于峰值,上线即被打满按峰值QPS叠加冗余折扣计算
容量水位长期高于85%不处理无缓冲应对突发流量,故障概率陡增水位超70%预警,超85%强制扩容
把失败请求计入吞吐量虚高吞吐掩盖真实处理能力只统计成功响应,失败单独监控

复盘提醒:容量水位不是一次性计算,而是持续运营指标。建议在网关层暴露gateway_qps、gateway_p99_rt、gateway_concurrency、capacity_water_level四个核心指标,按分钟粒度采集,并设置水位超过70%自动告警。只有把指标变成可观测、可告警、可复算的闭环,容量设计才真正落地。

掌握这七个指标的定义与换算,是后续做限流、降级、弹性扩容和全链路压测的基础。口径统一之后,团队讨论容量时才能从“感觉能扛”走向“算得清楚、测得明白、扩得及时”。