陆小曼|吊打 Tomcat,Undertow 性能很炸

在 Java Web 容器的世界里 , Tomcat 和 Jetty 是大名鼎鼎的、用的最多的开源项目 , 也是大众熟知的 。
今天再介绍另外一款能和 Tomcat 媲美的神器:Undertow , 据说性能方面还要吊打 Tomcat , 如果你还不知道它 , 那你就 OUT 了 。
我们来看下 Spring Boot 默认支持的三种 Servlet 容器:
陆小曼|吊打 Tomcat,Undertow 性能很炸以上来源于 Spring Boot 2.3.2 官方文档 , 更多信息请点击这里参考这篇文章 。
Undertow 它能成为 Spring Boot 默认集成的三大容器之一 , 就凭这点 , 我想就足以说明它的地位 。
Undertow 什么鬼?Undertow 是 RedHat(红帽公司)的开源产品 , 采用 Java 开发 , 是一款灵活、高性能的 Web 服务器 , 提供了基于 NIO 的阻塞/非阻塞 APIs , 也是 Wildfly 的默认 Web 容器 。
搜索 Undertow:
陆小曼|吊打 Tomcat,Undertow 性能很炸页面显示的是 JBoss Community , 因为 2006 年 RedHat 收购了 JBoss , 那也就不足为怪了 。
Undertow 它是一个基于组合的体系结构 , 可以通过组合一系列小型处理器来构建一个 Web 服务器 。 这就让我们可以灵活的在 Java EE servlet 4.0 容器和底层非阻塞处理器或者其他更多之间进行选择 。
Undertow 被设计成完全可嵌入式的 , 所以也叫嵌入式容器 , 具有易于使用的流畅构建 API , 另外 , Undertow 的生命周期也完全由所嵌入的应用程序所控制 。
这也是为什么 Spring Boot 可以直接嵌入 Undertow 的原因 , Undertow 它就是为了嵌入而发烧的 。 Spring Boot 基础知识就不介绍了 , 关注公众号Java技术栈在后台回复boot获取我写的系列教程 。
官方网站:
源码托管在 Github:
Undertow 有啥特性?1)HTTP/2 Support
Undertow 支持 HTTP/2 开箱即用 , 不需要重写引导类路径 。
2)支持 HTTP 升级
支持 HTTP 升级 , 允许多个协议通过 HTTP 端口上进行复用 。
3)支持 Web Socket
Undertow 提供对 Web 套接字的全面支持 , 包括对 JSR-356 的支持 。
4)支持 Servlet 4.0
Undertow 提供了对 Servlet 4.0 的支持 , 包括对嵌入式 Servlet 的支持 , 还可以混合部署 Servlet 和原生 Undertow 非阻塞处理程序 。
5)可嵌入式
Undertow 可以嵌入到应用程序中 , 也可以通过几行代码独立运行 。
6)高灵活性
一个 Undertow 服务器是通过链式处理器来配置的 , 可以根据需要添加功能 , 因此可以避免添加没有必要的功能 。
Undertow 性能如何?国外有篇帖子做了 Tomcat vs. Jetty vs. Undertow 三者的性能比较:
陆小曼|吊打 Tomcat,Undertow 性能很炸从测试结果看 , 这三个 Servlet 容器都具有不错的性能 , 但 Undertow 性能更好 , Tomcat 和 Jetty 紧随其后 。
Jetty 在启动时的内存占用最大 , 为:311 MB, Tomcat 和 Undertow 的初始内存占用都很低 , 大约为:120 MB , 而 Undertow 的初始内存占用最低 , 为:114 MB 。
【陆小曼|吊打 Tomcat,Undertow 性能很炸】最后 , 关键的区别在于 , Undertow 响应头参数默认包含 HTTP 持久连接信息 , 这个头参数在支持持久连接的客户端时 , 可以通过重用连接来优化性能 。
Show me the codeUndertow 目前有两个主要版本:


推荐阅读