SpringBoot之Undertow

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

前言

 

在SpringBoot框架中,我们使用最多的是Tomcat,这是SpringBoot默认的容器技术,而且是内嵌式的Tomcat。

 

同时,SpringBoot也支持Undertow容器,我们可以很方便的用Undertow替换Tomcat,而Undertow的性能和内存使用方面都优于Tomcat,那我们如何使用Undertow技术呢?本文将为大家细细讲解。

 

SpringBoot中的Tomcat容器

 

SpringBoot可以说是目前最火的Java Web框架了。它将开发者从繁重的xml解救了出来,让开发者在几分钟内就可以创建一个完整的Web服务,极大的提高了开发者的工作效率。

 

Web容器技术是Web项目必不可少的组成部分,因为任Web项目都要借助容器技术来运行起来。在SpringBoot框架中,我们使用最多的是Tomcat,这是SpringBoot默认的容器技术,而且是内嵌式的Tomcat。

 

 

 

SpringBoot设置Undertow

 

对于Tomcat技术,Java程序员应该都非常熟悉,它是Web应用最常用的容器技术。

 

我们最早的开发的项目基本都是部署在Tomcat下运行,那除了Tomcat容器,SpringBoot中我们还可以使用什么容器技术呢?没错,就是题目中的Undertow容器技术。

 

SrpingBoot已经完全继承了Undertow技术,我们只需要引入Undertow的依赖即可,如下图所示。

 

 

配置好以后,我们启动应用程序,发现容器已经替换为Undertow。

 

那我们为什么需要替换Tomcat为Undertow技术呢?

 

Tomcat与Undertow的优劣对比

 

Tomcat是Apache基金下的一个轻量级的Servlet容器,支持Servlet和JSP。Tomcat具有Web服务器特有的功能,包括 Tomcat管理和控制平台、安全局管理和Tomcat阀等。

 

Tomcat本身包含了HTTP服务器,因此也可以视作单独的Web服务器。但是,Tomcat和ApacheHTTP服务器不是一个东西,ApacheHTTP服务器是用C语言实现的HTTP Web服务器。Tomcat是完全免费的,深受开发者的喜爱。

 

 

Undertow是Red Hat公司的开源产品, 它完全采用Java语言开发,是一款灵活的高性能Web服务器,支持阻塞IO和非阻塞IO。

 

由于Undertow采用Java语言开发,可以直接嵌入到Java项目中使用。同时, Undertow完全支持Servlet和Web Socket,在高并发情况下表现非常出色。

 

 

我们在相同机器配置下压测Tomcat和Undertow,得到的测试结果如下所示:

 

  • QPS测试结果对比:

 

Tomcat

 

 

Undertow

 

 

  • 内存使用对比:

 

Tomcat

 

 

Undertow

 

 

通过测试发现,在高并发系统中,Tomcat相对来说比较弱。在相同的机器配置下,模拟相等的请求数,Undertow在性能和内存使用方面都是最优的。

 

并且Undertow新版本默认使用持久连接,这将会进一步提高它的并发吞吐能力。所以,如果是高并发的业务系统,Undertow是最佳选择。

 

最后

 

SpingBoot中我们既可以使用Tomcat作为Http服务,也可以用Undertow来代替。Undertow在高并发业务场景中,性能优于Tomcat。所以,如果我们的系统是高并发请求,不妨使用一下Undertow,你会发现你的系统性能会得到很大的提升。

Spring(21) 在 Spring Boot 中使用 Undertow 作为嵌入式服务器 阅读详情

相关推荐

Spring Boot 移除 Undertow:技术背景、迁移方案与避坑指南(附源码级解析)

通过源码级配置启用 Tomcat 的 NIO2 协议(异步 IO),进一步提升吞吐量:@Bean@Override// 禁用Session持久化,减少IO开销// 启用NIO2协议(异步IO),替代默认的BIO// 线程池参数优化// 禁用SSLv3/TLSv1,提升安全性// 开启TCP_NODELAY,减少延迟});Spring Boot 移除 Undertow 并非否定其技术价值,而是基于 “生态兼容性、维护成本、企业级稳定性” 的综合决策。

srlsong的博客 1084

SpringBoot中使用undertow

undertow依赖参数配置多端口监听 首先说一下undertow是个啥? undertow是一个采用Java开发的灵活的高性能web服务器。其提供包括阻塞和基于NIO的非阻塞机制。 它是红帽公司的开源产品,是一个完全为嵌入式设计的web服务器。 优点: 轻量:undertow只有几百KB,在嵌入式模式下运行,占用的堆内存也只有4MB左右 servlet兼容:完美兼容servlet3.1 Web...

meiyouyaCSDN的博客 9345

SpringBoot】配置 Undertow 服务器

本文对比分析了Jetty和Undertow服务器的性能、功能特性及优缺点。文章还提供了Spring Boot项目中从Tomcat切换至Undertow的配置方法以及Undertow相关的一些配置说明。

死牛胖子的技术随笔 4394

spring boot配置Undertow服务器

spring boot配置Undertow服务器

m0_72167535的博客 2108

SpringBootUndertow和Tomcat对比

前言 在 SpringBoot 框架中,使用最多的是 Tomcat,这是 SpringBoot 默认的容器技术,而且是内嵌式的 Tomcat。 同时,SpringBoot 也支持 Undertow 容器,我们可以很方便的用 Undertow 替换 Tomcat,而 Undertow 的性能和内存使用方面都优于 Tomcat,那我们如何使用 Undertow 技术呢?本文将为大家细细讲解。 一、SpringBoot 中的 Tomcat 容器 SpringBoot 可以说是目前最火的 Java Web 框架了。

m0_49068745的博客 1万+

