日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

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

來源: 責(zé)編: 時(shí)間:2024-07-15 17:13:53 599觀看
導(dǎo)讀對于Tomcat技術(shù),Java程序員應(yīng)該都非常熟悉,它是Web應(yīng)用最常用的容器技術(shù)。我們最早的開發(fā)的項(xiàng)目基本都是部署在Tomcat下運(yùn)行。在軟件開發(fā)的浪潮中,技術(shù)的更迭總是讓人目不暇接。在SpringBoot框架中,我們使用最多的是Tomca

對于Tomcat技術(shù),Java程序員應(yīng)該都非常熟悉,它是Web應(yīng)用最常用的容器技術(shù)。我們最早的開發(fā)的項(xiàng)目基本都是部署在Tomcat下運(yùn)行。7qn28資訊網(wǎng)——每日最新資訊28at.com

7qn28資訊網(wǎng)——每日最新資訊28at.com

在軟件開發(fā)的浪潮中,技術(shù)的更迭總是讓人目不暇接。在SpringBoot框架中,我們使用最多的是Tomcat,這是SpringBoot默認(rèn)的容器技術(shù),而且是內(nèi)嵌式的Tomcat。7qn28資訊網(wǎng)——每日最新資訊28at.com

7qn28資訊網(wǎng)——每日最新資訊28at.com

但是,許多大廠的SpringBoot項(xiàng)目紛紛棄用Tomcat,轉(zhuǎn)而擁抱Undertow。這背后究竟隱藏著什么秘密?今天,就讓我們一起揭開這層神秘的面紗。7qn28資訊網(wǎng)——每日最新資訊28at.com

7qn28資訊網(wǎng)——每日最新資訊28at.com

接下來先比較Tomcat與Undertow的優(yōu)劣,我們從以下幾個(gè)方面進(jìn)行概述。7qn28資訊網(wǎng)——每日最新資訊28at.com

7qn28資訊網(wǎng)——每日最新資訊28at.com

看重點(diǎn)

7qn28資訊網(wǎng)——每日最新資訊28at.com

7qn28資訊網(wǎng)——每日最新資訊28at.com

Tomcat的優(yōu)勢:

7qn28資訊網(wǎng)——每日最新資訊28at.com

成熟與廣泛使用:Tomcat是Apache基金會的開源項(xiàng)目,作為一個(gè)成熟的Web服務(wù)器和Servlet容器,它包含了HTTP服務(wù)器,因此也可以作為單獨(dú)的Web服務(wù)器使用。7qn28資訊網(wǎng)——每日最新資訊28at.com

7qn28資訊網(wǎng)——每日最新資訊28at.com

豐富的功能:Tomcat提供了管理和控制平臺、安全局管理和Tomcat閥等功能,這些都是Tomcat特有的功能。7qn28資訊網(wǎng)——每日最新資訊28at.com

7qn28資訊網(wǎng)——每日最新資訊28at.com

Undertow的優(yōu)勢:7qn28資訊網(wǎng)——每日最新資訊28at.com

7qn28資訊網(wǎng)——每日最新資訊28at.com

高性能:Undertow基于非阻塞I/O和異步處理,能夠提供更高的性能和更好的并發(fā)處理能力。它在高并發(fā)場景下尤其表現(xiàn)出色,能夠處理更多請求并提供更快的響應(yīng)速度。7qn28資訊網(wǎng)——每日最新資訊28at.com

7qn28資訊網(wǎng)——每日最新資訊28at.com

輕量級:Undertow的代碼庫相對較小,這使得它在資源占用和啟動時(shí)間方面具有優(yōu)勢,特別適合需要快速啟動和低內(nèi)存占用的應(yīng)用場景。7qn28資訊網(wǎng)——每日最新資訊28at.com

7qn28資訊網(wǎng)——每日最新資訊28at.com

更好的異步支持:Undertow提供了完善的異步支持,非常適合處理高并發(fā)的請求。7qn28資訊網(wǎng)——每日最新資訊28at.com

7qn28資訊網(wǎng)——每日最新資訊28at.com

易于配置:Undertow提供了簡單易用的配置選項(xiàng),使得開發(fā)者可以快速定制和部署應(yīng)用程序。Spring Boot中的自動配置功能使得切換到Undertow變得非常簡單。7qn28資訊網(wǎng)——每日最新資訊28at.com

7qn28資訊網(wǎng)——每日最新資訊28at.com

WebSocket支持:Undertow在WebSocket方面的實(shí)現(xiàn)更加輕量級和高效,這使得它在實(shí)時(shí)Web應(yīng)用場景中更具優(yōu)勢。7qn28資訊網(wǎng)——每日最新資訊28at.com

7qn28資訊網(wǎng)——每日最新資訊28at.com

HTTP/2支持:Undertow支持HTTP/2協(xié)議,開發(fā)者可以利用HTTP/2的性能優(yōu)勢,如頭部壓縮、服務(wù)器推送等。7qn28資訊網(wǎng)——每日最新資訊28at.com

7qn28資訊網(wǎng)——每日最新資訊28at.com

總結(jié):如果你的應(yīng)用場景需要高性能、快速啟動和輕量級的服務(wù)器,Undertow可能是更好的選擇。而如果你需要一個(gè)成熟、功能豐富的Web服務(wù)器,且對資源占用和并發(fā)處理能力要求不是特別高,Tomcat則可能更適合你的需求。7qn28資訊網(wǎng)——每日最新資訊28at.com

7qn28資訊網(wǎng)——每日最新資訊28at.com

