成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Spring Boot如何使用Undertow代替Tomcat

瀏覽:3日期:2023-08-15 16:59:41

1. Undertow 簡(jiǎn)介

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

2. Undertow特點(diǎn)

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

3. 替換默認(rèn)的Tomcat

Spring boot 默認(rèn)使用 Tomcat 內(nèi)嵌容器 。依賴(lài)于 spring-boot-starter-web 。我們只需要排除 Tomcat 依賴(lài)。引用Undertow 就可以了,maven 配置如下:

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-undertow</artifactId> </dependency>

4. 自定義配置Undertow

其實(shí)到第三步已經(jīng)可以愉快地玩耍了。你可以立即在 https://felord.cn 找到更多教程來(lái)學(xué)習(xí)Spring Boot。當(dāng)然你也可以再折騰一番,通過(guò)在Spring Boot 配置文件application.yml中配置 ServerProperties 和ServerProperties.Undertow 的相關(guān)屬性。 總結(jié)了一下比較陌生的ServerProperties.Undertow 的屬性:

# 設(shè)置IO線程數(shù), 它主要執(zhí)行非阻塞的任務(wù),它們會(huì)負(fù)責(zé)多個(gè)連接, 默認(rèn)設(shè)置每個(gè)CPU核心一個(gè)線程# 不要設(shè)置過(guò)大,如果過(guò)大,啟動(dòng)項(xiàng)目會(huì)報(bào)錯(cuò):打開(kāi)文件數(shù)過(guò)多server: undertow: io-threads: 16# 阻塞任務(wù)線程池, 當(dāng)執(zhí)行類(lèi)似servlet請(qǐng)求阻塞IO操作, undertow會(huì)從這個(gè)線程池中取得線程# 它的值設(shè)置取決于系統(tǒng)線程執(zhí)行任務(wù)的阻塞系數(shù),默認(rèn)值是IO線程數(shù)*8 worker-threads: 256# 以下的配置會(huì)影響buffer,這些buffer會(huì)用于服務(wù)器連接的IO操作,有點(diǎn)類(lèi)似netty的池化內(nèi)存管理# 每塊buffer的空間大小,越小的空間被利用越充分,不要設(shè)置太大,以免影響其他應(yīng)用,合適即可 buffer-size: 1024# 每個(gè)區(qū)分配的buffer數(shù)量 , 所以pool的大小是buffer-size * buffers-per-region buffers-per-region: 1024# 是否分配的直接內(nèi)存(NIO直接分配的堆外內(nèi)存) direct-buffers: true

5. 總結(jié)

今天我們演示了如何用性能優(yōu)良的 Undertow 來(lái)作為Spring Boot 的 Servlet Web 容器。其實(shí)在并發(fā)量不大的情況下 Undertow、和其它兩款 Servlet Web 容器 Jetty 、Tomcat 的差距并不是很大。 Undertow 的優(yōu)勢(shì)是高并發(fā)下的吞吐量。你可以根據(jù)自己的實(shí)際需要來(lái)選擇。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Spring
相關(guān)文章: