为何不少 Spring Boot 开发者放弃了 Tomcat,选择了 Undertow ?

前言
程序员

在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。服务器

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

SpringBoot设置Undertow

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

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

配置好之后,咱们启动应用程序,发现容器已经替换为Undertow。框架

那咱们为何须要替换Tomcat为Undertow技术呢?ide

Tomcat与Undertow的优劣对比

Tomcat是Apache基金下的一个轻量级的Servlet容器,支持Servlet和JSP。Tomcat具备Web服务器特有的功能,包括 Tomcat管理和控制平台、安全局管理和Tomcat阀等。Tomcat自己包含了HTTP服务器,所以也能够视做单独的Web服务器。可是,Tomcat和ApacheHTTP服务器不是一个东西,ApacheHTTP服务器是用C语言实现的HTTP Web服务器。Tomcat是彻底免费的,深受开发者的喜好。高并发

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

Undertow是Red Hat公司的开源产品, 它彻底采用Java语言开发,是一款灵活的高性能Web服务器,支持阻塞IO和非阻塞IO。因为Undertow采用Java语言开发,能够直接嵌入到Java项目中使用。同时, Undertow彻底支持Servlet和Web Socket,在高并发状况下表现很是出色。性能

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

咱们在相同机器配置下压测Tomcat和Undertow,获得的测试结果以下所示:测试

1)QPS测试结果对比:3d

Tomcat

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

Undertow

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

2)内存使用对比:

Tomcat

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

Undertow

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

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

最后

SpingBoot中咱们既可使用Tomcat做为Http服务,也能够用Undertow来代替。Undertow在高并发业务场景中,性能优于Tomcat。因此,若是咱们的系统是高并发请求,不妨使用一下Undertow,你会发现你的系统性能会获得很大的提高。

相关文章
相关标签/搜索