7qn28資訊網(wǎng)——每日最新資訊28at.com

7qn28資訊網(wǎng)——每日最新資訊28at.com

7qn28資訊網(wǎng)——每日最新資訊28at.com

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

一、什么是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 和低級非堵塞的處理器。7qn28資訊網(wǎng)——每日最新資訊28at.com

7qn28資訊網(wǎng)——每日最新資訊28at.com

Undertow的主要特點(diǎn):7qn28資訊網(wǎng)——每日最新資訊28at.com

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

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

1.pom.xml中引入依賴7qn28資訊網(wǎng)——每日最新資訊28at.com

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

3.運(yùn)行效果7qn28資訊網(wǎng)——每日最新資訊28at.com

圖片7qn28資訊網(wǎng)——每日最新資訊28at.com

7qn28資訊網(wǎng)——每日最新資訊28at.com

7qn28資訊網(wǎng)——每日最新資訊28at.com

7qn28資訊網(wǎng)——每日最新資訊28at.com

7qn28資訊網(wǎng)——每日最新資訊28at.com

7qn28資訊網(wǎng)——每日最新資訊28at.com

7qn28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-100983-0.html大廠內(nèi)幕:SpringBoot項(xiàng)目為何棄用Tomcat,轉(zhuǎn)投Undertow懷抱?

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 13個(gè) JavaScript 面試難題及代碼實(shí)現(xiàn)

下一篇: OpenResty實(shí)戰(zhàn)系列 | 執(zhí)行流程與階段詳解

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 轎車從天而降電動車主被撞身亡 超速搶道所致:現(xiàn)場視頻讓網(wǎng)友吵翻

    近日,上海青浦區(qū)法院判決轎車從天而降電動車主被撞身亡案,轎車車主被判有期徒刑一年。案件顯示當(dāng)時(shí)男子駕駛轎車在上海某路段行駛,前車忽然轉(zhuǎn)彎提速超車,
  • Rust中的高吞吐量流處理

    作者 | Noz編譯 | 王瑞平本篇文章主要介紹了Rust中流處理的概念、方法和優(yōu)化。作者不僅介紹了流處理的基本概念以及Rust中常用的流處理庫,還使用這些庫實(shí)現(xiàn)了一個(gè)流處理程序
  • Golang 中的 io 包詳解:組合接口

    io.ReadWriter// ReadWriter is the interface that groups the basic Read and Write methods.type ReadWriter interface { Reader Writer}是對Reader和Writer接口的組合,
  • 一年經(jīng)驗(yàn)在二線城市面試后端的經(jīng)驗(yàn)分享

    忠告這篇文章只適合2年內(nèi)工作經(jīng)驗(yàn)、甚至沒有工作經(jīng)驗(yàn)的朋友閱讀。如果你是2年以上工作經(jīng)驗(yàn),請果斷劃走,對你沒啥幫助~主人公這篇文章內(nèi)容來自 「升職加薪」星球星友 的投稿,坐
  • Python異步IO編程的進(jìn)程/線程通信實(shí)現(xiàn)

    這篇文章再講3種方式,同時(shí)講4中進(jìn)程間通信的方式一、 Python 中線程間通信的實(shí)現(xiàn)方式共享變量共享變量是多個(gè)線程可以共同訪問的變量。在Python中,可以使用threading模塊中的L
  • 2天漲粉255萬,又一賽道在抖音爆火

    來源:運(yùn)營研究社作者 | 張知白編輯 | 楊佩汶設(shè)計(jì) | 晏談夢潔這個(gè)暑期,旅游賽道徹底火了:有的「地方」火了&mdash;&mdash;貴州村超旅游收入 1 個(gè)月超過 12 億;有的「博主」火了&m
  • iQOO Neo8 Pro搶先上架:首發(fā)天璣9200+ 安卓性能之王

    經(jīng)過了一段時(shí)間的密集爆料,昨日iQOO官方如期對外宣布:將于5月23日推出全新的iQOO Neo8系列新品,官方稱這是一款擁有旗艦級性能調(diào)校的作品。隨著發(fā)布時(shí)
  • 2022爆款:ROG魔霸6 冰川散熱系統(tǒng)持續(xù)護(hù)航

    喜逢開學(xué)季,各大商家開始推出自己的新產(chǎn)品,進(jìn)行打折促銷活動。對于忠實(shí)的端游愛好者來說,能夠擁有一款夢寐以求的筆記本電腦是一件十分開心的事。但是現(xiàn)在的
  • 北京:科技教育體驗(yàn)基地開始登記

      北京“科技館之城”科技教育體驗(yàn)基地登記和認(rèn)證工作日前啟動。首批北京科技教育體驗(yàn)基地?cái)M于2023年全國科普日期間掛牌,后續(xù)還將開展常態(tài)化登記。  北京科技教育體驗(yàn)基
Top 主站蜘蛛池模板: 临清市| 合江县| 法库县| 罗定市| 昌宁县| 重庆市| 襄樊市| 长治县| 志丹县| 汨罗市| 桃园县| 河源市| 宝坻区| 葫芦岛市| 江北区| 富民县| 平湖市| 淮阳县| 长白| 巴里| 同心县| 台中市| 龙胜| 天柱县| 阿坝县| 光山县| 三门峡市| 永济市| 阿瓦提县| 荔浦县| 湖口县| 张北县| 普格县| 闻喜县| 米脂县| 涿州市| 寿光市| 尖扎县| 辉南县| 桑植县| 乐业县|