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