栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring WebFlux框架概述

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring WebFlux框架概述

Spring WebFlux框架概述

什么是 Spring WebFlux

WebFlux 是Spring5添加的新模块,是一个使用响应式编程异步非阻塞的Web开发框架,它的功能和 Spring MVC 类似。

WebFlux 以 Reactor 库为基础, 基于异步和事件驱动,可以让在有限的硬件资源里面,提升系统的吞吐量和伸缩性。

Spring WebFlux 和 Spring MVC 各自的特点

Spring MVC 构建于Servlet API 和 Servlet 容器,是一个同步阻塞式 I/O 框架,就是一个线程处理一个请求。

Spring WebFlux 基于 Reactive Streams API 和 Servlet 3.1+ 容器(3.1 规范新特性:异步处理支持),是一个异步非阻塞的框架,能够充分利用多核 CPU 的硬件资源去处理大量的并发请求。但 WebFlux 并不能使接口的请求响应时间缩短,仅仅能够提升吞吐量和伸缩性。

Spring WebFlux 可以使用Java8函数式编程方式来实现路由请求。

异步,同步:调用者发送请求,如果需要等着被调用者回应才能去执行其他任务就是同步,如果不需要等着被调用者回应,发送完后直接去执行其他任务的就是异步。

阻塞,非阻塞:被调用者接收到请求后,等完成请求任务后才反馈给调用者的是阻塞,接收请求后立马反馈的就是非阻塞。

Spring WebFlux 和 Spring MVC 的区别

相同点:

都可以使用注解方式进行操作,都可以运行在Tomcat容器中。

不同点:

Spring MVC 采用同步阻塞式,Spring WebFlux 采用异步非阻塞,Spring MVC 更方便开发人员编写功能代码,Debug 测试等,如果 Spring MVC 能够满足的场景,就尽量不要用 WebFluxWebFlux 使用 R2DBC 或 Jasync-sql 操作数据库;WebFlux 默认情况下使用 Netty 作为服务器;

开发中选 Spring WebFlux 还是 Spring MVC

首先:WebFlux 不是 Spring MVC 的替代方案。

根据官方的建议有以下几点可以作为参考:

如果你已经使用了Spring-webmvc进行开发,并且项目运行良好,就无需更改了;何况现在大多数的三方库都是阻塞的,并不能发挥出非阻塞的优势。

webflux提供了相当多的选择;在服务层,可以使用(Netty, Tomcat, Jetty, Undertow, 和3.1版本以上的Servlet容器)作为web服务;在应用层,可以选择用@Controller定义还是使用函数编程定义;在编程风格上,可以选择用Reactor、RxJava或其他。

如果你钟爱Java8提供的lambda表达式这种轻量级、函数式的编程风格,那么建议选择用webflux;同时对于一些轻量级应用,或者复杂度比较低的微服务,建议使用webflux以便更好的进行控制。

在微服务架构中,可以将webmvc和webflux项目混合使用。两个框架都可以使用@Controller这种注解的方式,使得项目的重用更加容易。

评估一个项目是否应该选择webflux的最简单的方式是,依据项目中是否会使用很多的阻塞API,比如JDBC或者一些阻塞式的API就不适用与webflux项目。

响应式编程的学习路线是比较陡峭的,所以如果你身在一个大型的团队中,要考虑投入的成本,小组成员的学习成本等;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/715676.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号