外观主题
阅读语言

背压 Backpressure —— 下游消化不了,就别让上游猛灌

软件 本站软件 3小时前
https://yxp.hk/p/h6Z9jJ

📦 开源仓库:learn_backpressure · 纯 Python 标准库 · 学习演示项目

生产者比消费者快,队列无限堆积,最后内存爆掉——这是流式系统最经典的死法。背压(Backpressure)的解法很朴素:在中间放一个有界队列,队列满了就拒绝/减速上游,让「下游的速度」反向传递回「上游」。

核心思路

  producer ──► [ 有界队列(容量 N) ] ──► consumer
                    │
                    └─ 队列满 → 生产者被限速/拒绝(背压发生)
  • 没有背压:快生产者 + 慢消费者 = 内存无限膨胀
  • 有界队列:超量的推送被拒绝,生产者被迫调整速率
  • 下游反过来决定上游该跑多快

为什么值得学

  • 内存有界:队列永远不会涨破
  • 自然的速率匹配:生产速度自动贴合消费能力
  • 高压下稳定:流量尖峰不再引发连锁 OOM

演示场景

  1. 消费者跟得上 → 队列很小,几乎无丢弃
  2. 消费者变慢 → 队列涨到容量上限,生产者被背压(丢弃超额部分)
  3. 消费者恢复 → 积压排空后生产者继续推

运行

python run_all.py

纯 Python 标准库,零第三方依赖,一键跑完所有演示场景后自动退出。
仓库:github.com/yxpil/learn_backpressure,欢迎 Star 与提 Issue。