1. RxJava1.0

RxJava核心
– 链式编程,响应式编程是RxJava 设计的初衷,核心设计模式是观察者模式。

2. RxJava2.0

2.0 版本中出现了两种观察者模式:

  • Observable(被观察者) / Observer(观察者)
  • Flowable(被观察者) / Subscriber(观察者)

Observable用于订阅Observer是不支持背压的,而Flowable用于订阅Subscriber 是支持背压的。

什么是背压

背压是指在异步场景中,被观察者发送事件速度远快于观察者的处理速度的情况下,一种告诉上游的被观察者降低发送速度的策略。

简而言之,背压是流速控制的一种策略。

背压需要强调两点:

  • (异步环境)背压策略的一个前提是异步环境,即被观察者和观察者处在不同的线程环境中。
  • (控制事件流速)背压(BackPressure)并不是一个像flatMap一样可以做程序中直接使用的操作符,他只是一种控制事件流速的策略。

流速控制相关的操作符

  • 过滤(抛弃)sample,ThrottleFirst
  • 缓存 buffer,window…

两个特殊操作符
onBackPressureBuffer, onBackPressureDrop