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

前言

在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日

相关文章

  • 趣谈Unicode、Ascii、utf-8、GB2312、GBK等编码知识

    趣谈Unicode、ASCII、UTF-8、GB2312、GBK等编码知识 什么是编码? 计算机是一台二进制数处理机器,它无法直接处理人类可读的字符和文本。因此,需要通过一种规范来将字符和文本转化为计算机可识别的二进制数,这个规范就叫做编码。 ASCII编码 ASCII编码,全称是American Standard Code for Information …

    Java 2023年5月20日
    00
  • JPA配置详解之jpaProperties用法

    JPA配置详解之jpaProperties用法 为了更好地管理JPA配置,Spring Boot提供了许多配置属性,其中一个是jpaProperties属性。在这篇攻略中,我们将学习如何在Spring Boot应用程序中使用jpaProperties属性,并且将通过示例代码演示其用法。 使用示例 假设我们有一个简单的Spring Boot应用程序,并且需要使…

    Java 2023年5月20日
    00
  • JavaWeb开发入门第一篇必备知识讲解

    关于“JavaWeb开发入门第一篇必备知识讲解”的完整攻略,下面是详细的说明: JavaWeb开发入门第一篇必备知识讲解 什么是JavaWeb? JavaWeb是Java语言在Web应用程序领域中的应用,主要包括Servlet、JSP、Web服务等技术。JavaWeb技术架构主要是基于MVC思想,即模型(M)-视图(V)-控制器(C)。 Servlet Se…

    Java 2023年5月30日
    00
  • 什么是垃圾回收的GC日志?

    垃圾回收器(Garbage Collector,GC)是Java虚拟机(JVM)中的一个子系统,负责对程序中不再使用的对象进行回收和释放内存。GC日志是用于分析和调优GC行为的重要工具,它记录了JVM在执行垃圾回收时所进行的操作,并可供开发者分析GC的性能、回收效率、内存使用情况等信息。以下是垃圾回收的GC日志的详细使用攻略。 什么是GC日志? GC日志是J…

    Java 2023年5月10日
    00
  • java如何实现数位分离

    Java如何实现数位分离 数位分离是指将一个整数中的每个数字分离出来,形成一个数组。Java实现该功能可以使用以下两种方法: 方法一:将整数转化为字符串,然后逐位遍历字符串将每个数字字符转化为数字,存入一个数组中。 public static int[] separateDigits(int number) { String strNum = String.…

    Java 2023年5月26日
    00
  • 基于MyBatis的简单使用(推荐)

    下面就给您详细讲解“基于MyBatis的简单使用(推荐)”。 什么是MyBatis? MyBatis是一款基于Java语言的开源持久层框架,它是面向SQL的框架,并且可以轻松地与各种数据源进行集成。它的主要特点是使得数据持久化开发变得更加容易,开发者只需要编写简单的SQL语句,而且框架还为开发者提供了便捷的ORM操作。 MyBatis的简单使用 下面我们来演…

    Java 2023年5月20日
    00
  • Java使用I/O流读取文件内容的方法详解

    下面是Java使用I/O流读取文件内容的方法详解的完整攻略。 1. Java I/O流简介 Java I/O(输入/输出)流是Java提供的用于读取和写入数据的一种机制。Java I/O流可以用于文件操作、网络编程、数据库操作等多种场景。Java I/O流分为字节流和字符流两种: 字节流:以字节为单位进行读写操作,常用的类有InputStream和Outpu…

    Java 2023年5月20日
    00
  • Spring Security权限管理实现接口动态权限控制

    下面就是关于“Spring Security权限管理实现接口动态权限控制”的完整攻略: 1. 简介 在Spring Security中,我们可以使用基于注解的安全性,以控制方法响应、请求类型等。但是,如果我们需要跟具体的业务数据绑定的话,我们就需要根据规则来控制具体的访问权限。 在这种情况下,就需要使用Spring Security提供的“动态授权”功能了。…

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