公司空降一個大廠 CTO:以后禁止在 Spring Boot 項目中使用 Tomcat,城會玩啊!
共 2186字,需瀏覽 5分鐘
·
2024-07-26 14:41
點擊關(guān)注公眾號,Java 干貨及時推送↓
前言
在SpringBoot框架中,我們使用最多的是Tomcat,這是SpringBoot默認的容器技術(shù),而且是內(nèi)嵌式的Tomcat。
同時,SpringBoot也支持Undertow容器,我們可以很方便的用Undertow替換Tomcat,而Undertow的性能和內(nèi)存使用方面都優(yōu)于Tomcat,那我們?nèi)绾问褂肬ndertow技術(shù)呢?
本文將為大家細細講解。
SpringBoot中的Tomcat容器
SpringBoot可以說是目前最火的Java Web框架了。
它將開發(fā)者從繁重的xml解救了出來,讓開發(fā)者在幾分鐘內(nèi)就可以創(chuàng)建一個完整的Web服務(wù),極大的提高了開發(fā)者的工作效率。
Web容器技術(shù)是Web項目必不可少的組成部分,因為任Web項目都要借助容器技術(shù)來運行起來。
在SpringBoot框架中,我們使用最多的是Tomcat,這是SpringBoot默認的容器技術(shù),而且是內(nèi)嵌式的Tomcat。
SpringBoot設(shè)置Undertow
對于Tomcat技術(shù),Java程序員應(yīng)該都非常熟悉,它是Web應(yīng)用最常用的容器技術(shù)。
我們最早的開發(fā)的項目基本都是部署在Tomcat下運行,那除了Tomcat容器,SpringBoot中我們還可以使用什么容器技術(shù)呢?
沒錯,就是題目中的Undertow容器技術(shù)。
SrpingBoot已經(jīng)完全繼承了Undertow技術(shù),我們只需要引入Undertow的依賴即可,如下圖所示。
Spring Boot 基礎(chǔ)就不介紹了,推薦看這個實戰(zhàn)項目:
https://github.com/javastacks/spring-boot-best-practice
配置好以后,我們啟動應(yīng)用程序,發(fā)現(xiàn)容器已經(jīng)替換為Undertow。另外,如果你近期準備面試跳槽,建議在Java面試庫小程序在線刷題,涵蓋 2000+ 道 Java 面試題,幾乎覆蓋了所有主流技術(shù)面試題。
那我們?yōu)槭裁葱枰鎿QTomcat為Undertow技術(shù)呢?
Tomcat與Undertow的優(yōu)劣對比
Tomcat是Apache基金下的一個輕量級的Servlet容器,支持Servlet和JSP。
Tomcat具有Web服務(wù)器特有的功能,包括 Tomcat管理和控制平臺、安全局管理和Tomcat閥等。
Tomcat本身包含了HTTP服務(wù)器,因此也可以視作單獨的Web服務(wù)器。
但是,Tomcat和ApacheHTTP服務(wù)器不是一個東西,ApacheHTTP服務(wù)器是用C語言實現(xiàn)的HTTP Web服務(wù)器。Tomcat是完全免費的,深受開發(fā)者的喜愛。
Undertow是Red Hat公司的開源產(chǎn)品, 它完全采用Java語言開發(fā),是一款靈活的高性能Web服務(wù)器,支持阻塞IO和非阻塞IO。
由于Undertow采用Java語言開發(fā),可以直接嵌入到Java項目中使用。同時, Undertow完全支持Servlet和Web Socket,在高并發(fā)情況下表現(xiàn)非常出色。跳個槽漲了 8K,把我驚呆了,推薦學(xué)習(xí)。
我們在相同機器配置下壓測Tomcat和Undertow,得到的測試結(jié)果如下所示。
QPS測試結(jié)果對比:
Tomcat
Undertow
內(nèi)存使用對比:
Tomcat
Undertow
通過測試發(fā)現(xiàn),在高并發(fā)系統(tǒng)中,Tomcat相對來說比較弱。在相同的機器配置下,模擬相等的請求數(shù),Undertow在性能和內(nèi)存使用方面都是最優(yōu)的。
并且Undertow新版本默認使用持久連接,這將會進一步提高它的并發(fā)吞吐能力。所以,如果是高并發(fā)的業(yè)務(wù)系統(tǒng),Undertow是最佳選擇。
最后
SpingBoot中我們既可以使用Tomcat作為Http服務(wù),也可以用Undertow來代替。
Undertow在高并發(fā)業(yè)務(wù)場景中,性能優(yōu)于Tomcat。所以,如果我們的系統(tǒng)是高并發(fā)請求,不妨使用一下Undertow,你會發(fā)現(xiàn)你的系統(tǒng)性能會得到很大的提升。
