反压力(Backpressure) - LawlietNot/Note GitHub Wiki
反压力(Backpressure)
-
A-思者or困惑or问题
- 什么是Backpressure?
- 为什么会出现?
- 用来解决什么问题?
-
B-认知or原理or规律or原则
- 并不是标准术语
- 来源于汽车排气管Backpressure是气体在管道等密闭场所的预期流动方向相反的压力。通常是由于障碍物或狭窄的有限空间或弯曲,如排气管。
- 在IT中反压力是指当缓冲区已满且无法接收其他数据时,在I/O开关处积累的数据。在消除数据瓶颈或清空缓冲区之前,不会传输其他数据包。
-
B-观点or道理or逻辑or建议
- 是一种现象在数据流从上游生产者向下游消费者传输的过程中,上游生产速度大于下游消费速度,导致下游的 Buffer 溢出,这种现象就叫做 Backpressure 出现 重点在于Buffer溢出
- Backpressure 和 Buffer 是一对相生共存的概念,只有设置了 Buffer,才有 Backpressure 出现;只要设置了 Buffer,一定存在出现 Backpressure 的风险。
-
B-概念or数据or信息or案例or实证
- 例如你是开发服务器后端的,有一个 Socket 不断地接收来自用户的 http 请求来把用户需要的网页返回给用户。你的服务器所能承受的同时访问用户数是有上限的吧?比如说,你的服务器主机的处理器和内存情况决定了,它最多只能承受 5000~6000 个用户同时访问,再多的话服务器就有当掉的风险了。那么你决定:把用户数上限设置为 5000,当超出 5000 用户数的时候,再有新的访问就把它丢弃或者拒绝。那么对于这个案例,5000 就是你对于用户访问数设置的 Buffer;第 5001 个用户的访问,就叫做造成了 Backpressure 的产生;而你的「丢弃或拒绝」的行为,就是对于 Backpressure 的处理。
-
B-方法or工具or流程
-
B-体验or感知or金句
生产速度大于消费速度,所以需要 Buffer;
外部条件有限制,所以 Buffer 需要有上限;
Buffer 达到上限这个现象,有一个简化的等价词叫做 Backpressure;
Backpressure 的出现其实是一种危险边界,唯一的选择是丢弃新事件。
-
C-总结or启示or应用
Backpressure 指的是在 Buffer 有上限的系统中,Buffer 溢出的现象;它的应对措施只有一个:丢弃新事件。 并不是用来解决某种问题,而是一种现象,在编程中并发问题往往会出现Backpressure现象,节流、限流只是降低了出现这种现象的几率
-
来源