0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

为什么建议你替换掉SpringBoot框架中的Tomcat?

Android编程精选 来源:头条号阿迈达聊技术 2023-01-07 10:26 次阅读

前言

在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的依赖即可,如下图所示。

03f77764-8dcf-11ed-bfe3-dac502259ad0.jpg

040a4ad8-8dcf-11ed-bfe3-dac502259ad0.jpg

配置好以后,我们启动应用程序,发现容器已经替换为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,在高并发情况下表现非常出色。

0430d702-8dcf-11ed-bfe3-dac502259ad0.jpg

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

QPS测试结果对比:

044a8a62-8dcf-11ed-bfe3-dac502259ad0.jpg

Tomcat

0466d938-8dcf-11ed-bfe3-dac502259ad0.jpg

Undertow

内存使用对比:

0486010a-8dcf-11ed-bfe3-dac502259ad0.jpg

Tomcat

049bb720-8dcf-11ed-bfe3-dac502259ad0.jpg

Undertow

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

最后

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

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 容器
    +关注

    关注

    0

    文章

    495

    浏览量

    22061
  • spring
    +关注

    关注

    0

    文章

    340

    浏览量

    14341
  • Boot
    +关注

    关注

    0

    文章

    149

    浏览量

    35836
  • tomcat
    +关注

    关注

    0

    文章

    29

    浏览量

    4855
  • SpringBoot
    +关注

    关注

    0

    文章

    173

    浏览量

    177

原文标题:为什么建议你替换掉 SpringBoot 框架中的 Tomcat ?

文章出处:【微信号:AndroidPush,微信公众号:Android编程精选】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    springboot的轻量替代框架-Solon

    的不可能不知道Spring,今天给大家介绍一个号称springboot的轻量替代框架-Solon,这个框架还是国人开发的,真是一个单挑spring的男人。 认识Solon Solon是一个参考了Spring
    的头像 发表于 09-30 10:55 4061次阅读
    <b class='flag-5'>springboot</b>的轻量替代<b class='flag-5'>框架</b>-Solon

    TPA3131D2 EMI测试,用磁珠替换掉输出电感后传导余量不够,怎么解决?

    由于成本压力,用磁珠替换掉输出电感后传导余量不够。有没有其他好的办法?
    发表于 11-04 06:46

    请问第二次走线时怎么把上一次的替换掉

    我想把第二次走线的时候把上一次的替换掉怎么设置
    发表于 04-24 07:35

    SpringBoot的Druid介绍

    SpringBootDruid数据源配置
    发表于 05-07 09:21

    基于spring boot的linux服务器部署方法

    最近一直在研究springboot服务器,之前受到springmvc等框架的困扰,思路不对,一直想把springboot打包成war包然后部署到tomcat容器下,今天突然想到既然
    发表于 07-22 06:51

    一文解析SpringBoot2整合SSM框架

    SpringBoot2整合SSM框架详解
    发表于 06-09 16:43

    如何用__write函数替换掉原先的fputc函数呢

    如何用__write函数替换掉原先的fputc函数呢?
    发表于 12-01 06:55

    为什么要用STM32去替换掉Arduino呢

    为什么要用STM32去替换掉Arduino呢?STM32相比Arduino有哪些优势呢?
    发表于 12-15 06:21

    SpringBoot应用启动运行run方法

    什么时候创建嵌入式的Servlet容器工厂?什么时候获取嵌入式的Servlet容器并启动Tomcat;获取嵌入式的Servlet容器工厂:1)、SpringBoot应用启动运行run方法2
    发表于 12-20 06:16

    SpringBoot配置嵌入式Servlet

    注册Filter注册ListenerSpringBoot注册DispatcherServlet切换嵌入式Servlet容器SpringBoot默认使用Tomcat作为嵌入式的Servlet容器定制和修改Servlet容器相关配置可以通过全局配置文件或者自己编写WebSer
    发表于 12-20 06:19

    什么时候获取嵌入式的Servlet容器并启动Tomcat

    什么时候创建嵌入式的Servlet容器工厂?什么时候获取嵌入式的Servlet容器并启动Tomcat?获取嵌入式的Servlet容器工厂:1)、SpringBoot应用启动运行run方法;2)、执行
    发表于 12-20 06:11

    想把我自定义的内核文件替换掉开发板里的内核如何操作?

    按照文档方式裁剪好了内核文件image,但是文档的OTG方式是使用镜像文件t507_linux_okt507_uart0.img如果我仅想把我自定义的内核文件替换掉开发板里的内核,怎么操作呢Linux 4.9.170
    发表于 12-31 07:00

    Springboot整合netty框架实现终端、通讯板子(单片机)TCP/UDP通信案例

    如何springboot和netty案例的源代码一个springboot整合netty框架的开发小案例,实现服务端与单片机终端实时通信的通讯架构案例。物联网通信给板子下发指令案例附带源码及整合流程步骤
    发表于 12-29 18:55 20次下载
    <b class='flag-5'>Springboot</b>整合netty<b class='flag-5'>框架</b>实现终端、通讯板子(单片机)TCP/UDP通信案例

    什么是 SpringBoot

    本文从为什么要有 `SpringBoot`,以及 `SpringBoot` 到底方便在哪里开始入手,逐步分析了 `SpringBoot` 自动装配的原理,最后手写了一个简单的 `start` 组件,通过实战来体会了 `
    的头像 发表于 04-07 11:28 1312次阅读
    什么是 <b class='flag-5'>SpringBoot</b>?

    SpringBoot 连接ElasticSearch的使用方式

    在上篇 ElasticSearch 文章,我们详细的介绍了 ElasticSearch 的各种 api 使用。 实际的项目开发过程,我们通常基于某些主流框架平台进行技术开发,比如
    的头像 发表于 10-09 10:35 1112次阅读