SpringBoot2使用Undertow来提高应用性能(spring-boot-starter-undertow

Undertow Undertow是一个Java开发的灵活的高性能Web服务器,提供包括阻塞和基于NIO的非阻塞机制。Undertow是红帽公司的开源产品,是Wildfly默认的Web服务器。 SpringBoot2中可以将Web服务器切换到Undertow来提高应用性能。 Untertow 的特点 Servlet4.0 支持:它提供了对 Servlet4.0 的支持。 WebSocket 支持...

★【World Of Moshow 郑锴】★ 4万+

springboot 加载undertow容器过程

Springboot UNDERTOW容器加载过程 SpringApplication 刷新content 从springboot 启动开始 SpringApplication.run 创建ApplicatonContext 调用AnnotationConfigServletWebServerApplicationContext 的refreshC...

pdwljhlg的专栏 1856

Springboot配置undertow容器

前言 学习开源项目Halo的时候,看到了undertow不知道这是什么玩意儿,自然要来查一查资料,然后就发现了,它就跟tomcat一样,也是一个web服务器。我就再查查发现,目前的web服务器还真不少,除了这两个,还有Jboss、Jetty等等很多。不过目前SpringBoot只支持三种,tomcat、Jetty、undertow。而且看了好几篇博客,作者都说undertow比其他两个强,怪不得...

SiuMu_的博客 2932

springboot中使用undertow容器

摘要: Undertow是一款轻量级、高性能的Java Web服务器,基于非阻塞I/O模型,支持HTTP/2、WebSocket、Servlet 4.0等特性,性能优于Tomcat。在Spring Boot中替换默认Tomcat需排除spring-boot-starter-tomcat并引入spring-boot-starter-undertow依赖,支持灵活配置线程数、缓冲区等参数。性能测试显示,Undertow在吞吐量、CPU/内存占用及线程数方面均优于Tomcat和Jetty,尤其适合高并发场景。

赶路人儿 1000

Springboot使用Undertow

Springboot使用Undertow Undertow 是红帽公司开发的一款基于 NIO 的高性能 Web 嵌入式服务器 Undertow的特点: 轻量级:它是一个 Web 服务器,但不像传统的 Web 服务器有容器概念,它由两个核心 Jar 包组成,加载一个 Web 应用可以小于 10MB 内存 Servlet3.1 支持:它提供了对 Servlet3.1 的支持 WebSocket 支...

weixin_31323635的博客 1923

SpringBoot 内嵌容器Undertow替换Tomcat

前言 在SpringBoot框架中,我们使用最多的是Tomcat,这是SpringBoot默认的容器技术,而且是内嵌式的Tomcat。同时,SpringBoot也支持Undertow容器,我们可以很方便的用Undertow替换Tomcat,而Undertow的性能和内存使用方面都优于Tomcat,那我们如何使用Undertow技术呢?本文将为大家细细讲解。 SpringBoot中的Tomcat...

兴浩的博客 2494

SpringBoot切换 Servlet 容器为Undertow

在或# 服务器端口# Undertow 特定配置server:port: 8080undertow:threads:io: 16通过以上步骤,你可以轻松将 Spring Boot 的默认 Servlet 容器从 Tomcat 切换到 UndertowUndertow 特别适合需要高性能和低内存占用的应用场景。切换后,大部分 Spring Boot 的功能和配置方式保持不变,确保了良好的开发体验。

埃泽漫笔 876

springboot切换使用undertow容器

序 最近稍微有点空闲,回头再来优化下基础框架,也是一种重新学习。今天主要写写跟大家分享下springboot使用undertow,废话不多说。 一、maven引入jar <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!-- 默认是使用的tomcat --

zwrlj527的专栏 8690

SpringBoot中优化Undertow性能的方法总结

Springboot中进行Tomcat容器调优或者替换为性能更强的容器。可以进行Tomcat调优,但是Undertow容器在性能和内存上都优于Tomcat容器,因此Springboot直接选择Undertow容器并进行调优是更好的选择。

码到三十五 1万+

java undertow_Spring Boot 容器选择 Undertow 而不是 Tomcat

Spring Boot 内嵌容器Undertow参数设置配置项:# 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接, 默认设置每个CPU核心一个线程# 不要设置过大,如果过大,启动项目会报错:打开文件数过多server.undertow.io-threads=16# 阻塞任务线程池, 当执行类似servlet请求阻塞IO操作, undertow会从这个线程池中取得线程# 它的值设置取...

weixin_39637363的博客 593

Spring Boot使用Undertow服务

Spring Boot使用Undertow服务 Undertow Undertow 是红帽公司开发的一款基于 NIO 的高性能 Web 嵌入式服务器 Untertow 的特点: 轻量级:它是一个 Web 服务器,但不像传统的 Web 服务器有容器概念,它由两个核心 Jar 包组成,加载一个 Web 应用可以小于 10MB 内存 Servlet3.1 支持:它提供了对 Servlet3.1 的支持 WebSocket 支持:对 Web Socket 完全支持,用以满足 Web 应用巨大数量的客户端 嵌套性

雨露青瓷 6526

为什么很多SpringBoot开发者放弃了Tomcat而选择Undertow

SpringBoot框架中,我们使用最多的是Tomcat,这是SpringBoot默认的容器技术,而且是内嵌式的Tomcat。同时,SpringBoot也支持Undertow容器,我们可以很方便的用Undertow替换Tomcat,而Undertow的性能和内存使用方面都优于Tomcat,那我们如何使用Undertow技术呢?本文将为大家细细讲解。...

吴名氏的博客 15万+

Spring Boot内嵌容器支持Tomcat、Jetty、Undertow。为什么选择Undertow

Spring Boot内嵌容器支持Tomcat、Jetty、Undertow。为什么选择Undertow? 这里有一篇文章,时间 2017年1月26日发布的: Tomcat vs. Jetty vs. Undertow: Comparison of Spring Boot Embedded Servlet Containers 这篇文章详细测试了Spring Boot应用在三种容器下的性能和内存使用,内含完整的测试代码和测试流程。证明了Undertow在性能和内存使用上是最好的。 在Spring Boot中

程序员泥瓦匠 1680
上一篇: MongoDB粗介绍
下一篇: 黑客类型电影推荐
K'illCode
博客等级 码龄9年 763粉丝 838原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值