Spring Boot 内置容器选型(Tomcat/Undertow)

文章目录

    • Spring Boot 容器选型(Tomcat/Undertow)
      • Tomcat
      • Undertow
      • 对比测试
    • 参考

Spring Boot 容器选型(Tomcat/Undertow)

spring boot内置容器性能比较(Jetty、Tomcat、Undertow)
参考URL: https://blog.csdn.net/syx1065001748/article/details/98883727

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

Tomcat

Tomcat是Apache基金下的一个轻量级的Servlet容器,支持Servlet和JSP。Tomcat具有Web服务器特有的功能,包括 Tomcat管理和控制平台、安全局管理和Tomcat阀等。Tomcat本身包含了HTTP服务器,因此也可以视作单独的Web服务器。但是,Tomcat和ApacheHTTP服务器不是一个东西,ApacheHTTP服务器是用C语言实现的HTTP Web服务器。Tomcat是完全免费的,深受开发者的喜爱。

Undertow

官网:http://undertow.io
https://github.com/undertow-io/undertow

Undertow是Red Hat公司的开源产品, 它完全采用Java语言开发,是一款灵活的高性能Web服务器,支持阻塞IO和非阻塞IO。由于Undertow采用Java语言开发,可以直接嵌入到Java项目中使用。同时, Undertow完全支持Servlet和Web Socket,在高并发情况下表现非常出色。

Undertow 是基于java nio的web服务器,应用比较广泛,内置提供的PathResourceManager,可以用来直接访问文件系统;如果你有文件需要对外提供访问,除了ftp,nginx等,undertow 也是一个不错的选择,作为java开发,服务搭建非常简便。

官网API给出一句话概述Undertow:

Undertow is a flexible performant web server written in java, providing both blocking and non-blocking API’s based on NIO.

译文: Undertow是一个用java编写的灵活的高性能Web服务器,提供基于NIO的阻塞和非阻塞API。

Undertow特点

  • 高性能 在多款同类产品的压测中,在高并发情况下表现出色。
  • Servlet4.0 支持 它提供了对 Servlet4.0 的支持。
  • Web Socket 完全支持,包括JSR-356,用以满足 Web 应用巨大数量的客户端。
  • 内嵌式 它不需要容器,只需通过 API 即可快速搭建 Web 服务器。
  • 灵活性 交由链式Handler配置和处理请求,可以最小化按需加载模块,无须加载多余功能。
  • 轻量级 它是一个 内嵌Web 服务器, 由两个核心 Jar 包组成

对比测试

总结
其实在并发量不大的情况下 Undertow、和其它两款 Servlet Web 容器 Jetty 、Tomcat 的差距并不是很大。 **Undertow 的优势是高并发下的吞吐量。**你可以根据自己的实际需要来选择。

QPS测试结果对比:

TomcatSpring Boot 内置容器选型(Tomcat/Undertow)_第1张图片Undertow
Spring Boot 内置容器选型(Tomcat/Undertow)_第2张图片

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

参考

Spring Boot 集成undertow作为web容器分析
参考URL: https://www.cnblogs.com/ljgeng/p/11079091.html
SpringBoot 内嵌容器的比较
参考URL: https://www.cnblogs.com/paxing/p/10471054.html

你可能感兴趣的:(Spring全家桶)