反应式编程的背压是个啥

2022-05-20 21:25:55 +08:00
 ojh

如题,不太懂。没有这个背压又会导致什么问题呢

1879 次点击
所在节点    问与答
9 条回复
Xhack
2022-05-20 22:40:15 +08:00
明天我就能回答你这个问题了
dqzcwxb
2022-05-20 22:51:13 +08:00
生产速度快过消费速度造成积压
arloor
2022-05-20 23:42:43 +08:00
你冲的太快,ta 让你慢点
ojh
2022-05-20 23:43:35 +08:00
@dqzcwxb 能举个场景吗,比如处理无限数据流的时候消费不过就导致内存爆炸?
gabon
2022-05-20 23:53:14 +08:00
@ojh 个人理解是这么个意思。虽然 backpressure 直译过来感觉很奇怪,但又没有一个好的词能准确描述出来这种感觉。
vToExer
2022-05-20 23:57:27 +08:00
从系统论的观点看, 背压相当于引入了一条负反馈回路。没有背压时, 如上所述, 生产者始终快于消费者, 消费者维护的队列会很快溢出, 导致数据丢失, 系统不稳定。有了背压后, 在消费者发现队列满的情况下, 可以通知生产者减少或停止生产, 避免数据丢失, 使系统处于稳态。
billlee
2022-05-21 00:49:50 +08:00
就和 TCP 窗口流控是差不多的
Leviathann
2022-05-21 01:03:32 +08:00
@gabon 应该是回压。。只能说大部分搞这些技术词汇翻译的人英语和汉语都不咋地
mmdsun
2022-05-21 15:54:52 +08:00
Backpressure 是流速控制的一种策略。指在异步场景中,Observable 发送事件速度远快于 Subscriber/Observer 的处理速度的情况下,一种告诉上游的 Observable 降低发送速度的策略。

如果用 Rx 库,叫 Reactive Pull(反应式拉取)比较多,更符合含义叫法是 Reactive Push

响应式拉取和观测者模型相反,是被观察者变成被动的等待通知再发送数据。所以名字是这么叫的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/854262

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX