Spring Boot如何使用Undertow代替Tomcat
1. Undertow 簡介
Undertow 是一個采用 Java 開發的靈活的高性能 Web 服務器,提供包括阻塞和基于 NIO 的非堵塞機制。Undertow 是紅帽公司的開源產品,是 Wildfly 默認的 Web 服務器。Undertow 提供一個基礎的架構用來構建 Web 服務器,這是一個完全為嵌入式設計的項目,提供易用的構建器 API,完全向下兼容 Java EE Servlet 3.1 和低級非堵塞的處理器。
2. Undertow特點
高性能 在多款同類產品的壓測中,在高并發情況下表現出色。 Servlet4.0 支持 它提供了對 Servlet4.0 的支持。 Web Socket 完全支持,包括JSR-356,用以滿足 Web 應用巨大數量的客戶端。 內嵌式 它不需要容器,只需通過 API 即可快速搭建 Web 服務器。 靈活性 交由鏈式Handler配置和處理請求,可以最小化按需加載模塊,無須加載多余功能。 輕量級 它是一個 內嵌Web 服務器, 由兩個核心 Jar 包組成3. 替換默認的Tomcat
Spring boot 默認使用 Tomcat 內嵌容器 。依賴于 spring-boot-starter-web 。我們只需要排除 Tomcat 依賴。引用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
其實到第三步已經可以愉快地玩耍了。你可以立即在 https://felord.cn 找到更多教程來學習Spring Boot。當然你也可以再折騰一番,通過在Spring Boot 配置文件application.yml中配置 ServerProperties 和ServerProperties.Undertow 的相關屬性。 總結了一下比較陌生的ServerProperties.Undertow 的屬性:
# 設置IO線程數, 它主要執行非阻塞的任務,它們會負責多個連接, 默認設置每個CPU核心一個線程# 不要設置過大,如果過大,啟動項目會報錯:打開文件數過多server: undertow: io-threads: 16# 阻塞任務線程池, 當執行類似servlet請求阻塞IO操作, undertow會從這個線程池中取得線程# 它的值設置取決于系統線程執行任務的阻塞系數,默認值是IO線程數*8 worker-threads: 256# 以下的配置會影響buffer,這些buffer會用于服務器連接的IO操作,有點類似netty的池化內存管理# 每塊buffer的空間大小,越小的空間被利用越充分,不要設置太大,以免影響其他應用,合適即可 buffer-size: 1024# 每個區分配的buffer數量 , 所以pool的大小是buffer-size * buffers-per-region buffers-per-region: 1024# 是否分配的直接內存(NIO直接分配的堆外內存) direct-buffers: true
5. 總結
今天我們演示了如何用性能優良的 Undertow 來作為Spring Boot 的 Servlet Web 容器。其實在并發量不大的情況下 Undertow、和其它兩款 Servlet Web 容器 Jetty 、Tomcat 的差距并不是很大。 Undertow 的優勢是高并發下的吞吐量。你可以根據自己的實際需要來選擇。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。
相關文章:
1. React+umi+typeScript創建項目的過程2. ASP中常用的22個FSO文件操作函數整理3. ASP.NET Core 5.0中的Host.CreateDefaultBuilder執行過程解析4. SharePoint Server 2019新特性介紹5. .Net core 的熱插拔機制的深入探索及卸載問題求救指南6. 解決ASP中http狀態跳轉返回錯誤頁的問題7. 讀大數據量的XML文件的讀取問題8. ASP編碼必備的8條原則9. 無線標記語言(WML)基礎之WMLScript 基礎第1/2頁10. ASP調用WebService轉化成JSON數據,附json.min.asp
