今天小编给大家分享一下SpringBoot中怎么设置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  的依赖即可,如下图所示。

SpringBoot中怎么设置Undertow-冯金伟博客园

SpringBoot中怎么设置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,在高并发情况下表现非常出色。

SpringBoot中怎么设置Undertow-冯金伟博客园

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

QPS 测试结果对比:

Tomcat

SpringBoot中怎么设置Undertow-冯金伟博客园

Undertow

SpringBoot中怎么设置Undertow-冯金伟博客园

内存使用对比:

Tomcat

SpringBoot中怎么设置Undertow-冯金伟博客园

Undertow

SpringBoot中怎么设置Undertow-冯金伟博客园

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