成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

大廠內幕:SpringBoot項目為何棄用Tomcat,轉投Undertow懷抱?

開發 前端
在軟件開發的浪潮中,技術的更迭總是讓人目不暇接。在SpringBoot框架中,我們使用最多的是Tomcat,這是SpringBoot默認的容器技術,而且是內嵌式的Tomcat。

對于Tomcat技術,Java程序員應該都非常熟悉,它是Web應用最常用的容器技術。我們最早的開發的項目基本都是部署在Tomcat下運行。

在軟件開發的浪潮中,技術的更迭總是讓人目不暇接。在SpringBoot框架中,我們使用最多的是Tomcat,這是SpringBoot默認的容器技術,而且是內嵌式的Tomcat。

但是,許多大廠的SpringBoot項目紛紛棄用Tomcat,轉而擁抱Undertow。這背后究竟隱藏著什么秘密?今天,就讓我們一起揭開這層神秘的面紗。

接下來先比較Tomcat與Undertow的優劣,我們從以下幾個方面進行概述。

看重點

Tomcat的優勢:

成熟與廣泛使用:Tomcat是Apache基金會的開源項目,作為一個成熟的Web服務器和Servlet容器,它包含了HTTP服務器,因此也可以作為單獨的Web服務器使用。

豐富的功能:Tomcat提供了管理和控制平臺、安全局管理和Tomcat閥等功能,這些都是Tomcat特有的功能。

Undertow的優勢:

高性能:Undertow基于非阻塞I/O和異步處理,能夠提供更高的性能和更好的并發處理能力。它在高并發場景下尤其表現出色,能夠處理更多請求并提供更快的響應速度。

輕量級:Undertow的代碼庫相對較小,這使得它在資源占用和啟動時間方面具有優勢,特別適合需要快速啟動和低內存占用的應用場景。

更好的異步支持:Undertow提供了完善的異步支持,非常適合處理高并發的請求。

易于配置:Undertow提供了簡單易用的配置選項,使得開發者可以快速定制和部署應用程序。Spring Boot中的自動配置功能使得切換到Undertow變得非常簡單。

WebSocket支持:Undertow在WebSocket方面的實現更加輕量級和高效,這使得它在實時Web應用場景中更具優勢。

HTTP/2支持:Undertow支持HTTP/2協議,開發者可以利用HTTP/2的性能優勢,如頭部壓縮、服務器推送等。

總結:如果你的應用場景需要高性能、快速啟動和輕量級的服務器,Undertow可能是更好的選擇。而如果你需要一個成熟、功能豐富的Web服務器,且對資源占用和并發處理能力要求不是特別高,Tomcat則可能更適合你的需求。

大廠項目棄用Tomcat原因總結:在高并發系統中,Tomcat相對來說比較弱。在相同的機器配置下,模擬相等的請求數,Undertow在性能和內存使用方面都是最優的。并且Undertow新版本默認使用持久連接,這將會進一步提高它的并發吞吐能力。所以,如果是高并發的業務系統,Undertow是最佳選擇。

一、什么是Undertow?

Undertow 是一個采用 Java 開發的靈活的高性能 Web 服務器,提供包括阻塞和基于 NIO 的非堵塞機制。Undertow 是紅帽公司的開源產品,是 Wildfly 默認的 Web 服務器。Undertow 提供一個基礎的架構用來構建 Web 服務器,這是一個完全為嵌入式設計的項目,提供易用的構建器 API,完全向下兼容 Java EE Servlet 3.1 和低級非堵塞的處理器。

Undertow的主要特點:

  • 高性能 在多款同類產品的壓測中,在高并發情況下表現出色。
  • Servlet4.0 支持 它提供了對 Servlet4.0 的支持。
  • Web Socket 完全支持,包括JSR-356,用以滿足 Web 應用巨大數量的客戶端。
  • 內嵌式 它不需要容器,只需通過 API 即可快速搭建 Web 服務器。
  • 靈活性 交由鏈式Handler配置和處理請求,可以最小化按需加載模塊,無須加載多余功能。
  • 輕量級 它是一個 內嵌Web 服務器, 由兩個核心 Jar 包組成

二、SpringBoot標準項目中如何使用Undertow

1.pom.xml中引入依賴

<!--  啟動器依賴 -->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
   <!-- 移除Tomcat的依賴 -->
   <exclusions>
       <exclusion>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-tomcat</artifactId>
       </exclusion>
   </exclusions>
</dependency>
<!--   采用Undertow依賴 -->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-undertow</artifactId>
</dependency>
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter</artifactId>
</dependency>

2.application.yml核心配置

server:
  undertow:
    # 設置IO線程數, 它主要執行非阻塞的任務,它們會負責多個連接, 默認設置每個CPU核心一個線程
    io-threads: 2
    # 阻塞任務線程池, 當執行類似servlet請求阻塞操作, undertow會從這個線程池中取得線程,它的值設置取決于系統的負載
    worker-threads: 1000
    # 以下的配置會影響buffer,這些buffer會用于服務器連接的IO操作,有點類似netty的池化內存管理
    # 每塊buffer的空間大小,越小的空間被利用越充分
    buffer-size: 1024
    # 是否分配的直接內存
    direct-buffers: true

3.運行效果

圖片

責任編輯:武曉燕 來源: 不碼不瘋魔
相關推薦

2025-04-01 08:10:00

JavaScripteval()函數代碼

2012-05-26 23:32:54

webOS

2011-01-13 09:17:44

2013-05-15 11:02:17

2013-03-14 10:47:58

2025-03-26 03:00:00

2020-08-24 12:15:51

TomcatUndertow容器

2022-06-14 11:01:48

SpringBootTomcatUndertow

2020-02-13 17:49:55

SpringBoot放棄選擇

2015-08-03 14:41:06

微軟IE

2022-05-02 17:34:25

大數據數據分析

2024-09-30 10:11:04

2010-12-01 10:49:52

Google App

2020-12-03 18:29:30

KubernetesDocker容器

2024-10-17 14:14:29

2009-04-10 19:01:11

2025-06-11 14:36:16

谷歌微軟AI

2011-09-09 09:42:38

英特爾MeeGo

2013-08-09 14:37:00

軟件軟件開發免費軟件

2025-04-27 03:00:00

Spring技術接口
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 888久久久 | 一级黄色片网站 | 久久久精品一区二区 | 91免费在线播放 | 日韩精品免费一区 | 91亚洲免费 | 国产精品99久 | 久久精品欧美一区二区三区麻豆 | 激情 一区 | 免费黄色的视频 | 成人在线一区二区 | 一区二区三区亚洲精品国 | 91精品国产91久久久久久最新 | 一区二区在线观看av | 怡红院免费的全部视频 | 麻豆久久久久久久久久 | 男人的天堂在线视频 | 国产三级 | 99视频在线免费观看 | 中文字幕亚洲欧美 | 日日操日日干 | 午夜在线电影网 | 色婷婷综合在线观看 | 国产精品国产成人国产三级 | 国产一区二区在线观看视频 | 麻豆av网| 国产美女在线观看 | 国产在视频一区二区三区吞精 | 亚洲欧美综合 | 日韩在线不卡视频 | 久久精品免费 | 天天草av| 国产一区二区在线观看视频 | 99国产精品久久久久久久 | 久久精品在线免费视频 | 欧美看片 | 国产精品日产欧美久久久久 | 波霸ol一区二区 | 欧美videosex性极品hd | 99这里只有精品视频 | 99免费精品 |