大公司为什么禁止SpringBoot项目使用Tomcat?

yizhihongxing

前言

在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。推荐:最全面的Java面试网站

SpringBoot设置Undertow

对于Tomcat技术,Java程序员应该都非常熟悉,它是Web应用最常用的容器技术。我们最早的开发的项目基本都是部署在Tomcat下运行,那除了Tomcat容器,SpringBoot中我们还可以使用什么容器技术呢?没错,就是题目中的Undertow容器技术。SrpingBoot已经完全继承了Undertow技术,我们只需要引入Undertow的依赖即可,如下图所示。

大公司为什么禁止SpringBoot项目使用Tomcat?

大公司为什么禁止SpringBoot项目使用Tomcat?

配置好以后,我们启动应用程序,发现容器已经替换为Undertow。那我们为什么需要替换Tomcat为Undertow技术呢?

本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~

Github地址

如果访问不了Github,可以访问gitee地址。

gitee地址

Tomcat与Undertow的优劣对比

Tomcat是Apache基金下的一个轻量级的Servlet容器,支持Servlet和JSP。Tomcat具有Web服务器特有的功能,包括 Tomcat管理和控制平台、安全局管理和Tomcat阀等。Tomcat本身包含了HTTP服务器,因此也可以视作单独的Web服务器。但是,Tomcat和ApacheHTTP服务器不是一个东西,ApacheHTTP服务器是用C语言实现的HTTP Web服务器。Tomcat是完全免费的,深受开发者的喜爱。

大公司为什么禁止SpringBoot项目使用Tomcat?

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

大公司为什么禁止SpringBoot项目使用Tomcat?

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

大公司为什么禁止SpringBoot项目使用Tomcat?

Undertow

大公司为什么禁止SpringBoot项目使用Tomcat?

内存使用对比:

Tomcat

大公司为什么禁止SpringBoot项目使用Tomcat?

Undertow

大公司为什么禁止SpringBoot项目使用Tomcat?

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

最后

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

好东西应该要分享出来!我把自己学习计算机多年以来的书籍分享出来了,汇总到一个计算机经典编程书籍仓库了,一共300多本,包括C语言、C++、Java、Python、前端、数据库、操作系统、计算机网络、数据结构和算法、机器学习、编程人生等,可以star一下,下次找书直接在上面搜索,仓库持续更新中~

大公司为什么禁止SpringBoot项目使用Tomcat?

大公司为什么禁止SpringBoot项目使用Tomcat?

Github地址

原文链接:https://www.cnblogs.com/tyson03/p/17327892.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:大公司为什么禁止SpringBoot项目使用Tomcat? - Python技术站

(0)
上一篇 2023年4月18日
下一篇 2023年4月18日

相关文章

  • Java实现删除排序数组中重复元素的方法小结【三种方法比较】

    当我们需要删除有序数组中的重复元素时,有多种实现方法。这篇文章将比较三种不同的Java实现方法,并讲解其优缺点。三种方法分别是: 1.利用Java自带的ArrayList类2.使用Java的双指针方法3.使用一个计数器来记录重复元素 使用Java自带的ArrayList类 使用Java自带的ArrayList类来实现删除有序数组中重复元素的方法非常简单。具体…

    Java 2023年5月26日
    00
  • Java二维数组计算集合总结

    下面是关于Java二维数组计算集合总结的完整攻略: 概述 二维数组是Java中常见的数据结构之一,它可以用来表示一个表格或矩阵,通常由若干行和列组成。本次总结主要针对二维数组的计算集合操作,包括对行、列进行计算,以及筛选出符合条件的行或列等。本文的示例代码基于Java 8编写。 创建二维数组 在Java中,我们可以使用如下方式创建二维数组: int[][] …

    Java 2023年5月26日
    00
  • Mybatis如何配置连接池

    MyBatis可以通过配置连接池来提高数据库操作的性能,下面是配置连接池的详细攻略: 步骤1:添加连接池依赖 在pom.xml文件中添加对连接池的依赖,例如: <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId…

    Java 2023年5月20日
    00
  • 跨站脚本攻击XSS原理与防范实例分析

    跨站脚本攻击XSS原理与防范实例分析 XSS攻击原理 跨站脚本攻击(XSS)是通过在web应用程序中注入恶意脚本来攻击用户的一种常见安全漏洞。攻击者可将攻击代码注入到正常的web页面中,一旦被用户浏览器执行,就能够窃取用户的敏感信息或者利用用户的身份进行恶意操作。 XSS攻击通常分为以下三种类型: 存储型攻击:攻击者将恶意脚本注入到web应用程序中的数据库中…

    Java 2023年6月16日
    00
  • IDEA配置maven环境的详细教程(Unable to import maven project报错问题的解决)

    下面是详细讲解“IDEA配置maven环境的详细教程(Unable to import maven project报错问题的解决)”的完整攻略。 一、前置条件 在进行IDEA配置maven环境之前,需要确保以下条件全部满足:- 你已经下载并安装了JDK,并确保其JAVA_HOME环境变量已经设置完成。- 你已经下载并安装了maven软件,并确保其MAVEN_…

    Java 2023年5月20日
    00
  • jsp中使用javabean实例介绍

    下面是使用JavaBean实例在JSP中的介绍和示例。 什么是JavaBean JavaBean是Java平台的一种基本组件,是一种Java类,具有以下特征: 类是公共的的(即public class)。 有一个无参数的构造函数(即默认构造函数)。 类的属性(即数据成员)被私有化(即private)。 通过 getter/setter 方法来访问这些属性,属…

    Java 2023年6月15日
    00
  • SpringMVC请求参数的使用总结

    SpringMVC请求参数的使用总结 在 SpringMVC 中,我们经常需要获取请求参数,包括 GET 请求和 POST 请求。本文将详细讲解 SpringMVC 请求参数的使用,包括如何获取 GET 请求参数、POST 请求参数、路径参数和请求头参数,并提供两个示例说明。 获取 GET 请求参数 在 SpringMVC 中,我们可以使用 @Request…

    Java 2023年5月18日
    00
  • 全面剖析java中的注解(Annotation)

    全面剖析Java中的注解(Annotation) 1. 什么是注解 注解(Annotation),是Java 5之后引入的一个重要特性。它是Java语言旨在简化Java开发的一种方式,是代码级别的说明标记,用于描述类、方法、变量等元素的信息。 注解本身并没有实际的执行逻辑,它只是代码的一种附加说明、标记或元数据,提供了一种结构化的方式来描述程序和配置信息。注…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部