Rxjava中的"背压"一词是什么意思?

ohl*_*lab 15 reactive-programming backpressure rx-java

我是RxJava的初学者,我很好奇"背压"的含义.

这是否意味着生产者会给消费者带来压力?

或者这是否意味着消费者对生产者施加压力?(相反方向的压力)

akh*_*707 10

RxJava背压

当您有一个可观察到的物体发出如此快的物体时,消费者就无法跟上潮流的步伐,导致存在发出但未消耗的物体。

背压策略处理的是如何管理和控制由可观察物发出但未被订户消耗的未消费物品。

由于需要系统资源来处理背压,因此您需要选择适合您需求的正确背压策略。

更多信息参考链接


Abd*_*han 6

我已经阅读了很多关于背压的文章,但直到我看到Jonas(反应式宣言的合著者)的一篇文章之前,我都没有感到满意。我希望这能澄清您对背压的疑虑。

当一个组件难以跟上时,整个系统需要以合理的方式做出响应。承受压力的组件发生灾难性故障或以不受控制的方式丢弃消息是不可接受的。由于它无法应对并且不能失败,因此它应该向上游组件传达它处于压力下的事实,从而让它们减少负载。这种背压是一种重要的反馈机制,它允许系统优雅地响应负载而不是在负载下崩溃。背压可能会一直级联到用户,此时响应能力可能会下降,但这种机制将确保系统在负载下具有弹性,并将提供信息,可能允许系统本身应用其他资源来帮助分配负载,请参阅弹性。


Rak*_*ale 5

考虑您拥有大量数据的情况,例如。传感器会以高速率发出大量数据。
在这种情况下,我们需要backpressuring ,简单来说,这只是一种处理无法处理的项目的方法
现在为了减轻这种压力,我们明确指定了不同的背压策略,例如

  • Dropping (BackpressureStrategy.DROP) :
    当它无法处理超过其容量时,此策略会丢弃项目
  • 最新 (BackpressureStrategy.LATEST) :如果下游无法应对项目流,它会停止发射并等待它再次可用。它不断丢弃项目,除了最后一个到达并在下游可用时发送最后一个。
  • Buffer (BackpressureStrategy.BUFFER) :将项目保存在缓冲区中,直到它们可以被处理。

揭秘 Uber 工程部 Android 上的 RxJava 背压