`

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

 
阅读更多

前言

在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。

Undertow技术:为什么很多SpringBoot开发者放弃了Tomcat
 
 

SpringBoot设置Undertow

对于Tomcat技术,Java程序员应该都非常熟悉,它是Web应用最常用的容器技术。我们最早的开发的项目基本都是部署在Tomcat下运行,那除了Tomcat容器,SpringBoot中我们还可以使用什么容器技术呢?没错,就是题目中的Undertow容器技术。SrpingBoot已经完全继承了Undertow技术,我们只需要引入Undertow的依赖即可,如下图所示。

Undertow技术:为什么很多SpringBoot开发者放弃了Tomcat
 
 
Undertow技术:为什么很多SpringBoot开发者放弃了Tomcat
 
 

配置好以后,我们启动应用程序,发现容器已经替换为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技术:为什么很多SpringBoot开发者放弃了Tomcat
 
 

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

Undertow技术:为什么很多SpringBoot开发者放弃了Tomcat
 
 

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

  • QPS测试结果对比:

Tomcat

Undertow技术:为什么很多SpringBoot开发者放弃了Tomcat
 
 

Undertow

Undertow技术:为什么很多SpringBoot开发者放弃了Tomcat
 
 
  • 内存使用对比:

Tomcat

Undertow技术:为什么很多SpringBoot开发者放弃了Tomcat
 
 

Undertow

Undertow技术:为什么很多SpringBoot开发者放弃了Tomcat
 
 

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

最后

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

 

来源:阿迈达

 

toutiao.com/a6775476659416990212

分享到:
评论

相关推荐

    springboot环境

    3. **内嵌Web服务器**:SpringBoot支持内嵌Tomcat、Jetty或Undertow,这样开发者无需额外配置,可以直接运行JAR或WAR文件启动应用。 4. **命令行界面(CLI)**:SpringBoot提供了命令行工具,方便开发者快速启动、...

    springboot

    3. **内嵌式 Web 服务器**:SpringBoot 可以内嵌 Tomcat、Jetty 或 Undertow 等 Web 服务器,无需单独打包或部署。这使得开发和测试过程更为便捷,`spring-boot-starter-web` 模块中包含了这些内嵌服务器的配置。 4...

    SpringBoot参考指南

    2. **嵌入式Web服务器**:SpringBoot支持内嵌Tomcat、Jetty或Undertow等Web服务器,允许开发者无需额外部署,直接运行JAR包启动应用。 3. **自动配置(Auto Configuration)**:SpringBoot根据类路径中的jar包和...

    官网springboot项目

    3. **内嵌Web服务器(Embedded Web Servers)**:SpringBoot支持内嵌Tomcat、Jetty或Undertow等Web服务器,无需额外设置,可以直接运行SpringBoot应用。 4. **Spring Boot Starter Parent**:许多SpringBoot项目...

    SpringBoot基础.pdf

    1. 简化配置:通过引入约定优于配置的原则,SpringBoot可以利用项目默认设置(即“约定”)完成很多配置工作,减少了配置文件的编写。同时,它支持application.properties和application.yml两种格式的配置文件,便于...

    Springboot官方文档

    3. **内嵌式Web服务器**:SpringBoot支持内嵌的Tomcat、Jetty或Undertow服务器,允许应用直接运行为一个独立的JAR,无需外部服务器。 4. **Actuator**:提供了一组端点,用于监控和管理应用,包括健康检查、指标...

    廖雪峰springboot两小时入门课程的工程

    SpringBoot并非Spring的替代品,而是为了简化Spring应用的初始搭建以及开发过程,它默认配置了很多功能,使得我们能够更加专注于业务代码的编写。 【SpringBoot核心特性】 1. **自动配置**:SpringBoot根据项目...

    SpringBoot面试专题及答案.pdf

    SpringBoot具有很多优点,包括: 1. 简化配置:SpringBoot提供了一套自动配置系统,它会根据添加的jar依赖猜测配置。 2. 独立运行:SpringBoot应用可以直接打包为一个jar文件,简化部署和运行。 3. 内嵌Web容器:如...

    base_springboot简单实例_源码

    3. **起步依赖(Starter POMs)**:SpringBoot提供了很多起步依赖,比如`spring-boot-starter-web`、`spring-boot-starter-data-jpa`等,这些依赖包含了常用的功能,减少了开发者对依赖管理的困扰。 4. **Actuator*...

    springboot2学习文件

    3. **内嵌Web服务器**:SpringBoot支持内嵌的Tomcat、Jetty或Undertow,无需额外配置,开发者可以直接运行主类启动应用。 4. **Actuator**:Actuator是SpringBoot提供的健康检查和监控工具,可以帮助开发者了解应用...

    官网springboot.zip

    Spring Boot具有很多特性,例如自动配置、嵌入式服务器(如Tomcat, Jetty或Undertow)、无代码生成和无XML配置等,这些都极大地简化了Spring应用的开发和部署过程。 “官网springboot”这一描述,暗示了压缩包内容...

    基于JavaFX+SpringBoot+MP的SQLite数据库单词查询与背诵设计源码

    MyBatis Plus提供了很多便捷的特性,如CRUD接口、分页插件、性能分析插件等,能够帮助开发者减少对MyBatis配置的重复工作,提高开发效率。 SQLite是一个轻量级的关系型数据库,它不需要单独的服务器进程或系统,...

    OA办公系统 Springboot vue.js前后分离,Flowable工作流自定义表单

    Springboot内嵌了Tomcat、Jetty或Undertow等Servlet容器,使得开发者无需部署WAR文件即可运行Spring应用程序。 2. Vue.js:Vue.js是一个构建用户界面的前端JavaScript框架。它允许开发者通过简单的模板语法来声明式...

    微信小程序图书借阅app设计后端SSM可升级SpringBoot毕业源码案例设计.zip

    4. **起步依赖**:SpringBoot的依赖管理提供了很多“起步依赖”,如Spring Data JPA、Spring Web等,简化了项目的构建过程。 5. **运行时日志**:内置日志框架,支持多种日志实现,如Logback、Log4j2等。 6. **...

    农产品电商平台 JAVA毕业设计 源码+数据库+论文+启动教程(SpringBoot+Vue.JS).zip

    SpringBoot内置了Tomcat、Jetty或者Undertow作为Web服务器,并且对很多常用的第三方库进行了默认配置,大大减少了开发人员在项目搭建上的工作量。 接下来是Vue.JS,这是一种渐进式JavaScript框架,主要关注视图层。...

    【springboot9282】基于springboot+vue的机动车号牌管理系统.zip

    该压缩包文件名称为“【springboot9282】基于springboot+vue的机动车号牌管理系统.zip”,这表明它是一个完整的项目,结合了后端Java技术以及前端vue框架,构建了一个基于Spring Boot的应用程序。项目设计的目的是...

    java基于SpringBoot+vue 日常办公用品直售推荐系统源码 带毕业论文

    本项目不仅是计算机等相关专业的学生进行课程设计、期末大作业和毕业设计的理想选择,同时也为那些希望提高技术能力的开发者提供了一个很好的实践平台。通过该项目的学习和使用,学生和开发者不仅能够掌握SpringBoot...

    SpringBoot项目.zip

    Spring Boot还鼓励使用约定优于配置的原则,这意味着项目中有很多约定的目录结构和配置文件命名方式,遵循这些约定可以减少开发者的配置工作。 Spring Boot的版本管理也是其特性之一,通过Spring Initializr可以...

    基于Java的SpringBoot框架学习与实战设计源码

    此外,SpringBoot还包括了嵌入式服务器(如Tomcat、Jetty或Undertow)的支持,这意味着开发者可以构建一个独立的Web服务。 具体到本项目,它包含了154个文件,涵盖的文件类型非常广泛,涉及Java源代码、图像、XML...

    springboot项目基于BS模式的冷链物流系统.zip

    springboot通过内嵌Tomcat、Jetty或Undertow等Servlet容器,大大简化了基于spring的应用开发,尤其适合现代的微服务架构。另外,springboot还提供了大量的自动配置,简化了项目中各种组件的配置工作,从而让开发者将...

Global site tag (gtag.js) - Google Analytics