一、前言

在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,你会发现你的系统性能会得到很大的提升。

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

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

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:阿迈达 toutiao.com/a6775476659416 ...

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

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:阿迈达 toutiao.com/a6775476659416 ...

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

    作者:阿迈达 来源:toutiao.com/a6775476659416990212 前言 在SpringBoot框架中,我们使用最多的是Tomcat,这是SpringBoot默认的容器技术,而且是内 ...

  4. undertow 怎么创建线程_为什么很多SpringBoot开发者放弃了Tomcat,选择了Undertow

    点击上方"后端技术精选",选择"置顶公众号" 技术文章第一时间送达! 作者:阿迈达 toutiao.com/a6775476659416990212/ 前言 在 ...

  5. Undertow技术:为什么很多Spring Boot开发者放弃了Tomcat

    作者:阿迈达聊技术 https://www.toutiao.com/a6775476659416990212 前言 在 Spring Boot 框架中,我们使用最多的是 Tomcat,这是 Sprin ...

  6. spring boot +vue用什么记录登录状态_为什么很多Spring Boot开发者放弃了Tomcat

    前言 在 Spring Boot 框架中,我们使用最多的是 Tomcat,这是 Spring Boot 默认的容器技术,而且是内嵌式的 Tomcat.同时,Spring Boot 也支持 Undert ...

  7. 记一次定位解决SpringBoot中内嵌Tomcat的Bug问题

    你知道的越多,不知道的就越多,业余的像一棵小草! 你来,我们一起精进!你不来,我和你的竞争对手一起精进! 编辑:业余草 segmentfault.com/a/1190000038760707 推荐:h ...

  8. idea部署springboot项目到外部tomcat

    [README] 本文旨在记录idea部署springboot项目到外部tomcat的步骤: 第一次部署会踩很多坑儿,多查google,多重试: 第一次部署,不建议手动录入依赖,因为有可能遗漏:而且网 ...

  9. 学习-Springboot禁止内置Tomcat不安全的HTTP方法

    学习问题记录 用SpringBoot开发的项目在进行测试时,除GET.POST之外的HTTP请求方式都需要禁止,由于使用的内置Tomcat,试了几种方式,最后记录一下. 解决方式: 对独立启动的tom ...

最新文章

  1. 自动写作、RNN基本原理以及LSTM的基本原理
  2. 烽火服务器装系统,烽火 FitServer R2200 V5 机架式服务器
  3. mybatis plus 事务管理器_Mybatis中的事务
  4. mybatis 批量增加 Parameter '__frch_item_0' not found. Available parameters are [list]
  5. 自定义线程池-参数设计分析
  6. 韩寒 一个 新版本 android 收藏,韩寒的应用《ONE·一个》正式登陆Android平台,韩寒称一年运营成本约250万...
  7. 容器化分布式日志组件ExceptionLess的Angular前端UI
  8. qt连接mysql4.7数据库_QT4.7访问MySQL的驱动编译过程
  9. VINS简化版本 梳理
  10. ROS-SLAM仿真-hector
  11. Ognl表达式(根据Apache-Ognl文档直译)
  12. 四核网络机顶盒芯片局势分析(开放市场):rk3128将会成为四核主流
  13. PHP学习路线图(2021年最新版)
  14. windows11系统 “任务管理器已被管理员禁用”怎么解决
  15. 网络流(4)——带有容量的顶点和二部匹配
  16. python版问答聚合采集工具源代码+反编译完美还原
  17. 如何关闭WPS烦人广告
  18. 普通耳机的多源感知功能(智能耳机)
  19. Google账户设置
  20. 邮件服务器应对突发故障解决方案

热门文章

  1. MySQL核心点笔记
  2. OpenLayers中线拆分
  3. vue祖孙组件间传值
  4. 关于Python获取sql server数据库,中文显示乱码问题
  5. 进来瞧瞧!!2017信用共享平台排行 广东问果脱缰而出
  6. 决定炒外汇水平高低的四种能力
  7. 邮件营销七大禁忌介绍
  8. 漫漫Java学习路,第五天
  9. 小圣求职记A:腾讯篇
  10. 影响债市行情的主要因素_影响债券转让价格的主要因素有哪些