`

为什么很多 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面试专题及答案.pdf

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

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

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

    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提供的健康检查和监控工具,可以帮助开发者了解应用...

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

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

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

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

    模仿知乎做的SpringBoot问答社交网站项目

    SpringBoot支持内嵌Tomcat、Jetty或Undertow等Web服务器,这意味着你可以直接运行主类启动应用,无需额外部署到外部服务器。 3. **自动配置(Auto Configuration)** SpringBoot根据类路径中的jar包和属性配置...

    基于SpringBoot技术的高职信息技术核心课教学改革研究

    通过SpringBoot,可以快速启动Tomcat、Jetty、Undertow等Web容器,同时支持开发Web应用、RESTful服务等。SpringBoot还提供了大量的Starter,让开发者能够快速实现日志记录、安全性、消息服务等常用功能。 在技术...

    springboot视频资源

    3. **内嵌式服务器**:Spring Boot支持使用内嵌式的Tomcat、Jetty或Undertow作为应用服务器,无需打包成WAR文件部署到容器中。 4. **Starters**:Spring Boot提供了大量的“starter”依赖项,这些依赖项可以帮助...

    尚硅谷SpringBoot核心技术篇视频教程,百度网盘下载链接,永久有效,无密码

    1. **了解Spring框架的基础知识**:虽然Spring Boot简化了很多配置,但了解Spring框架的基本原理仍然是非常重要的。 2. **学习Maven或Gradle**:Spring Boot推荐使用Maven或Gradle作为构建工具,因此掌握这两种工具...

    基于springboot的青年公寓服务平台源码数据库.doc

    - **嵌入式服务器**:SpringBoot 默认使用 Tomcat 作为内嵌容器,也可以很容易地切换到其他容器如 Jetty 或 Undertow。 ##### 2. SSM框架 SSM 框架是 Spring + SpringMVC + MyBatis 的组合,其中 Spring 用于处理...

    mySpringBoot001.rar

    而在SpringBoot中,很多配置可以通过Java配置类或者YAML/properties文件实现,而且很多默认配置已经帮我们处理好,极大地减少了手动编写配置的工作量。 再者,SpringBoot内置了Web服务器,如Tomcat或Undertow,这...

    springboot面试题.pdf

    - **自动化配置**:Spring Boot 自动配置了很多默认的设置,简化了配置文件,让开发者可以更加专注于业务逻辑。 - **依赖启动器**:通过引入 Spring Boot 提供的依赖管理来简化 Maven 和 Gradle 的依赖管理配置。 - ...

    springboot的概要介绍与分析

    - **社区支持**:Spring Boot 社区活跃,有很多开发者分享经验心得,包括博客文章、视频教程、开源项目等。 - **第三方资源**:除了官方资源外,还有很多第三方的学习资料和工具可供参考。 #### 五、结论 Spring ...

Global site tag (gtag.js) - Google Analytics