爲何不少Spring Boot開發者放棄了Tomcat

前言

 

在 Spring Boot 框架中,咱們使用最多的是 Tomcat,這是 Spring Boot 默認的容器技術,並且是內嵌式的 Tomcat。同時,Spring Boot 也支持 Undertow 容器,咱們能夠很方便的用 Undertow 替換 Tomcat,而 Undertow 的性能和內存使用方面都優於Tomcat,那咱們如何使用 Undertow 技術呢?本文將爲你們細細講解。程序員

  Spring Boot 中的 Tomcat 容器

 

Spring Boot 能夠說是目前最火的 Java Web 框架了。它將開發者從繁重的 XML 解救了出來,讓開發者在幾分鐘內就能夠建立一個完整的 Web 服務,極大的提升了開發者的工做效率。Web 容器技術是 Web 項目必不可少的組成部分,由於任 Web 項目都要藉助容器技術來運行起來。在 Spring Boot 框架中,咱們使用最多的是 Tomcat,這是 Spring Boot 默認的容器技術,並且是內嵌式的 Tomcat。安全

 

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

 

Spring Boot 設置 Undertow

 

對於 Tomcat 技術,Java 程序員應該都很是熟悉,它是 Web 應用最經常使用的容器技術。咱們最先的開發的項目基本都是部署在 Tomcat 下運行,那除了 Tomcat 容器,Spring Boot 中咱們還可使用什麼容器技術呢?沒錯,就是題目中的 Undertow 容器技術。Srping Boot 已經徹底繼承了 Undertow 技術,咱們只須要引入 Undertow 的依賴便可,以下圖所示。服務器

 

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

 

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

 

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

 

那麼,咱們爲何須要替換 Tomcat 爲 Undertow 技術呢?框架

  Tomcat 與 Undertow 的優劣對比

 

Tomcat 是 Apache 基金下的一個輕量級的 Servlet 容器,支持 Servlet 和 JSP。Tomcat 具備 Web 服務器特有的功能,包括 Tomcat 管理和控制平臺、安全局管理和 Tomcat 閥等。Tomcat 自己包含了 HTTP 服務器,所以也能夠視做單獨的 Web 服務器。可是,Tomcat 和 Apache HTTP 服務器不是一個東西,Apache HTTP 服務器是用 C 語言實現的 HTTP Web 服務器。Tomcat 是徹底免費的,深受開發者的喜好。ide

 

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

 

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

 

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

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

 

  • QPS測試結果對比:測試

 

Tomcatblog

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

 

Undertow

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

 

  • 內存使用對比:

 

Tomcat watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk= Undertow watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

 

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

 

最後

 

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

https://mp.weixin.qq.com/s/7kTWnfko_3QKQCdcn-BegQ

相關文章
相關標籤/搜索