两种订阅方式:
1.Flowable与Subscriber
2.Observable与Observer
主要区别:Observable不支持背压,而Flowable支持背压。
两者选择官方建议:
1.使用Observable - 不超过1000个元素、随着时间流逝基本不会出现OOM - GUI事件或者1000Hz频率以下的元素 - 平台不支持Java Steam(Java8新特性) - Observable开销比Flowable低。
2.使用Flowable - 超过10k+的元素(可以知道上限) - 读取硬盘操作(可以指定读取多少行) - 通过JDBC读取数据库 - 网络(流)IO操作。
什么是背压(BackPressure)
所谓背压就是生产者(被观察者)的生产速度大于消费者(观察者)消费速度从而导致的问题。
举一个简单点的例子,如果被观察者快速发送消息,但是观察者处理消息的很缓慢,如果没有特定的流(Flow)控制,就会导致大量消息积压占用系统资源,最终导致十分缓慢。