0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

為什么建議你替換掉SpringBoot框架中的Tomcat?

Android編程精選 ? 來源:頭條號(hào)阿邁達(dá)聊技術(shù) ? 2023-01-07 10:26 ? 次閱讀

前言

在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可以說是目前最火的Java Web框架了。它將開發(fā)者從繁重的xml解救了出來,讓開發(fā)者在幾分鐘內(nèi)就可以創(chuàng)建一個(gè)完整的Web服務(wù),極大的提高了開發(fā)者的工作效率。Web容器技術(shù)是Web項(xiàng)目必不可少的組成部分,因?yàn)槿蜽eb項(xiàng)目都要借助容器技術(shù)來運(yùn)行起來。

在SpringBoot框架中,我們使用最多的是Tomcat,這是SpringBoot默認(rèn)的容器技術(shù),而且是內(nèi)嵌式的Tomcat。

SpringBoot設(shè)置Undertow

對(duì)于Tomcat技術(shù),Java程序員應(yīng)該都非常熟悉,它是Web應(yīng)用最常用的容器技術(shù)。我們最早的開發(fā)的項(xiàng)目基本都是部署在Tomcat下運(yùn)行,那除了Tomcat容器,SpringBoot中我們還可以使用什么容器技術(shù)呢?

沒錯(cuò),就是題目中的Undertow容器技術(shù)。SrpingBoot已經(jīng)完全繼承了Undertow技術(shù),我們只需要引入U(xiǎn)ndertow的依賴即可,如下圖所示。

03f77764-8dcf-11ed-bfe3-dac502259ad0.jpg

040a4ad8-8dcf-11ed-bfe3-dac502259ad0.jpg

配置好以后,我們啟動(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語言實(shí)現(xiàn)的HTTP Web服務(wù)器。Tomcat是完全免費(fèi)的,深受開發(fā)者的喜愛。

Undertow是Red Hat公司的開源產(chǎn)品, 它完全采用Java語言開發(fā),是一款靈活的高性能Web服務(wù)器,支持阻塞IO和非阻塞IO。由于Undertow采用Java語言開發(fā),可以直接嵌入到Java項(xiàng)目中使用。同時(shí), Undertow完全支持Servlet和Web Socket,在高并發(fā)情況下表現(xiàn)非常出色。

0430d702-8dcf-11ed-bfe3-dac502259ad0.jpg

我們?cè)谙嗤瑱C(jī)器配置下壓測Tomcat和Undertow,得到的測試結(jié)果如下所示:

QPS測試結(jié)果對(duì)比:

044a8a62-8dcf-11ed-bfe3-dac502259ad0.jpg

Tomcat

0466d938-8dcf-11ed-bfe3-dac502259ad0.jpg

Undertow

內(nèi)存使用對(duì)比:

0486010a-8dcf-11ed-bfe3-dac502259ad0.jpg

Tomcat

049bb720-8dcf-11ed-bfe3-dac502259ad0.jpg

Undertow

