第 11 章 Reactor 介绍
本章内容
- 理解响应式编程
- Reactor 项目
- 响应式的操作数据
您曾经是否订阅过报纸或杂志呢?互联网已经大幅度削减了传统出版物的用户群,但有当订阅的报纸是与当天发生的事件跟上的最佳途径之一的时候,传统媒体还是有一定机会的。您可以每个清晨细数投递来的报纸上的实事,在早餐或在上班路上进行阅读。
现在假设在订阅然后付费后,好几天去了,都没有收到任何报纸。又过了几天,您致电报纸销售处问道,为什么还没有收到您每日的报纸。试想一下,如果他们解释说,“您订阅的是整整一年的报纸,一年的报纸现在尚未全部完成,但是放心,当全年的报纸都准备完成后,您一定会得到所有的报纸。”这样您该会有多吃惊。
值得庆幸的是,不是所有的订阅都是这样工作的。报纸还有一定的时效性。在出版后,它们被尽快的投递出去,这样保证了当报纸被阅读时,内容仍然是最新的。此外,当您正在阅读最新的内容时,本报记者正在写后续的新故事,同时印刷机也在并行的出版下一个版本。
当我们开发应用程序时,有两种风格的代码我们可以写:命令式和响应式:
- 同步式 的代码很像是假想的荒谬的报纸订阅的情况。这是一套串行任务,每次运行一个,完成前一个任务后再完成后一个。数据是批量进行处理的,在前面的任务没有完成批量数据处理前,不能将工作移交到下一个任务。
- 响应式 的代码很像是真正的报纸订阅的情况。定义一组任务去处理数据,但这些任务可并行运行。每个任务处理这些数据的一个子集,当它处理另外一个子集的时候,把处理完成的数据交给下一个任务。
在本章中,我们将暂时离开 Taco Cloud 应用程序,来探索 Reactor 项目。Reactor 是响应式编程的一个库,这个库是 Spring 家族的一部分。而且,因为它是 Spring 对响应式编程支持的基础,在使用 Spring 建立响应式 controller 和 repository 之前,很重要的一步是让您理解 Reactor。在我们开始理解 Reactor 之前,让我们来快速浏览响应式编程的要领。