当数据流通过异步发送,每一步用不同的速度发布不同的东西。为了避免压垮某一步,经常需要增加 buffer 或是筛选、丢弃数据,这就是背压,一种控制数据流的形式,让下游可以表达自己可接受的数量。这可以限制数据流的内存使用。
在 RxJava 中,Flowable 支持背压, Observable 不支持背压。
Backpressure 指的是在 Buffer 有上限的系统中,Buffer 溢出的现象;它的应对措施只有一个:丢弃新事件。
总结:
-
背压是一种现象,即 buffer 溢出。
-
在 RxJava 中,Flowable 支持背压的处理, Observable 不支持背压的处理。
-
Flowable 如何处理:
在下游表达过自己的限度后(Subscription.request),上游才能开始发布。这样就不会溢出。