自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

大廠內(nèi)幕:SpringBoot項(xiàng)目為何棄用Tomcat,轉(zhuǎn)投Undertow懷抱?

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

對(duì)于Tomcat技術(shù),Java程序員應(yīng)該都非常熟悉,它是Web應(yīng)用最常用的容器技術(shù)。我們最早的開發(fā)的項(xiàng)目基本都是部署在Tomcat下運(yùn)行。

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

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

接下來先比較Tomcat與Undertow的優(yōu)劣,我們從以下幾個(gè)方面進(jìn)行概述。

看重點(diǎn)

Tomcat的優(yōu)勢:

成熟與廣泛使用:Tomcat是Apache基金會(huì)的開源項(xiàng)目,作為一個(gè)成熟的Web服務(wù)器和Servlet容器,它包含了HTTP服務(wù)器,因此也可以作為單獨(dú)的Web服務(wù)器使用。

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

Undertow的優(yōu)勢:

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

輕量級(jí):Undertow的代碼庫相對(duì)較小,這使得它在資源占用和啟動(dòng)時(shí)間方面具有優(yōu)勢,特別適合需要快速啟動(dòng)和低內(nèi)存占用的應(yīng)用場景。

更好的異步支持:Undertow提供了完善的異步支持,非常適合處理高并發(fā)的請(qǐng)求。

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

WebSocket支持:Undertow在WebSocket方面的實(shí)現(xiàn)更加輕量級(jí)和高效,這使得它在實(shí)時(shí)Web應(yīng)用場景中更具優(yōu)勢。

HTTP/2支持:Undertow支持HTTP/2協(xié)議,開發(fā)者可以利用HTTP/2的性能優(yōu)勢,如頭部壓縮、服務(wù)器推送等。

總結(jié):如果你的應(yīng)用場景需要高性能、快速啟動(dòng)和輕量級(jí)的服務(wù)器,Undertow可能是更好的選擇。而如果你需要一個(gè)成熟、功能豐富的Web服務(wù)器,且對(duì)資源占用和并發(fā)處理能力要求不是特別高,Tomcat則可能更適合你的需求。

大廠項(xiàng)目棄用Tomcat原因總結(jié):在高并發(fā)系統(tǒng)中,Tomcat相對(duì)來說比較弱。在相同的機(jī)器配置下,模擬相等的請(qǐng)求數(shù),Undertow在性能和內(nèi)存使用方面都是最優(yōu)的。并且Undertow新版本默認(rèn)使用持久連接,這將會(huì)進(jìn)一步提高它的并發(fā)吞吐能力。所以,如果是高并發(fā)的業(yè)務(wù)系統(tǒng),Undertow是最佳選擇。

一、什么是Undertow?

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

Undertow的主要特點(diǎn):

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

二、SpringBoot標(biāo)準(zhǔn)項(xiàng)目中如何使用Undertow

1.pom.xml中引入依賴

<!--  啟動(dòng)器依賴 -->
<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:
    # 設(shè)置IO線程數(shù), 它主要執(zhí)行非阻塞的任務(wù),它們會(huì)負(fù)責(zé)多個(gè)連接, 默認(rèn)設(shè)置每個(gè)CPU核心一個(gè)線程
    io-threads: 2
    # 阻塞任務(wù)線程池, 當(dāng)執(zhí)行類似servlet請(qǐng)求阻塞操作, undertow會(huì)從這個(gè)線程池中取得線程,它的值設(shè)置取決于系統(tǒng)的負(fù)載
    worker-threads: 1000
    # 以下的配置會(huì)影響buffer,這些buffer會(huì)用于服務(wù)器連接的IO操作,有點(diǎn)類似netty的池化內(nèi)存管理
    # 每塊buffer的空間大小,越小的空間被利用越充分
    buffer-size: 1024
    # 是否分配的直接內(nèi)存
    direct-buffers: true

3.運(yùn)行效果

圖片

責(zé)任編輯:武曉燕 來源: 不碼不瘋魔
相關(guān)推薦

2025-04-01 08:10:00

JavaScripteval()函數(shù)代碼

2011-01-13 09:17:44

2012-05-26 23:32:54

webOS

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

2020-12-03 18:29:30

KubernetesDocker容器

2024-10-17 14:14:29

2010-12-01 10:49:52

Google App

2024-09-30 10:11:04

2022-05-02 17:34:25

大數(shù)據(jù)數(shù)據(jù)分析

2009-04-10 19:01:11

2025-02-12 08:07:40

2025-04-27 03:00:00

Spring技術(shù)接口

2024-07-04 08:56:35

Vue3項(xiàng)目Pinia

2023-10-12 07:46:02

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)