咱們知道傳統的Web框架,好比說:struts2,springmvc等都是基於Servlet API與Servlet容器基礎之上運行的,在Servlet3.1以後纔有了異步非阻塞的支持。而WebFlux是一個典型非阻塞異步的框架,它的核心是基於Reactor的相關API實現的。相對於傳統的web框架來講,它能夠運行在諸如Netty,Undertow及支持Servlet3.1的容器上,所以它的運行環境的可選擇行要比傳統web框架多的多。java
根據官方的說法,webflux主要在以下兩方面體現出獨有的優點:web
其實在servlet3.1提供了非阻塞的API,WebFlux提供了一種比其更完美的解決方案。使用非阻塞的方式能夠利用較小的線程或硬件資源來處理併發進而提升其可伸縮性spring
老生常談的編程方式了,Spring5必須讓你使用java8,那麼函數式編程就是java8重要的特色之一,而WebFlux支持函數式編程來定義路由端點處理請求。編程
傳統mvc:併發
主線程接收到request --> 【準備數據(時間長)】--> 給用戶返回數據。 整個過程是單線程阻塞,因此用戶感受等待時間長。
flux是異步模式:mvc
主線程在接收到request --> 馬上返回
(因此性能測試出來的響應時間是很短,是個不變的常數,不隨用戶數量增長變化)框架