SpringMVC的孪生兄弟WebFlux
一、入门文字介绍
官方口水话简短翻译:
Spring WebFlux是一个非阻塞的Web框架,用于利用多核,短时间可一处理大量并发连接。
非阻塞式
在servlet3.1提供了非阻塞的API,WebFlux为之有自己的一套手段,
使用非阻塞的方式可以利用较小的线程或硬件资源来处理并发
函数式编程端点
Spring5必须配备java8,函数式编程就是java8重要的特点之一,
WebFlux支持函数式编程来定义路由端点处理请求。
二、入门小Demo Test
创建一个Spring Boot项目,版本要求2.0以上,需要下面的依赖,Spring Reactive Web 替代了Web依赖
看看我们的处理器:Controller
抽一个方法出来,待会儿会使用到,这个方法假如就是我们一个比较耗时的逻辑操作
然后看我们的处理器 @Slf4j @RestController
我们定义了两个处理器,一个就是普通的处理器,一个是使用了WebFlux的处理器,
然后我们观察我们的控制台日志情况:
...
有没有发现什么一样,当然我们的页面都是一样的,需要在五秒后才会有结果,但是你观察控制台
发现下面那个打印的时间间隔很短有没有,并没有像上面那个一样等待五秒才打印
下面使用WebFlux的请求的耗时操作没有阻塞处理器的执行,也就是说耗时没能影响到处理器,
这样的话,处理器就可以同时接很多请求了,反正也不会堵塞,
虽然对于请求的响应页面数据来看,没有任何差别,但是对于处理器来说,其吞吐量将会大大提高
三、修改处理器返回值Flux用法
Mono表示处理器返回的数据为0-1个,Flux表示返回的数据为0-多个
数组转Flux
访问测试: http://localhost:8080/test5?strs=lisi&strs=wangwu
集合转Flux
访问测试:http://localhost:8080/test6?strs=lisi&strs=wangwu&strs=xiongqi
Flux底层不会阻塞处理器的执行
我们看下面的日志输出:
...
同步Servlet & 异步Servlet
通过上面的小Demo,我们对"非阻塞","异步"应该有了点概念了吧,详细可看我的另一片学习笔记
:https://www.cnblogs.com/msi-chen/p/10983927.html
下面我们来测试异步Servlet和同步Servlet的差异
定义一个同步Servlet,也就是普通的Servlet
定义一个异步Servlet,最后做统一测试
耗时操作为:
启动Tomcat,我们进行访问,查看控制台的输出
我们观察浏览器的响应,都是在等待5秒后的延迟后才会出结果页面
但是我没得控制台的输出,两个Servlet的业务逻辑耗时为6毫秒和5000多毫秒
同步Servlet阻塞了什么?
当请求到达Tomcat后,Tomcat会为其找到有该请求相匹配的Servlet,并分配一个该Servlet的线程处理该请求,当Servlet中需要处理耗时操作是,当前Servlet线程会被阻塞挂起,所以同步Servlet的业务逻辑阻塞了线程的执行,总共耗时了5000多毫秒
异步Servlet是怎么工作的呢?
先说结果:异步Servlet没有阻塞Servlet线程的执行,而是很快就结束了Servlet线程的调用,又将其投入Servlet线程池,等待新的连接请求,说到这里,那我们的耗时逻辑业务为什么又没有起到耗时的作用呢?因为逻辑耗时代码是另一个线程在执行,但服务端的响应是需要耗时业务逻辑执行完才会响应给客服端的,,也就是说这里分成了两个线程,主线程为没有被阻塞Servlet,次线程在执行耗时逻辑,当次线程执行完后响应给客户端,所以,客户端还是得等5秒才会有响应结果,但是服务端因为Servlet线程早早的就是执行完,在线程池等待了,服务器的吞吐量是不是大大提高了呢?
SpringMVC的孪生兄弟WebFlux的更多相关文章
- 阿里云产品介绍(二):云服务器ECS的孪生兄弟们
上一篇介绍的云服务器ECS,是阿里云最基础的产品,也是每一个云计算厂商最基础的产品,俗称爆款.除了标准的云服务器,阿里云也不停的在推出面向特殊业务场地的云服务器,可以说是ECS的孪生兄弟们. 这一篇就 ...
- Android图表库MPAndroidChart(十)——散点图的孪生兄弟气泡图
Android图表库MPAndroidChart(十)--散点图的孪生兄弟气泡图 起泡图和散点图如出一辙,但是个人认为要比散点图好看一点,我们来看下实际的演示效果 这个和散点图的实现很相似,我们一起来 ...
- 【5min+】传说中的孪生兄弟? Memory and Span
系列介绍 [五分钟的dotnet]是一个利用您的碎片化时间来学习和丰富.net知识的博文系列.它所包含了.net体系中可能会涉及到的方方面面,比如C#的小细节,AspnetCore,微服务中的.net ...
- 深入理解计算机系统(4.1)---X86的孪生兄弟,Y86指令体系结构
引言 各位猿友们好,计算机系统系列很久没更新了,实在是抱歉之极.新的一年,为了给计算机系统系列添加一些新的元素,LZ将其更改为书的原名<深入理解计算机系统>.这本书非常厚,而且难度较高,L ...
- grep与孪生兄弟egrep差异
egrep是对grep的功能扩展,让其支持正则更加完美! #grep与egrep不同 egrep完全支持正则 ls |grep -i '[a-z]\{3\}' === ls |egrep -i ...
- 面试高频SpringMVC执行流程最优解(源码分析)
文章已托管到GitHub,大家可以去GitHub查看阅读,欢迎老板们前来Star! 搜索关注微信公众号 码出Offer 领取各种学习资料! SpringMVC执行流程 SpringMVC概述 Spri ...
- 外行人都能看懂的WebFlux,错过了血亏!
前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 本文知识点架构: 如果有关注我公众号文章的同学就会发 ...
- 学习WebFlux时常见的问题
前言 只有光头才能变强. 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 回顾一下上篇我对WebFlux的入门,如果没读过 ...
- Reactive Spring实战 -- WebFlux使用教程
WebFlux是Spring 5提供的响应式Web应用框架. 它是完全非阻塞的,可以在Netty,Undertow和Servlet 3.1+等非阻塞服务器上运行. 本文主要介绍WebFlux的使用. ...
随机推荐
- 如何用json 与jsonp 的区别去回答你的面试官?
常常 有面试官这样问我们,虽然用过无数次,但是回答不上岂不是尴尬,那我们浅析一下它们的区别? 1. json JSON是一种基于文本的数据交换格式,用于描述复杂的数据,举个例子: var nax=[ ...
- 新项目UX设计0到1的正确开启方式
无论是在BAT还是创业小公司,都随时可能接到从0开始的新项目,那么作为负责新项目的主设OR独立设计师,我们应该从何开启工作呢?
- tomcat多实例及负载均衡
[root@localhost ~]# tar fx apache-tomcat-8.5.40.tar.gz [root@localhost ~]# tar fx jdk-8u191-linux-x6 ...
- java ThreadPoolExecutor 异常捕获
一,创建一个线程池 其中: public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) 饱和策略执行时的具体逻辑. p ...
- js 404页面跳转
非原创 <script type="text/javascript"> var num = 5; function redirect() { num--; docume ...
- leetcode-132-分割回文串②*
题目描述: 方法一:动态规划 class Solution: def minCut(self, s: str) -> int: min_s = list(range(len(s))) n = l ...
- 【安装】Mac rabbitMQ
安装 brew install rabbitmq 目录 cd /usr/local/Cellar/rabbitmq/3.7.4/sbin 插件 sudo ./rabbitmq-plugins ena ...
- LeetCode刷题笔记-递归-将有序数组转换为二叉搜索树
题目描述 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1. 示例: 给定有序数组: [-10, ...
- 剑指offer——09青蛙跳台阶
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 题解: 说俗一点,就是找规律: 不不,首先,我们分析一下,青蛙第一 ...
- Vmware Centos7 配置静态 ip 和 使宿主机和虚拟机互相 ping 通
NAT 方式1. 配置静态 ipVmware 安装 Centos7 可以参考 https://blog.csdn.net/guo_ridgepole/article/details/78973763 ...