通過測試發(fā)現(xiàn),在高并發(fā)系統(tǒng)中,Tomcat相對(duì)來說比較弱。在相同的機(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來代替。Undertow在高并發(fā)業(yè)務(wù)場景中,性能優(yōu)于Tomcat。所以,如果我們的系統(tǒng)是高并發(fā)請(qǐng)求,不妨使用一下Undertow,你會(huì)發(fā)現(xiàn)你的系統(tǒng)性能會(huì)得到很大的提升。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 容器
    +關(guān)注

    關(guān)注

    0

    文章

    490

    瀏覽量

    21986
  • spring
    +關(guān)注

    關(guān)注

    0

    文章

    335

    瀏覽量

    14259
  • Boot
    +關(guān)注

    關(guān)注

    0

    文章

    148

    瀏覽量

    35675
  • tomcat
    +關(guān)注

    關(guān)注

    0

    文章

    27

    瀏覽量

    4819
  • SpringBoot
    +關(guān)注

    關(guān)注

    0

    文章

    172

    瀏覽量

    145

原文標(biāo)題:為什么建議你替換掉 SpringBoot 框架中的 Tomcat ?

文章出處:【微信號(hào):AndroidPush,微信公眾號(hào):Android編程精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    springboot的輕量替代框架-Solon

    的不可能不知道Spring,今天給大家介紹一個(gè)號(hào)稱springboot的輕量替代框架-Solon,這個(gè)框架還是國人開發(fā)的,真是一個(gè)單挑spring的男人。 認(rèn)識(shí)Solon Solon是一個(gè)參考了Spring
    的頭像 發(fā)表于 09-30 10:55 ?3866次閱讀
    <b class='flag-5'>springboot</b>的輕量替代<b class='flag-5'>框架</b>-Solon

    請(qǐng)問第二次走線時(shí)怎么把上一次的替換掉

    我想把第二次走線的時(shí)候把上一次的替換掉怎么設(shè)置
    發(fā)表于 04-24 07:35

    SpringBoot的Druid介紹

    SpringBootDruid數(shù)據(jù)源配置
    發(fā)表于 05-07 09:21

    Apache和Tomcat之間的區(qū)別解答

    經(jīng)常在用Apache和Tomcat等這些服務(wù)器時(shí),總感覺還是不清楚他們之間有什么關(guān)系。在用Tomcat的時(shí)候總出現(xiàn)Apache,總感到迷惑,到底誰是主誰是次呢?本文將會(huì)給大家一個(gè)詳細(xì)的解答。
    發(fā)表于 07-11 08:33

    基于spring boot的linux服務(wù)器部署方法

    最近一直在研究springboot服務(wù)器,之前受到springmvc等框架的困擾,思路不對(duì),一直想把springboot打包成war包然后部署到tomcat容器下,今天突然想到既然
    發(fā)表于 07-22 06:51

    一文解析SpringBoot2整合SSM框架

    SpringBoot2整合SSM框架詳解
    發(fā)表于 06-09 16:43

    如何用__write函數(shù)替換掉原先的fputc函數(shù)呢

    如何用__write函數(shù)替換掉原先的fputc函數(shù)呢?
    發(fā)表于 12-01 06:55

    為什么要用STM32去替換掉Arduino呢

    為什么要用STM32去替換掉Arduino呢?STM32相比Arduino有哪些優(yōu)勢呢?
    發(fā)表于 12-15 06:21

    SpringBoot應(yīng)用啟動(dòng)運(yùn)行run方法

    什么時(shí)候創(chuàng)建嵌入式的Servlet容器工廠?什么時(shí)候獲取嵌入式的Servlet容器并啟動(dòng)Tomcat;獲取嵌入式的Servlet容器工廠:1)、SpringBoot應(yīng)用啟動(dòng)運(yùn)行run方法2
    發(fā)表于 12-20 06:16

    SpringBoot配置嵌入式Servlet

    注冊(cè)Filter注冊(cè)ListenerSpringBoot注冊(cè)DispatcherServlet切換嵌入式Servlet容器SpringBoot默認(rèn)使用Tomcat作為嵌入式的Servlet容器定制和修改Servlet容器相關(guān)配置可以通過全局配置文件或者自己編寫WebSer
    發(fā)表于 12-20 06:19

    什么時(shí)候獲取嵌入式的Servlet容器并啟動(dòng)Tomcat

    什么時(shí)候創(chuàng)建嵌入式的Servlet容器工廠?什么時(shí)候獲取嵌入式的Servlet容器并啟動(dòng)Tomcat?獲取嵌入式的Servlet容器工廠:1)、SpringBoot應(yīng)用啟動(dòng)運(yùn)行run方法;2)、執(zhí)行
    發(fā)表于 12-20 06:11

    想把我自定義的內(nèi)核文件替換掉開發(fā)板里的內(nèi)核如何操作?

    按照文檔方式裁剪好了內(nèi)核文件image,但是文檔的OTG方式是使用鏡像文件t507_linux_okt507_uart0.img如果我僅想把我自定義的內(nèi)核文件替換掉開發(fā)板里的內(nèi)核,怎么操作呢Linux 4.9.170
    發(fā)表于 12-31 07:00

    Springboot整合netty框架實(shí)現(xiàn)終端、通訊板子(單片機(jī))TCP/UDP通信案例

    如何springboot和netty案例的源代碼一個(gè)springboot整合netty框架的開發(fā)小案例,實(shí)現(xiàn)服務(wù)端與單片機(jī)終端實(shí)時(shí)通信的通訊架構(gòu)案例。物聯(lián)網(wǎng)通信給板子下發(fā)指令案例附帶源碼及整合流程步驟
    發(fā)表于 12-29 18:55 ?20次下載
    <b class='flag-5'>Springboot</b>整合netty<b class='flag-5'>框架</b>實(shí)現(xiàn)終端、通訊板子(單片機(jī))TCP/UDP通信案例

    什么是 SpringBoot?

    本文從為什么要有 `SpringBoot`,以及 `SpringBoot` 到底方便在哪里開始入手,逐步分析了 `SpringBoot` 自動(dòng)裝配的原理,最后手寫了一個(gè)簡單的 `start` 組件,通過實(shí)戰(zhàn)來體會(huì)了 `
    的頭像 發(fā)表于 04-07 11:28 ?1183次閱讀
    什么是 <b class='flag-5'>SpringBoot</b>?

    SpringBoot 連接ElasticSearch的使用方式

    在上篇 ElasticSearch 文章,我們?cè)敿?xì)的介紹了 ElasticSearch 的各種 api 使用。 實(shí)際的項(xiàng)目開發(fā)過程,我們通?;谀承┲髁?b class='flag-5'>框架平臺(tái)進(jìn)行技術(shù)開發(fā),比如
    的頭像 發(fā)表于 10-09 10:35 ?634次閱讀