开发者(KaiFaX)
面向全栈工程师的开发者
专注于前端、Java/Python/Go/PHP的技术社区
前言
在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的依赖即可,如下图所示。
![1bc59be5c9a6627ee6a49b15c83758c8.jpeg](https://i-blog.csdnimg.cn/blog_migrate/742fdff07955939dbf256be7f4269455.jpeg)
![deba37bcfa7f82b1420bf6ad41255446.jpeg](https://i-blog.csdnimg.cn/blog_migrate/aa273149f1519800dcbf9727af015865.jpeg)
配置好以后,我们启动应用程序,发现容器已经替换为Undertow。
那我们为什么需要替换Tomcat为Undertow技术呢?
Tomcat与Undertow的优劣对比
Tomcat是Apache基金下的一个轻量级的Servlet容器,支持Servlet和JSP。Tomcat具有Web服务器特有的功能,包括 Tomcat管理和控制平台、安全局管理和Tomcat阀等。Tomcat本身包含了HTTP服务器,因此也可以视作单独的Web服务器。
但是,Tomcat和ApacheHTTP服务器不是一个东西,ApacheHTTP服务器是用C语言实现的HTTP Web服务器。Tomcat是完全免费的,深受开发者的喜爱。
![22b0a9bd0ee67f0791c97d8f01d15922.jpeg](https://i-blog.csdnimg.cn/blog_migrate/9136ff625f9a0d86c99d2ec4cf112ff2.jpeg)
Undertow是Red Hat公司的开源产品, 它完全采用Java语言开发,是一款灵活的高性能Web服务器,支持阻塞IO和非阻塞IO。由于Undertow采用Java语言开发,可以直接嵌入到Java项目中使用。同时, Undertow完全支持Servlet和Web Socket,在高并发情况下表现非常出色。
![c438fa48f11f7fddc6b11f799b420788.jpeg](https://i-blog.csdnimg.cn/blog_migrate/2cf265f13ef525983acf9c5b1c4ac1c6.jpeg)
我们在相同机器配置下压测Tomcat和Undertow,得到的测试结果如下所示:
QPS测试结果对比:
![b95cdc9993a29b9d3a470343d30eb784.jpeg](https://i-blog.csdnimg.cn/blog_migrate/c669008f09e974f51d9837eeffae507a.jpeg)
![eb2ca70dc51d1e669b5f0d0fc35d0e42.jpeg](https://i-blog.csdnimg.cn/blog_migrate/8816f51602a972ce7171231123c3f1f3.jpeg)
内存使用对比:
![ad07fb72a3f3f0b78d229ec6d21e78de.jpeg](https://i-blog.csdnimg.cn/blog_migrate/76ba9dbcf80517890733271cee42cd81.jpeg)
![4422ec5b2cc28f528cd95183eda1d5a7.jpeg](https://i-blog.csdnimg.cn/blog_migrate/ae482adda4a1e72527d968a9da576d2d.jpeg)
通过测试发现,在高并发系统中,Tomcat相对来说比较弱。在相同的机器配置下,模拟相等的请求数,Undertow在性能和内存使用方面都是最优的。并且Undertow新版本默认使用持久连接,这将会进一步提高它的并发吞吐能力。所以,如果是高并发的业务系统,Undertow是最佳选择。
最后
SpingBoot中我们既可以使用Tomcat作为Http服务,也可以用Undertow来代替。Undertow在高并发业务场景中,性能优于Tomcat。所以,如果我们的系统是高并发请求,不妨使用一下Undertow,你会发现你的系统性能会得到很大的提升。
来源:toutiao.com/a6775476659416990212
1. 回复“m”可以查看历史记录;
2. 回复“h”或者“帮助”,查看帮助;
开发者已开通多个技术群交流学习,请加若飞微信:1321113940 (暗号k)进开发群学习交流
说明:我们都是开发者。视频或文章来源于网络,如涉及版权或有误,请您与若飞(1321113940)联系,将在第一时间删除或者修改,谢谢!
面向全栈工程师的开发者
专注于前端、Java/Python/Go/PHP的技术社区