点击上方“Java基基”,选择“设为星标”
做积极的人,而不是积极废人!
源码精品专栏
- 原创 | Java 2020 超神之路,很肝~
- 中文详细注释的开源项目
- RPC 框架 Dubbo 源码解析
- 网络应用框架 Netty 源码解析
- 消息中间件 RocketMQ 源码解析
- 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析
- 作业调度中间件 Elastic-Job 源码解析
- 分布式事务中间件 TCC-Transaction 源码解析
- Eureka 和 Hystrix 源码解析
- Java 并发源码
- 前言
- SpringBoot中的Tomcat容器
- SpringBoot设置Undertow
- 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。
SpringBoot设置Undertow 对于Tomcat技术,Java程序员应该都非常熟悉,它是Web应用最常用的容器技术。我们最早的开发的项目基本都是部署在Tomcat下运行,那除了Tomcat容器,SpringBoot中我们还可以使用什么容器技术呢?
没错,就是题目中的Undertow容器技术。SrpingBoot已经完全继承了Undertow技术,我们只需要引入Undertow的依赖即可,如下图所示。
文章图片
文章图片
配置好以后,我们启动应用程序,发现容器已经替换为Undertow。
那我们为什么需要替换Tomcat为Undertow技术呢?
Tomcat与Undertow的优劣对比 Tomcat是Apache基金下的一个轻量级的Servlet容器,支持Servlet和JSP。Tomcat具有Web服务器特有的功能,包括 Tomcat管理和控制平台、安全局管理和Tomcat阀等。Tomcat本身包含了HTTP服务器,因此也可以视作单独的Web服务器。
但是,Tomcat和ApacheHTTP服务器不是一个东西,ApacheHTTP服务器是用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
文章图片
通过测试发现,在高并发系统中,Tomcat相对来说比较弱。在相同的机器配置下,模拟相等的请求数,Undertow在性能和内存使用方面都是最优的。并且Undertow新版本默认使用持久连接,这将会进一步提高它的并发吞吐能力。所以,如果是高并发的业务系统,Undertow是最佳选择。
最后 SpingBoot中我们既可以使用Tomcat作为Http服务,也可以用Undertow来代替。Undertow在高并发业务场景中,性能优于Tomcat。所以,如果我们的系统是高并发请求,不妨使用一下Undertow,你会发现你的系统性能会得到很大的提升。
欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢:
文章图片
已在知识星球更新源码解析如下:
文章图片
文章图片
文章图片
文章图片
最近更新《芋道 SpringBoot 2.X 入门》系列,已经 20 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。
提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。
获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。
【中间件|为什么很多 SpringBoot 开发者放弃了 Tomcat,选择了 Undertow?】
文章图片
推荐阅读
- 游戏|为什么像王者荣耀这样的游戏 Server 不愿意使用微服务()
- 我是程序员|云原生时代微服务的高可用架构设计
- 分布式|是微服务不香了(淘宝为什么要放弃Spring Cloud 和 Dubbo?)
- 面试题|P7面试题
- javascript|JavaScript面试题看这一篇就够了,简单全面一发入魂(持续更新 step2)
- java|实话告诉你吧!没有7年开发经验你真学不会这份SpringCloud实战演练文档!还是躺着吧!
- 学习笔记|网易云音乐推荐系统特训_笔记
- 大厂面试高频题之数据结构与算法|认识异或运算的本质与基本规律,0^x=x,x异或x=0,有交换律,结合律,与顺序无关
- JAVA|JAVA面向对象——封装与访问控制修符