java架构师学习路线:Spring Boot 中的响应式编程

鲁班学院 java架构师学习路线

在计算机中,响应式编程或反应性编程(英语:Reactiveprogramming)是面向数据流和更改传播的编程范例。这意味着静态或动态数据流可以轻松地用编程语言表示,并且相关的计算模型将自动通过数据流传播更改后的值。

例如,在命令式编程环境中,a=b+c表示将表达式的结果分配给a,然后更改b或c的值不会影响a。但是在反应式编程中,a的值将随着b或c的更新而更新。

响应试编程是一种基于异步和事件驱动的非阻塞程序。它只需要在程序中启动少量线程扩展,而无需在集群中水平扩展。

用白话来说,我们之前编写的大多数程序都是阻塞程序。当请求到来时,任务将被阻塞,直到任务完成才返回前端。响应式编程仅在接收到请求后才提交请求。对于后端,后端将安排另一个线程来执行任务,并在任务执行完成时异步通知前端。

Reactor

Java领域的响应式编程库中,最有名的算是Reactor了。Reactor也是Spring5中反应式编程的基础,Webflux依赖Reactor而构建。

Reactor是基于JVM的异步应用程序的基本库。提供抽象库,用于为Java,Groovy和其他JVM语言构建基于事件和数据驱动的应用程序。Reactor的性能很高。在最新的硬件平台上,它可以使用无阻塞分配器每秒处理1500万个事件。

简而言之,Reactor是一个轻量级的JVM基本库,可帮助您的服务或应用程序高效且异步地传递消息。Reactor中有两个非常重要的概念,即Flux和Mono。

Flux和Mono

Flux和Mono是Reactor中的两个基本概念。Flux表示包含0到N个元素的异步序列。序列中可以包括三种不同类型的消息通知:包含元素的普通消息,序列结尾的消息和序列错误的消息。生成消息通知时,将调用订户中的相应方法onNext(),onComplete()和onError()。

Mono表示包含0或1个元素的异步序列。该序列还可以包含与Flux相同的三种消息通知类型。您可以在Flux和Mono之间切换。计算通量序列,结果是一个Mono对象。将两个Mono序列组合在一起,结果是一个Flux对象。