一,undertow介绍

文章插图
1,undertow简介:Undertow是RedHAT红帽公司开源的产品,采用JAVA开发,是一款灵活,高性能的web服务器,提供了NIO的阻塞/非阻塞API,也是Wildfly的默认Web容器 。在javaweb容器的世界里,Tomcat和jetty是大众熟知的,undertow目前逐步进入大众的视角,它是一款能和tomcat媲美的神器,在性能方面吊打tomcat 。目前Undertow已经成为springboot 默认集成的三大容器之一 。,
2,undertow特点:undertow在高并发业务场景中,性能优于tomcat
1,高性能,在多款同类产品的压测对比中,高并发情况下表现出色 。
2,Servlet4.0支持,它提供了对Servlet4.0的支持 。
3,Web Socket完全支持,包含JSR-356,用以满足Web应用巨大数量的客户端 。
4,内嵌式,它不需要容器,只需要通过api即可快速搭建Web服务器 。
5,灵活性,交由链式Handler配置和处理请求,可以最小化按需加载模块,无须加载多余功能 。
6,轻量级,它是一个内嵌Web服务器,由两个核心jar包组成 。
3,springboot集成的web服务器

文章插图
2.2.13.RELEASE springboot版本默认支持的三种Servlet容器版本如下
Web服务器
集成版本
Undertow
2.0.33.Final
tomcat
9.0.41
jetty
4.1.17
二,实验验证实验准备材料如下:
1,springboot版本
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.2.RELEASE</version></parent>2,测试类的controller
@RequestMApping("/reflect")@ResponseBodypublic void reflect() { Object object = springReflectionUtil.springInvokeMethod("reflectService", "handleUser"); if (object instanceof User) { User invoke = (User)object; }}3,springboot默认就内嵌了tomcat在pom文件中引入以下依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency>4,项目整合undertow
在pom文件中引入以下依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-undertow</artifactId></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions></dependency>5,项目整合jetty在pom文件中引入以下依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jetty</artifactId></dependency>6,jvm配置
-server-Xms4096m-Xmx4096m-XX:+UseG1GC7,用jmeter压测tomcat,jetty,undertow分别模拟10万请求,查看各自的吞吐量数据
场景一:100个线程 循环1000次请求测试接口,模拟10万请求
场景二:1000个线程 循环100次请求测试接口,模拟10万请求
推荐阅读
- 决明子6大害处,春砂仁的6大吃法
- 新鲜明日叶怎么吃,明日叶的功效
- 实时音视频技术的演进与应用
- 虚拟币会归零吗?
- 中国的四大名贵木材是什么?
- 不能爬小程序,叫什么会爬虫
- 吸附甲醛最好的东西是什么?
- 2021年校招程序员之阿里四个部门的十轮面试问题
- 北美程序员升职加薪必备的20种能力
- 纯净的雪是什么颜色的?
