WebFlux简介

  • Post author:
  • Post category:其他



因企业应用大都和web相关,而Java的web标准中较核心的一部分其实就是JavaEE里的Servlet。

Spring和Servlet“相亲相爱”一番后,我就来到了这个世界。我的全名叫Spring MVC,这里的Spring既是我的姓也是我的“爸爸”,那Servlet就是我的“妈妈”了,大家叫我MVC就行了。

那个年代社会很落后,条件也不好,好歹我们要求也不高,求个温饱就行了。

所以我的妈妈Servlet和她的闺蜜Filter天生就是同步阻塞的,包括她们同事HttpServletRequest的getParameter,getPart等这些方法也都是阻塞的。

虽然我的爸爸Spring给了我23条染色体来进行改良,但不要忘了我还从Servlet妈妈那里继承了23条,所以我也是同步阻塞的。不过我的“长相”已经好看很多了,因为Spring爸爸知道,在以后的日子里,除了拼实力之外,颜值也是非常重要的。

因为我妈妈Servlet是一个规范,我爸爸Spring是一个框架,所以我跟他们一样,都是无法自己独立运行的。

所以在我们要运行的时候,必须要寻找一个特殊的“家”,通常称它为Servlet容器,比如tomcat就算非常知名的一个。

Servlet容器熟知我极有可能阻塞当前执行线程,所以专门量身打造。它给我准备了一个非常大的线程池,里面有好多线程。每过来一个请求,它就扔给我一个线程,说自己玩去吧,随便“折腾”。

好在那时美国那个叫乔布斯的家伙被自己的公司赶出去在外面“流浪”,Servlet容器为我量身打造的这种方法完全能够胜任日常,关键还非常的简单。

这种小富即安的日子就这样往前过着。


兄弟出生

生命不息,变化不止。随着乔布斯推出iphone,智能机瞬间大火,全民进入移动互联网时代。激增的网民数量,给现有软件架构带来极大的挑战。

一般来说,社会越发达,分工越精细,对单一工种的要求就越高。

软件也是如此,在传统“大块头”软件表现的越来越格格不入的时候,微服务就如一丝春风吹了进来。

按它的指导原则,将大软件按某种方式拆分为一个个小工程。小工程规模小,便于管理,而且机动性也好,功能聚合性更好。它承受的并发应该更高。

有人觉得与微服务比起来,过去使用的web服务器如tomcat略显笨重,不够轻量级。也有人说tomcat内部一个请求一个线程这种阻塞执行方式消耗太多线程,不太容易支撑超高并发。

无论怎么说,简而言之一句话,一个全新的时代已经到来。

此时我们需要一个更加轻量级web应用,它使用更少的硬件资源和线程,反而更容易处理高并发。那么它一定是异步非阻塞的。

这样的使命自然落到了响应式编程的范畴上了。所以我的爸爸Spring审时度势,在5.0之后就赶紧把我推出来了。

没错,我就是Spring WebFlux,这里的Spring既是我的姓也是我爸爸。大家可以叫我WebFlux。初来乍到,好多人都对我不熟悉,请容许我介绍一番。

首先这个响应式究竟是什么意思呢?响应式这个术语,指的是一个编程模型,它是围绕着对变化的反映来构建的。

如网络组件用来响应I/O事件,UI控制器用来响应鼠标事件等等。按照这种意识的话,非阻塞就是响应式的&#



版权声明:本文为weixin_46507406原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。