高并发

2026-08-312 出链

高并发不是把某个组件做快,而是把压力分解 / 隔离 / 削峰,使流量增长时系统仍正确、稳定、可扩展。

① 压力沿系统逐层传播,每层通过拒绝、缓存、并行、异步、聚合或分片来吸收压力。 ② 对每一层做 capacity estimation:输入多少、吸收多少、输出多少、极限是多少。

① Rate
每秒进来多少?
QPS / msg/s / bytes/s
② Amplification
经过这一层会放大多少?
SQL/request
fan-out
replication
retry
③ Absorption
这一层吸收多少?
cache hit
rate limit
aggregation
async buffering
④ Capacity
这一层最大能处理多少?
QPS
connections
CPU
disk IOPS
network
storage
5:对所有“可以积压”的组件,都问能撑多久?

高并发关心:系统能吞多少压力(吞吐、容量、扩展)。 低延迟关心:一个请求在系统里要等多久(单请求等待时间)。


text
                 High Concurrency

      ┌────────────────┼─────────────────┐
      ↓                ↓                 ↓
入口压力            计算压力            数据压力
      │                │                 │
LB / Gateway       horizontal scale    cache
rate limit         worker pool         sharding
connection mgmt    async               index
                   queue               replica
 

                    故障压力

              timeout / retry
              circuit breaker
              isolation
              backpressure

核心公式与不变量

高并发的两个定量锚点:

  • 利特尔法则(Little's Law):稳态平均关系 L = λ × W,其中 L 是系统内平均在制品(WIP)、λ 是稳态平均到达/吞吐率、W 是平均停留(等待+服务)时间;工程写法 WIP = 吞吐量 × 周期时间。它把系统内平均在制品、吞吐量与平均停留时间绑定在一起,是长期平均恒等式,不是对单个请求等待时间的预测。
  • 阿姆达尔定律(Amdahl's Law):S(N) = 1 / ((1-p) + p/N),其中 p 是可并行比例、N 是并行资源数。串行部分 1-p 决定扩展收益上限 1/(1-p);它衡量单任务延迟的加速,不能把"单请求变快 N 倍"直接等价成"吞吐提升 N 倍"——吞吐还受并发度、瓶颈与排队影响。

压力分到哪

压力 本质 典型手段
入口压力 请求来得又快又多,先于业务逻辑 LB / Gateway、rate limit、connection management
计算压力 单点算力不够 horizontal scale、worker pool、async、queue
数据压力 存储与查询成为瓶颈 cache、sharding、index、replica
故障压力 部分失败放大为整体失败 timeout、retry、circuit breaker、isolation、backpressure

高并发与低延迟的关系

  • 关注点不同:高并发看系统层面能吞多少、能否扩展;低延迟看单请求在 critical path 上等多久。
  • 通过利特尔法则关联:给定平均停留时间(≈ 周期时间/延迟),吞吐与在制品互相约束;在吞吐/处理能力等条件近似不变时,积压(在制品上升)会推高等待时间——高并发下"量"的波动通常会劣化"等待"(排队上升推高等待并非无条件因果)。
  • 边界:扩展提升吞吐(容量),但单请求延迟受串行部分与 critical path 限制(阿姆达尔);降延迟靠缩短/重叠关键路径,两者手段不同、通常配合使用。

评论