专栏首页java思维导图为什么很多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 是完全免费的,深受开发者的喜爱。(2020年最新的常问企业面试题大全以及答案)

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

(完)

本文分享自微信公众号 - java思维导图(java-mindmap)

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

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 从零讲JAVA ,给你一条清晰地学习道路!该学什么就学什么!!

    主要学习: 1.向量,链表,栈,队列和堆,词典。熟悉 2.树,二叉搜索树。熟悉 3.图,有向图,无向图,基本概念 4.二叉搜索A,B,C类熟练,9大排序熟悉。 ...

    java思维导图
  • 《Spring设计思想》AOP设计思想与原理

    Spring 提供了AOP(Aspect Oriented Programming) 的支持, 那么,什么是AOP呢?本文将通过一个另外一个角度来诠释AOP的概...

    java思维导图
  • 今天我们结合代码详细聊聊BIO,NIO和AIO

    很多人说BIO不好,会“block”,但到底什么是IO的Block呢?考虑下面两种情况:

    java思维导图
  • 为什么很多 SpringBoot 开发者放弃了 Tomcat,选择了 Undertow?

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

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

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

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

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

    程序员小强
  • 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。

    芋道源码

扫码关注云+社区

领取腾讯云代金券