大廠禁止SpringBoot在項(xiàng)目使用Tomcat容器原理解析
前言
在SpringBoot框架中,我們使用最多的是Tomcat,這是SpringBoot默認(rèn)的容器技術(shù),而且是內(nèi)嵌式的Tomcat。同時(shí),SpringBoot也支持Undertow容器,我們可以很方便的用Undertow替換Tomcat,而Undertow的性能和內(nèi)存使用方面都優(yōu)于Tomcat,那我們?nèi)绾问褂肬ndertow技術(shù)呢?本文將為大家細(xì)細(xì)講解。
SpringBoot中的Tomcat容器
SpringBoot可以說(shuō)是目前最火的Java Web框架了。它將開(kāi)發(fā)者從繁重的xml解救了出來(lái),讓開(kāi)發(fā)者在幾分鐘內(nèi)就可以創(chuàng)建一個(gè)完整的Web服務(wù),極大的提高了開(kāi)發(fā)者的工作效率。Web容器技術(shù)是Web項(xiàng)目必不可少的組成部分,因?yàn)槿蜽eb項(xiàng)目都要借助容器技術(shù)來(lái)運(yùn)行起來(lái)。
在SpringBoot框架中,我們使用最多的是Tomcat,這是SpringBoot默認(rèn)的容器技術(shù),而且是內(nèi)嵌式的Tomcat。推薦:你需要的SpringBoot操作。
SpringBoot設(shè)置Undertow
對(duì)于Tomcat技術(shù),Java程序員應(yīng)該都非常熟悉,它是Web應(yīng)用最常用的容器技術(shù)。我們最早的開(kāi)發(fā)的項(xiàng)目基本都是部署在Tomcat下運(yùn)行,那除了Tomcat容器,SpringBoot中我們還可以使用什么容器技術(shù)呢?沒(méi)錯(cuò),就是題目中的Undertow容器技術(shù)。SrpingBoot已經(jīng)完全繼承了Undertow技術(shù),我們只需要引入U(xiǎn)ndertow的依賴即可,如下圖所示。
配置好以后,我們啟動(dòng)應(yīng)用程序,發(fā)現(xiàn)容器已經(jīng)替換為Undertow。那我們?yōu)槭裁葱枰鎿QTomcat為Undertow技術(shù)呢?
Tomcat與Undertow的優(yōu)劣對(duì)比
Tomcat是Apache基金下的一個(gè)輕量級(jí)的Servlet容器,支持Servlet和JSP。Tomcat具有Web服務(wù)器特有的功能,包括 Tomcat管理和控制平臺(tái)、安全局管理和Tomcat閥等。Tomcat本身包含了HTTP服務(wù)器,因此也可以視作單獨(dú)的Web服務(wù)器。但是,Tomcat和ApacheHTTP服務(wù)器不是一個(gè)東西,ApacheHTTP服務(wù)器是用C語(yǔ)言實(shí)現(xiàn)的HTTP Web服務(wù)器。Tomcat是完全免費(fèi)的,深受開(kāi)發(fā)者的喜愛(ài)。
Undertow是Red Hat公司的開(kāi)源產(chǎn)品, 它完全采用Java語(yǔ)言開(kāi)發(fā),是一款靈活的高性能Web服務(wù)器,支持阻塞IO和非阻塞IO。由于Undertow采用Java語(yǔ)言開(kāi)發(fā),可以直接嵌入到Java項(xiàng)目中使用。同時(shí), Undertow完全支持Servlet和Web Socket,在高并發(fā)情況下表現(xiàn)非常出色。
我們?cè)谙嗤瑱C(jī)器配置下壓測(cè)Tomcat和Undertow,得到的測(cè)試結(jié)果如下所示:QPS測(cè)試結(jié)果對(duì)比: Tomcat
Undertow
內(nèi)存使用對(duì)比:
Tomcat
Undertow
通過(guò)測(cè)試發(fā)現(xiàn),在高并發(fā)系統(tǒng)中,Tomcat相對(duì)來(lái)說(shuō)比較弱。在相同的機(jī)器配置下,模擬相等的請(qǐng)求數(shù),Undertow在性能和內(nèi)存使用方面都是最優(yōu)的。并且Undertow新版本默認(rèn)使用持久連接,這將會(huì)進(jìn)一步提高它的并發(fā)吞吐能力。所以,如果是高并發(fā)的業(yè)務(wù)系統(tǒng),Undertow是最佳選擇。
最后
SpingBoot中我們既可以使用Tomcat作為Http服務(wù),也可以用Undertow來(lái)代替。Undertow在高并發(fā)業(yè)務(wù)場(chǎng)景中,性能優(yōu)于Tomcat。所以,如果我們的系統(tǒng)是高并發(fā)請(qǐng)求,不妨使用一下Undertow,你會(huì)發(fā)現(xiàn)你的系統(tǒng)性能會(huì)得到很大的提升。
以上就是大廠禁止SpringBoot在項(xiàng)目使用Tomcat原理解析的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot禁止Tomcat的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
java冷知識(shí):javac AbstractProcessor詳解
這篇文章主要介紹了java冷知識(shí):javac AbstractProcessor詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11AsyncConfigurerSupport自定義異步線程池處理異常
這篇文章主要為大家介紹了AsyncConfigurerSupport自定義異步線程池處理異常詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06簡(jiǎn)單理解java泛型的本質(zhì)(非類型擦除)
泛型在java中有很重要的地位,在面向?qū)ο缶幊碳案鞣N設(shè)計(jì)模式中有非常廣泛的應(yīng)用。泛型是參數(shù)化類型的應(yīng)用,操作的數(shù)據(jù)類型不限定于特定類型,可以根據(jù)實(shí)際需要設(shè)置不同的數(shù)據(jù)類型,以實(shí)現(xiàn)代碼復(fù)用。下面小編來(lái)簡(jiǎn)單講一講泛型2019-05-05重寫equals的同時(shí)為何要重寫hashCode?
這篇文章主要給大家介紹了關(guān)于重寫equals的同時(shí)為何要重寫hashCode的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01學(xué)習(xí)Java之如何對(duì)時(shí)間進(jìn)行格式化
當(dāng)我們?cè)谀J(rèn)情況下構(gòu)造出來(lái)的時(shí)間對(duì)象,它的時(shí)間格式并不適合我們閱讀,并且在開(kāi)發(fā)時(shí),pc端、Android端、iOS端等展示的時(shí)間格式可能也并不完全一樣,本文就從這幾個(gè)問(wèn)題給大家介紹如何對(duì)時(shí)間進(jìn)行格式化,感興趣的同學(xué)可以借鑒一下2023-05-05