javascript
Undertow技术:为什么很多Spring Boot开发者放弃了Tomcat
作者:阿邁達聊技術
https://www.toutiao.com/a6775476659416990212
前言
在 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。
Spring Boot 設置 Undertow
對于 Tomcat 技術,Java 程序員應該都非常熟悉,它是 Web 應用最常用的容器技術。我們最早的開發的項目基本都是部署在 Tomcat 下運行,那除了 Tomcat 容器,Spring Boot 中我們還可以使用什么容器技術呢?沒錯,就是題目中的 Undertow 容器技術。Srping Boot 已經完全繼承了 Undertow 技術,我們只需要引入 Undertow 的依賴即可,如下圖所示。
配置好以后,我們啟動應用程序,發現容器已經替換為 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 是完全免費的,深受開發者的喜愛。
Undertow 是 Red Hat 公司的開源產品,它完全采用 Java 語言開發,是一款靈活的高性能 Web 服務器,支持阻塞 IO 和非阻塞 IO。由于 Undertow 采用 Java 語言開發,可以直接嵌入到 Java 項目中使用。同時,Undertow 完全支持 Servlet 和 Web Socket,在高并發情況下表現非常出色。
我們在相同機器配置下壓測 Tomcat 和 Undertow,得到的測試結果如下所示:
QPS測試結果對比:
Tomcat
Undertow
內存使用對比:
Tomcat
Undertow
通過測試發現,在高并發系統中 Tomcat 相對來說比較弱。在相同的機器配置下,模擬相等的請求數,Undertow 在性能和內存使用方面都是最優的。并且 Undertow 新版本默認使用持久連接,這將會進一步提高它的并發吞吐能力。所以,如果是高并發的業務系統,Undertow 是最佳選擇。
最后
Sping Boot 中我們既可以使用 Tomcat 作為 HTTP 服務,也可以用 Undertow 來代替。Undertow 在高并發業務場景中,性能優于 Tomcat。所以,如果我們的系統是高并發請求,不妨使用一下 Undertow,你會發現你的系統性能會得到很大的提升。
有道無術,術可成;有術無道,止于術
歡迎大家關注Java之道公眾號
好文章,我在看??
總結
以上是生活随笔為你收集整理的Undertow技术:为什么很多Spring Boot开发者放弃了Tomcat的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 19 条法则,教你写出火爆 GitHub
- 下一篇: NYOJ 228 士兵杀敌(五)