爲何不少 SpringBoot 開發者放棄了 Tomcat,選擇了 Undertow?

  • 前言
  • SpringBoot中的Tomcat容器
  • SpringBoot設置Undertow
  • Tomcat與Undertow的優劣對比
  • 最後
    • *

前言

在SpringBoot框架中,咱們使用最多的是Tomcat,這是SpringBoot默認的容器技術,並且是內嵌式的Tomcat。程序員

同時,SpringBoot也支持Undertow容器,咱們能夠很方便的用Undertow替換Tomcat,而Undertow的性能和內存使用方面都優於Tomcat,那咱們如何使用Undertow技術呢?本文將爲你們細細講解。面試

SpringBoot中的Tomcat容器

SpringBoot能夠說是目前最火的Java Web框架了。它將開發者從繁重的xml解救了出來,讓開發者在幾分鐘內就能夠建立一個完整的Web服務,極大的提升了開發者的工做效率。Web容器技術是Web項目必不可少的組成部分,由於任Web項目都要藉助容器技術來運行起來。安全

在SpringBoot框架中,咱們使用最多的是Tomcat,這是SpringBoot默認的容器技術,並且是內嵌式的Tomcat。服務器

SpringBoot設置Undertow

對於Tomcat技術,Java程序員應該都很是熟悉,它是Web應用最經常使用的容器技術。咱們最先的開發的項目基本都是部署在Tomcat下運行,那除了Tomcat容器,SpringBoot中咱們還可使用什麼容器技術呢?架構

沒錯,就是題目中的Undertow容器技術。SrpingBoot已經徹底繼承了Undertow技術,咱們只須要引入Undertow的依賴便可,以下圖所示。併發

[](https://mp.toutiao.com/profil...框架

[](https://mp.toutiao.com/profil...ide

配置好之後,咱們啓動應用程序,發現容器已經替換爲Undertow。高併發

那咱們爲何須要替換Tomcat爲Undertow技術呢?性能

Tomcat與Undertow的優劣對比

Tomcat是Apache基金下的一個輕量級的Servlet容器,支持Servlet和JSP。Tomcat具備Web服務器特有的功能,包括 Tomcat管理和控制平臺、安全局管理和Tomcat閥等。Tomcat自己包含了HTTP服務器,所以也能夠視做單獨的Web服務器。

可是,Tomcat和ApacheHTTP服務器不是一個東西,ApacheHTTP服務器是用C語言實現的HTTP Web服務器。Tomcat是徹底免費的,深受開發者的喜好。

[](https://mp.toutiao.com/profil...

Undertow是Red Hat公司的開源產品, 它徹底採用Java語言開發,是一款靈活的高性能Web服務器,支持阻塞IO和非阻塞IO。因爲Undertow採用Java語言開發,能夠直接嵌入到Java項目中使用。同時, Undertow徹底支持Servlet和Web Socket,在高併發狀況下表現很是出色。

[](https://mp.toutiao.com/profil...

咱們在相同機器配置下壓測Tomcat和Undertow,獲得的測試結果以下所示:

QPS測試結果對比:

Tomcat

[](https://mp.toutiao.com/profil...

Undertow

[](https://mp.toutiao.com/profil...

內存使用對比:

Tomcat

[](https://mp.toutiao.com/profil...

Undertow

[](https://mp.toutiao.com/profil...

經過測試發現,在高併發系統中,Tomcat相對來講比較弱。在相同的機器配置下,模擬相等的請求數,Undertow在性能和內存使用方面都是最優的。而且Undertow新版本默認使用持久鏈接,這將會進一步提升它的併發吞吐能力。因此,若是是高併發的業務系統,Undertow是最佳選擇。

最後

SpingBoot中咱們既可使用Tomcat做爲Http服務,也能夠用Undertow來代替。Undertow在高併發業務場景中,性能優於Tomcat。因此,若是咱們的系統是高併發請求,不妨使用一下Undertow,你會發現你的系統性能會獲得很大的提高。

推薦閱讀:

牛皮了,馬士兵老師全網首播阿里P8級技術、實現大型淘寶實戰落

面試美團被JVM慘虐?阿里P9架構師用500分鐘把JVM從入門講到實戰#合集

清華啓蒙架構師馬士兵針對應屆生到開發十年的Java程序員作職業把脈

馬士兵教育:Spring源碼實戰全集,資深架構師帶你搞懂Spring源碼底層從入門到入墳

阿里P9架構師120分鐘帶你掌握線程池,不在爲線程而煩惱

相關文章
相關標籤/搜索