本文已經收錄到Github倉庫,該倉庫包含計算機基礎、Java基礎、多執行緒、JVM、資料庫、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分散式、微服務、設計模式、架構、校招社招分享等核心知識點,歡迎star~
Github地址:https://github.com/Tyson0314/Java-learning
在SpringBoot框架中,我們使用最多的是Tomcat,這是SpringBoot預設的容器技術,而且是內嵌式的Tomcat。同時,SpringBoot也支援Undertow容器,我們可以很方便的用Undertow替換Tomcat,而Undertow的效能和記憶體使用方面都優於Tomcat,那我們如何使用Undertow技術呢?本文將為大家細細講解。
SpringBoot可以說是目前最火的Java Web框架了。它將開發者從繁重的xml解救了出來,讓開發者在幾分鐘內就可以建立一個完整的Web服務,極大的提高了開發者的工作效率。Web容器技術是Web專案必不可少的組成部分,因為任Web專案都要藉助容器技術來執行起來。在SpringBoot框架中,我們使用最多的是Tomcat,這是SpringBoot預設的容器技術,而且是內嵌式的Tomcat。推薦:幾乎涵蓋你需要的SpringBoot所有操作。
對於Tomcat技術,Java程式設計師應該都非常熟悉,它是Web應用最常用的容器技術。我們最早的開發的專案基本都是部署在Tomcat下執行,那除了Tomcat容器,SpringBoot中我們還可以使用什麼容器技術呢?沒錯,就是題目中的Undertow容器技術。SrpingBoot已經完全繼承了Undertow技術,我們只需要引入Undertow的依賴即可,如下圖所示。
設定好以後,我們啟動應用程式,發現容器已經替換為Undertow。那我們為什麼需要替換Tomcat為Undertow技術呢?
Tomcat是Apache基金下的一個輕量級的Servlet容器,支援Servlet和JSP。Tomcat具有Web伺服器特有的功能,包括 Tomcat管理和控制平臺、安全域性管理和Tomcat閥等。Tomcat本身包含了HTTP伺服器,因此也可以視作單獨的Web伺服器。但是,Tomcat和ApacheHTTP伺服器不是一個東西,ApacheHTTP伺服器是用C語言實現的HTTP Web伺服器。Tomcat是完全免費的,深受開發者的喜愛。
Undertow是Red Hat公司的開源產品, 它完全採用Java語言開發,是一款靈活的高效能Web伺服器,支援阻塞IO和非阻塞IO。由於Undertow採用Java語言開發,可以直接嵌入到Java專案中使用。同時, Undertow完全支援Servlet和Web Socket,在高並行情況下表現非常出色。
我們在相同機器設定下壓測Tomcat和Undertow,得到的測試結果如下所示:QPS測試結果對比: Tomcat
Undertow
記憶體使用對比:
Tomcat
Undertow
通過測試發現,在高並行系統中,Tomcat相對來說比較弱。在相同的機器設定下,模擬相等的請求數,Undertow在效能和記憶體使用方面都是最優的。並且Undertow新版本預設使用持久連線,這將會進一步提高它的並行吞吐能力。所以,如果是高並行的業務系統,Undertow是最佳選擇。
SpingBoot中我們既可以使用Tomcat作為Http服務,也可以用Undertow來代替。Undertow在高並行業務場景中,效能優於Tomcat。所以,如果我們的系統是高並行請求,不妨使用一下Undertow,你會發現你的系統效能會得到很大的提升。
參考連結:原文地址:toutiao.com/a677547665941699021
最後給大家分享一個Github倉庫,上面有大彬整理的300多本經典的計算機書籍PDF,包括C語言、C++、Java、Python、前端、資料庫、作業系統、計算機網路、資料結構和演演算法、機器學習、程式設計人生等,可以star一下,下次找書直接在上面搜尋,倉庫持續更新中~
Github地址:https://github.com/Tyson0314/java-books