不用 Tomcat?SpringBoot 项目用啥代替?

ops/2025/3/15 10:46:19/

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

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

1SpringBoot中的Tomcat容器

SpringBoot可以说是目前最火的Java Web框架了。它将开发者从繁重的xml解救了出来,让开发者在几分钟内就可以创建一个完整的Web服务,极大的提高了开发者的工作效率。Web容器技术是Web项目必不可少的组成部分,因为任Web项目都要借助容器技术来运行起来。

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

2SpringBoot设置Undertow

对于Tomcat技术,Java程序员应该都非常熟悉,它是Web应用最常用的容器技术。我们最早的开发的项目基本都是部署在Tomcat下运行,那除了Tomcat容器,SpringBoot中我们还可以使用什么容器技术呢?

没错,就是题目中的Undertow容器技术。

  • 什么是Undertow?

    Undertow 是一个采用 Java 开发的灵活的高性能 Web 服务器,提供包括阻塞和基于 NIO 的非堵塞机制。Undertow 是红帽公司的开源产品,是 Wildfly 默认的 Web 服务器。Undertow 提供一个基础的架构用来构建 Web 服务器,这是一个完全为嵌入式设计的项目,提供易用的构建器 API,完全向下兼容 Java EE Servlet 3.1 和低级非堵塞的处理器。

  • Undertow的特点

    • 高性能 在多款同类产品的压测中,在高并发情况下表现出色。

    • Servlet4.0 支持 它提供了对 Servlet4.0 的支持。

    • Web Socket 完全支持,包括JSR-356,用以满足 Web 应用巨大数量的客户端。

    • 内嵌式 它不需要容器,只需通过 API 即可快速搭建 Web 服务器。

    • 灵活性 交由链式Handler配置和处理请求,可以最小化按需加载模块,无须加载多余功能。

    • 轻量级 它是一个 内嵌Web 服务器, 由两个核心 Jar 包组成

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

  • 移除Tomcat的依赖

    <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>
    
  • 添加Undertow依赖

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-undertow</artifactId>
    </dependency>
    

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

图片

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

3Tomcat与Undertow的优劣对比

Tomcat是Apache基金下的一个轻量级的Servlet容器,支持Servlet和JSP。Tomcat具有Web服务器特有的功能,包括 Tomcat管理和控制平台、安全局管理和Tomcat阀等。Tomcat本身包含了HTTP服务器,因此也可以视作单独的Web服务器。

但是,Tomcat和ApacheHTTP服务器不是一个东西,ApacheHTTP服务器是用C语言实现的HTTP Web服务器。Tomcat是完全免费的,深受开发者的喜爱。

图片

Undertow是一款灵活的高性能Web服务器,支持阻塞IO和非阻塞IO。由于Undertow采用Java语言开发,可以直接嵌入到Java项目中使用。同时, Undertow完全支持Servlet和Web Socket,在高并发情况下表现非常出色。

图片

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

QPS测试结果对比:
  • Tomcat

    图片

  • Undertow

    图片

内存使用对比:
  • Tomcat

    图片

  • Undertow

    图片

通过测试发现,在高并发系统中,Tomcat相对来说比较弱。在相同的机器配置下,模拟相等的请求数,Undertow在性能和内存使用方面都是最优的。并且Undertow新版本默认使用持久连接,这将会进一步提高它的并发吞吐能力。所以,如果是高并发的业务系统,Undertow是最佳选择。

4最后

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


http://www.ppmy.cn/ops/165919.html

相关文章

Git 克隆问题排查与解决方案

问题 1&#xff1a;克隆时无法连接 GitHub Cloning into OpenManus... fatal: unable to access https://github.com/mannaandpoem/OpenManus.git/: Failed to connect to github.com port 443 after 21074 ms: Could not connect to server 克隆项目时 错误表明无法连接到 g…

Zookeeper相关面试题

以下是150道Zookeeper相关面试题&#xff1a; Zookeeper基础概念 1. Zookeeper是什么&#xff1f; Zookeeper是一个开源的分布式协调服务&#xff0c;用于管理分布式系统中的配置、命名、分布式锁等功能。 2. Zookeeper的主要功能有哪些&#xff1f; • 配置管理 • 分布式…

【3D视觉学习笔记2】摄像机的标定、畸变的建模、2D/3D变换

本系列笔记是北邮鲁老师三维重建课程笔记&#xff0c;视频可在B站找到。 1. 摄像机的标定 摄像机标定的过程就是从1张或者多张图片中求解相机的内外参数的过程。 根据上一节的知识&#xff0c;针孔摄像机模型的世界坐标系到成像平面的映射关系为 p K [ R , T ] P p K[R,T]…

C#通过API接口返回流式响应内容---分块编码方式

1、背景 上一篇文章《C#通过API接口返回流式响应内容—SSE方式》阐述了通过SSE&#xff08;Server Send Event&#xff09;方式&#xff0c;由服务器端推送数据到浏览器。本篇是通过分块编码的方式实现 2、效果 3、具体代码 3.1 API端实现 [HttpGet] public async Task Chu…

基于YOLOv8深度学习的PCB缺陷检测识别系统【python源码+GUI界面+数据集+训练代码】

目录 一、界面功能展示 二、前言摘要 三、GUI界面演示 &#xff08;一&#xff09;用户加载自定义模型 &#xff08;二&#xff09;单张图像检测 &#xff08;三&#xff09;检测图像文件夹 &#xff08;四&#xff09;检测视频 &#xff08;五&#xff09;保存 四、模…

Docker 构建 nginx-redis-alpine 项目详解

Docker 构建 nginx-redis-alpine 项目详解 一、课程概述 嘿&#xff0c;朋友们&#xff01;今天咱们要深入探索一个超级实用的项目 ——nginx-redis-alpine&#xff01;这个项目可不简单&#xff0c;它包含了好多重要的知识点&#xff0c;像文件目录结构、核心文件的作用及配…

什么是海外仓WMS系统?跟ERP系统有什么区别?

近年来&#xff0c;随着数字化技术的升级&#xff0c;越来越多的海外仓引入了WMS系统来支持仓库管理。那么&#xff0c;什么是海外仓WMS系统&#xff1f;它和我们常说的ERP系统有什么区别&#xff1f;海外仓使用WMS系统又有哪些好处呢&#xff1f;本篇文章将为你解答清楚。 一…

《探秘人工智能与鸿蒙系统集成开发的硬件基石》

在科技飞速发展的当下&#xff0c;人工智能与鸿蒙系统的集成开发开辟了创新的前沿领域。这一融合不仅代表着技术的演进&#xff0c;更预示着智能设备生态的全新变革。而在这场技术盛宴的背后&#xff0c;坚实的硬件配置是确保开发顺利进行的关键&#xff0c;它就像一座大厦的基…