专栏首页玩转JavaEE为什么很多SpringBoot开发者放弃了Tomcat,选择了Undertow?

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

作者:阿迈达

来源:toutiao.com/a6775476659416990212

前言

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

本文分享自微信公众号 - 牧码小子(a_javaboy),作者:阿迈达

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-02-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Spring Boot 跨域,JSONP 太 low,试试 CORS 怎么样?

    跨域这个问题,太过于常见了。传统的解决方案是 JSONP ,但是现在流行 RESTful 风格的应用,除了 GET 请求,PUT、POST、DELETE 齐上场...

    江南一点雨
  • 奇怪,Spring Security 登录成功后总是获取不到登录用户信息?

    一开始我觉得这可能是一个小概率 BUG,但是当问的人多了,我觉得这个问题对于新手来说还有一定的普遍性,有必要来写篇文章跟大家仔细聊一聊这个问题,防止小伙伴们掉坑...

    江南一点雨
  • 关于Elastic、关于Elasticsearch教程

    国庆期间,著名的数据搜索公司Elastic在纽交所上市,股票发行价为36美元,Elastic上市首日最高股价为74.2美元,最高涨幅达到106%。于是网上有人感...

    江南一点雨
  • 为什么很多 SpringBoot 开发者放弃了 Tomcat,选择了 Undertow?

    在SpringBoot框架中,我们使用最多的是Tomcat,这是SpringBoot默认的容器技术,而且是内嵌式的Tomcat。

    芋道源码
  • 为什么很多SpringBoot开发者放弃了Tomcat,选择了Undertow

    在SpringBoot框架中,我们使用最多的是Tomcat,这是SpringBoot默认的容器技术,而且是内嵌式的Tomcat。

    程序员小强
  • 为什么很多SpringBoot开发者放弃了Tomcat,选择了Undertow

    在 SpringBoot 框架中,我们使用最多的是 Tomcat,这是 SpringBoot 默认的容器技术,而且是内嵌式的 Tomcat。

    java思维导图
  • Apache Submarine

    Hadoop Submarine这个项目是很少被人知道的,因为想去了解他的这个群体本身就非常的小。但是它其实在尝试解决一个很关键的问题,就是如何更高效的让分布式...

    Fayson
  • 关于大数据的实战技术

    大数据范围越来越广,随着不同应用的爆发式增长,数据分析正在被更多行业企业所知晓并实践,比如互联网、金融、零售、医疗、以及制造业等。与此同时,对于统计分析系统...

    静一
  • ClearCase一些概念整理 原

    它是IBM Rational 出品的大型商用软件配置管理工具。其核心是版本控制。

    donghui
  • Spring Boot 2.3.0.M1 发布

    Spring Boot 2.3.0.M1 发布了,这是 2.3 的第一个里程碑,此版本关闭了 167 个问题与 pr。

    芋道源码

扫码关注云+社区

领取腾讯云代金券