为什么很多SpringBoot开发者放弃了Tomcat(替代品
Undertow)
前⾔
在 Spring Boot 框架中,我们使⽤最多的是 Tomcat,这是 Spring Boot 默认的容器技术,⽽且是内嵌式的 Tomcat。同时,Spring Boot 也⽀持 Undertow 容器,我们可以很⽅便的⽤ Undertow 替换 Tomcat,⽽ Undertow 的性能和内存使⽤⽅⾯都优于Tomcat,那我们如何使⽤ Undertow 技术呢?本⽂将为⼤家细细讲解。
Spring Boot 中的 Tomcat 容器
Spring Boot 可以说是⽬前最⽕的 Java Web 框架了。它将开发者从繁重的 XML 解救了出来,让开发者在⼏分钟内就可以创建⼀个完整的 Web 服务,极⼤的提⾼了开发者的⼯作效率。Web 容器技术是 Web 项⽬必不可少的组成部分,因为任 Web 项⽬都要借助容器技术来运⾏起来。在 Spring Boot 框架中,我们使⽤最多的是 Tomcat,这是 Spring Boot 默认的容器技术,⽽且是内嵌式的 Tomcat。
Spring Boot 设置 Undertow
对于 Tomcat 技术,Java 程序员应该都⾮常熟悉,它是 Web 应⽤最常⽤的容器技术。我们最早的开发的项⽬基本都是部署在 Tomcat 下运⾏,那除了 Tomcat 容器,Spring Boot 中我们还可以使⽤什么容器技术呢?没错,就是题⽬中的 Undertow 容器技术。Srping Boot 已经完全继承了 Undertow 技术,我们只需要引⼊ Undertow 的依赖即可,如下图所⽰。
配置好以后,我们启动应⽤程序,发现容器已经替换为 Undertow。
那么,我们为什么需要替换 Tomcat 为 Undertow 技术呢?
Tomcat 与 Undertow 的优劣对⽐
Tomcat 是 Apache 基⾦下的⼀个轻量级的 Servlet 容器,⽀持 Servlet 和 JSP。Tomcat 具有 Web 服
务器特有的功能,包括 Tomcat 管理和控制平台、安全局管理和 Tomcat 阀等。Tomcat 本⾝包含了 HTTP 服务器,因此也可以视作单独的 Web 服务器。但是,Tomcat 和 Apache HTTP 服务器不是⼀个东西,Apache HTTP 服务器是⽤ 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
springboot架构图通过测试发现,在⾼并发系统中 Tomcat 相对来说⽐较弱。在相同的机器配置下,模拟相等的请求数,Undertow 在性能和内存使⽤⽅⾯都是最优的。并且 Undertow 新版本默认使⽤持久连接,这将会进⼀步提⾼它的并发吞吐能⼒。所以,如果是⾼并发的业务系
统,Undertow 是最佳选择。
最后
Sping Boot 中我们既可以使⽤ Tomcat 作为 HTTP 服务,也可以⽤ Undertow 来代替。Undertow 在⾼并发业务场景中,性能优于Tomcat。所以,如果我们的系统是⾼并发请求,不妨使⽤⼀下 Undertow,你会发现你的系统性能会得到很⼤的提升。
原⽂地址:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。