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

往期热门文章:

1、40 个 SpringBoot 常用注解:让生产力爆表!
2、3种常见的数据脱敏方案
3、BigDecimal使用不当,造成P0事故!
4、改造BeanUtils,优雅实现List数据拷贝
5、SpringBoot 启动时自动执行代码的几种方式,还有谁不会??

来源:阿迈达

toutiao.com/a6775476659416990212

  • 前言

  • SpringBoot中的Tomcat容器

  • SpringBoot设置Undertow

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

SpringBoot设置Undertow

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

没错,就是题目中的Undertow容器技术。SrpingBoot已经完全继承了Undertow技术,我们只需要引入Undertow的依赖即可,如下图所示。

c8a0a20865be47d4e96280b4c064af0f.png

83d3ed6eeff606bb72d5acd17db405b4.png

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

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

Tomcat与Undertow的优劣对比

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

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

097e53174a689d83cbaf70c287e12db7.png

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

b7c12a5417e2d8dbf58e0cd4631dac11.png

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

QPS测试结果对比:

Tomcat

7b56b41a36aea6770ebdc590078951de.png

Undertow

68d7659ca6e11de0663a8689ddbc15fe.png

内存使用对比:

Tomcat

a4dbf2662f3d8031c79e953e1033c998.png

Undertow

0c4ba009e3d60e5f15345bbf8b01889c.png

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

最后

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

 
 
 
 
最近热文阅读:

1、40 个 SpringBoot 常用注解:让生产力爆表!

2、3种常见的数据脱敏方案

3、BigDecimal使用不当,造成P0事故!

4、改造BeanUtils,优雅实现List数据拷贝

5、让人上瘾的新一代开发神器,彻底告别Controller、Service、Dao等方法

6、SpringBoot 启动时自动执行代码的几种方式,还有谁不会??

7、延时消息常见实现方案

8、劲爆!Java 通用泛型要来了。。

9、如何写出让同事吐血的代码?

10、遭弃用的 Docker Desktop 放大招!宣布支持 Linux

8eba839676ea3ab5c58ea87e7bb6c3c1.png

关注公众号,你想要的Java都在这里

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: SpringBoot最大的特点是简化了开发过程,让开发人员能够快速、方便、有效地构建和部署基于Spring框架的应用程序。它提供了一种可靠、灵活的方式来构建强大的RESTful Web服务和应用程序。SpringBoot还提供了大量的自定义选项,可以让开发人员根据自己的需求来调整应用程序的配置。 ### 回答2: Spring Boot是一个基于Spring框架,用于开发和部署独立、可独立运行的、生产级别的Java应用程序的框架。Spring Boot有以下几个特点: 1. 简化配置:Spring Boot采用约定优于配置的理念,开发者可以通过少量的配置快速搭建一个可运行的应用程序,减少了繁琐的配置过程。 2. 内嵌式容器:Spring Boot内置了Tomcat、Jetty等常用的Web容器,开发者不需要单独部署Web服务器,只需要打包为可执行的JAR文件即可运行。 3. 自动配置:Spring Boot根据项目的依赖自动进行配置,避免了繁琐的手动配置过程。开发者只需要在项目的配置文件中进行少量的配置即可。 4. 无需代码生成:Spring Boot不需要生成代码或者XML配置文件,通过注解和约定,可以快速开发出可运行的应用程序。 5. 微服务支持:Spring Boot提供了对微服务的良好支持,例如通过Spring Cloud可以快速搭建分布式系统、服务注册与发现、断路器等。 6. 监控与管理:Spring Boot提供了丰富的监控和管理功能,通过Actuator可以查看应用程序的运行状态、健康情况、线程等信息。 7. 良好的开发体验:Spring Boot提供了强大的开发工具和开发支持,例如Spring Initializr可以快速生成项目骨架,Spring DevTools可以提升开发效率。 总之,Spring Boot是用于开发生产级别Java应用程序的框架,它的特点是简化配置、内嵌式容器、自动配置、无需代码生成、微服务支持、监控与管理以及良好的开发体验。这些特点使得Spring Boot成为开发者快速构建可独立运行、生产级别的应用程序的理想选择。 ### 回答3: Spring Boot是一个用于构建生产级别的独立Java应用程序的框架。它拥有以下几个特点。 1. 简化配置:Spring Boot采用了约定大于配置的原则,大部分的配置都可以通过默认值自动推断出来,从而简化了代码中的配置量。通过使用注解和属性自动装配,开发人员可以更快速、更轻松地启动和配置应用程序。 2. 集成度高:Spring Boot提供了许多现成的功能模块,如框架整合、数据库访问、安全性、监控等。这些模块可以通过简单的配置来集成到应用程序中,使得开发人员不需要手动配置和集成这些模块,而是可以直接使用它们提供的功能。 3. 内嵌式服务器:Spring Boot集成了多个内嵌式的HTTP服务器,例如Tomcat、Jetty和Undertow,开发人员可以选择其中一种作为应用程序的默认服务器。这样一来,开发人员可以将应用程序打包成可执行的JAR文件,通过简单的命令就可以启动应用程序,而无需额外安装和配置外部服务器。 4. 微服务支持:Spring Boot提供了对开发微服务架构的良好支持。通过使用Spring Cloud框架,开发人员可以很容易地构建和部署分布式系统。Spring Boot可以与Eureka、Ribbon、Feign、Zuul等框架无缝集成,提供了服务注册与发现、负载均衡、远程调用等功能。 总的来说,Spring Boot具有简化配置、高集成度、内嵌式服务器和微服务支持等特点,使得开发人员能够更快速、更便捷地开发和部署Java应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值