当前位置: 首页 >> 基本常识
Spring Boot中的响应式编程和WebFlux入门
  
  来源: www.fycek.com 点击:1267

原文:

重量级组件Webflux在Spring 5.0中发布,它启动了响应式编程的使用。

WebFlux使用的场景是异步和非阻塞的,使用Webflux作为系统解决方案来提高大多数情况下的系统吞吐量。 Spring Boot 2.0是在Spring5上构建的,因此Spring Boot 2.X将自动继承Webflux组件。本文介绍如何在Spring Boot中使用Webflux。

为了便于每个人的理解,我们首先要了解一些概念。

响应式编程

在计算机中,反应式编程或反应式编程是数据流和变化传播的编程范例。这意味着可以在编程语言中容易地表达静态或动态数据流,并且相关的计算模型通过数据流自动传播变化的值。

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

响应式编程基于异步和事件驱动的非阻塞程序,只需要在程序中启动少量的线程扩展,而不是通过集群扩展进行水平扩展。

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

反应器

在Java世界的响应式编程库中,最着名的是Reactor。 Reactor也是Spring 5中反应式编程的基础,而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可以转换。计算Flux序列的结果是Mono对象。结合两个Mono序列,我们得到一个Flux对象。

什么是WebFlux?

WebFlux模块的名称是spring-webflux,名称中的Flux来自Reactor中的Flux类。 Spring Webflux有一个新的非阻塞功能Reactive Web框架,可用于构建异步,非阻塞,事件驱动的服务,并在可伸缩性方面表现良好。

非阻塞的关键预期好处是能够使用少量固定线程和更少内存进行扩展。 WebFlux在服务器端支持两种不同的编程模型:

基于注释的

http://android.gz888888.net.cn

友情链接:
沙湾信息网 版权所有© www.fycek.com 技术支持:沙湾信息网 | 网站地图