Spring Boot 2 實戰(zhàn):使用 Undertow 來替代Tomcat 作為Web 容器

undertow.png

1. Undertow 簡介

Undertow 是一個采用 Java 開發(fā)的靈活的高性能 Web 服務(wù)器爵嗅,提供包括阻塞和基于 NIO 的非堵塞機制广料。Undertow 是紅帽公司的開源產(chǎn)品诵肛,是 Wildfly 默認(rèn)的 Web 服務(wù)器媒抠。Undertow 提供一個基礎(chǔ)的架構(gòu)用來構(gòu)建 Web 服務(wù)器祟蚀,這是一個完全為嵌入式設(shè)計的項目水援,提供易用的構(gòu)建器 API,完全向下兼容 Java EE Servlet 3.1 和低級非堵塞的處理器宴杀。

2. Undertow特點

  • 高性能 在多款同類產(chǎn)品的壓測中癣朗,在高并發(fā)情況下表現(xiàn)出色。
  • Servlet4.0 支持 它提供了對 Servlet4.0 的支持旺罢。
  • Web Socket 完全支持旷余,包括JSR-356,用以滿足 Web 應(yīng)用巨大數(shù)量的客戶端扁达。
  • 內(nèi)嵌式 它不需要容器正卧,只需通過 API 即可快速搭建 Web 服務(wù)器。
  • 靈活性 交由鏈?zhǔn)紿andler配置和處理請求跪解,可以最小化按需加載模塊炉旷,無須加載多余功能。
  • 輕量級 它是一個 內(nèi)嵌Web 服務(wù)器, 由兩個核心 Jar 包組成

3. 替換默認(rèn)的Tomcat

Spring boot 默認(rèn)使用 Tomcat 內(nèi)嵌容器 窘行。依賴于 spring-boot-starter-web 饥追。我們只需要排除 Tomcat 依賴。引用Undertow 就可以了罐盔,maven 配置如下:

  <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
            </exclusion>
        </exclusions>
   </dependency>
   <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-undertow</artifactId>
    </dependency>

4. 自定義配置Undertow

其實到第三步已經(jīng)可以愉快地玩耍了但绕。你可以立即在 https://felord.cn 找到更多教程來學(xué)習(xí)Spring Boot。當(dāng)然你也可以再折騰一番翘骂,通過在Spring Boot 配置文件application.yml中配置 ServerPropertiesServerProperties.Undertow 的相關(guān)屬性壁熄。 總結(jié)了一下比較陌生的ServerProperties.Undertow 的屬性:

# 設(shè)置IO線程數(shù), 它主要執(zhí)行非阻塞的任務(wù),它們會負(fù)責(zé)多個連接, 默認(rèn)設(shè)置每個CPU核心一個線程
# 不要設(shè)置過大,如果過大碳竟,啟動項目會報錯:打開文件數(shù)過多
server:
  undertow:
     io-threads: 16
# 阻塞任務(wù)線程池, 當(dāng)執(zhí)行類似servlet請求阻塞IO操作, undertow會從這個線程池中取得線程
# 它的值設(shè)置取決于系統(tǒng)線程執(zhí)行任務(wù)的阻塞系數(shù)草丧,默認(rèn)值是IO線程數(shù)*8
     worker-threads: 256
# 以下的配置會影響buffer,這些buffer會用于服務(wù)器連接的IO操作,有點類似netty的池化內(nèi)存管理
# 每塊buffer的空間大小,越小的空間被利用越充分,不要設(shè)置太大莹桅,以免影響其他應(yīng)用昌执,合適即可
     buffer-size: 1024
# 每個區(qū)分配的buffer數(shù)量 , 所以pool的大小是buffer-size * buffers-per-region
     buffers-per-region: 1024
# 是否分配的直接內(nèi)存(NIO直接分配的堆外內(nèi)存)
     direct-buffers: true

5. 總結(jié)

今天我們演示了如何用性能優(yōu)良的 Undertow 來作為Spring Boot 的 Servlet Web 容器。其實在并發(fā)量不大的情況下 Undertow诈泼、和其它兩款 Servlet Web 容器 Jetty 懂拾、Tomcat 的差距并不是很大。 Undertow 的優(yōu)勢是高并發(fā)下的吞吐量铐达。你可以根據(jù)自己的實際需要來選擇岖赋。

關(guān)注公眾號:碼農(nóng)小胖哥,獲取更多資訊

個人博客:https://felord.cn

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瓮孙,一起剝皮案震驚了整個濱河市唐断,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌杭抠,老刑警劉巖脸甘,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異偏灿,居然都是意外死亡丹诀,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進(jìn)店門翁垂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來铆遭,“玉大人,你說我怎么就攤上這事沿猜∶度伲” “怎么了?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵邢疙,是天一觀的道長棍弄。 經(jīng)常有香客問我,道長疟游,這世上最難降的妖魔是什么呼畸? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮颁虐,結(jié)果婚禮上蛮原,老公的妹妹穿的比我還像新娘。我一直安慰自己另绩,他們只是感情好儒陨,可當(dāng)我...
    茶點故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著笋籽,像睡著了一般蹦漠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上车海,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天笛园,我揣著相機與錄音,去河邊找鬼侍芝。 笑死研铆,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的州叠。 我是一名探鬼主播棵红,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼咧栗!你這毒婦竟也來了逆甜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤楼熄,失蹤者是張志新(化名)和其女友劉穎忆绰,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體可岂,經(jīng)...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡错敢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了缕粹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片稚茅。...
    茶點故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖平斩,靈堂內(nèi)的尸體忽然破棺而出亚享,到底是詐尸還是另有隱情,我是刑警寧澤绘面,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布欺税,位于F島的核電站侈沪,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏晚凿。R本人自食惡果不足惜亭罪,卻給世界環(huán)境...
    茶點故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望歼秽。 院中可真熱鬧应役,春花似錦、人聲如沸燥筷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽肆氓。三九已至袍祖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間谢揪,已是汗流浹背盲泛。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留键耕,地道東北人寺滚。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像屈雄,于是被迫代替她去往敵國和親村视。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,658評論 2 350

推薦閱讀更多精彩內(nèi)容