响应式编程是一种编程范式,若是你了解事件编程,观察者模式,理解这个几率并不难,响应式编程宣言包含了四组关键字:react
反应式流中第一个重要概念是负压(backpressure)。在基本的消息推送模式中,当消息发布者产生数据的速度过快时,会使得消息订阅者的处理速度没法跟上产生的速度,从而给订阅者形成很大的压力。当压力过大时,有可能形成订阅者自己的奔溃,所产生的级联效应甚至可能形成整个系统的瘫痪。负压的做用在于提供一种从订阅者到生产者的反馈渠道。订阅者能够经过 request()方法来声明其一次所能处理的消息数量,而生产者就只会产生相应数量的消息,直到下一次 request()方法调用。这实际上变成了推拉结合的模式。git
前面提到的 RxJava 库是 JVM 上反应式编程的先驱,也是反应式流规范的基础。RxJava 2 在 RxJava 的基础上作了不少的更新。不过 RxJava 库也有其不足的地方。RxJava 产生于反应式流规范以前,虽然能够和反应式流的接口进行转换,可是因为底层实现的缘由,使用起来并非很直观。RxJava 2 在设计和实现时考虑到了与规范的整合,不过为了保持与 RxJava 的兼容性,不少地方在使用时也并不直观。Reactor 则是彻底基于反应式流规范设计和实现的库,没有 RxJava 那样的历史包袱,在使用上更加的直观易懂。Reactor 也是 Spring 5 中反应式编程的基础。学习和掌握 Reactor 能够更好地理解 Spring 5 中的相关概念。编程
在 Java 程序中使用 Reactor 库很是的简单,只须要经过 Maven 或 Gradle 来添加对 io.projectreactor:reactor-core 的依赖便可。异步