作者:阿迈达聊技术

https://www.toutiao.com/a6775476659416990212

前言

在 Spring Boot 框架中,我们使用最多的是 Tomcat,这是 Spring Boot 默认的容器技术,而且是内嵌式的 Tomcat。同时,Spring Boot 也支持 Undertow 容器,我们可以很方便的用 Undertow 替换 Tomcat,而 Undertow 的性能和内存使用方面都优于Tomcat,那我们如何使用 Undertow 技术呢?本文将为大家细细讲解。

Spring Boot 中的 Tomcat 容器

Spring Boot 可以说是目前最火的 Java Web 框架了。它将开发者从繁重的 XML 解救了出来,让开发者在几分钟内就可以创建一个完整的 Web 服务,极大的提高了开发者的工作效率。Web 容器技术是 Web 项目必不可少的组成部分,因为任 Web 项目都要借助容器技术来运行起来。在 Spring Boot 框架中,我们使用最多的是 Tomcat,这是 Spring Boot 默认的容器技术,而且是内嵌式的 Tomcat。

Spring Boot 设置 Undertow

对于 Tomcat 技术,Java 程序员应该都非常熟悉,它是 Web 应用最常用的容器技术。我们最早的开发的项目基本都是部署在 Tomcat 下运行,那除了 Tomcat 容器,Spring Boot 中我们还可以使用什么容器技术呢?没错,就是题目中的 Undertow 容器技术。Srping Boot 已经完全继承了 Undertow 技术,我们只需要引入 Undertow 的依赖即可,如下图所示。

关注微信公众号:互联网架构师,在后台回复:8,可以获取互联网架构教程,都是干货。

配置好以后,我们启动应用程序,发现容器已经替换为 Undertow。

那么,我们为什么需要替换 Tomcat 为 Undertow 技术呢?

Tomcat 与 Undertow 的优劣对比

Tomcat 是 Apache 基金下的一个轻量级的 Servlet 容器,支持 Servlet 和 JSP。Tomcat 具有 Web 服务器特有的功能,包括 Tomcat 管理和控制平台、安全局管理和 Tomcat 阀等。Tomcat 本身包含了 HTTP 服务器,因此也可以视作单独的 Web 服务器。但是,Tomcat 和 Apache HTTP 服务器不是一个东西,Apache HTTP 服务器是用 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 是最佳选择。

最后

Sping Boot 中我们既可以使用 Tomcat 作为 HTTP 服务,也可以用 Undertow 来代替。Undertow 在高并发业务场景中,性能优于 Tomcat。所以,如果我们的系统是高并发请求,不妨使用一下 Undertow,你会发现你的系统性能会得到很大的提升。

猜你喜欢

1、GitHub 标星 3.2w!史上最全技术人员面试手册!FackBoo发起和总结

2、如何才能成为优秀的架构师?

3、从零开始搭建创业公司后台技术栈

4、程序员一般可以从什么平台接私活?

5、37岁程序员被裁,120天没找到工作,无奈去小公司,结果懵了...

6、滴滴业务中台构建实践,首次曝光

7、不认命,从10年流水线工人,到谷歌上班的程序媛,一位湖南妹子的励志故事

8、15张图看懂瞎忙和高效的区别!

Undertow技术:为什么很多Spring Boot开发者放弃了Tomcat?相关推荐

  1. Undertow技术:为什么很多Spring Boot开发者放弃了Tomcat

    作者:阿迈达聊技术 https://www.toutiao.com/a6775476659416990212 前言 在 Spring Boot 框架中,我们使用最多的是 Tomcat,这是 Sprin ...

  2. spring boot +vue用什么记录登录状态_为什么很多Spring Boot开发者放弃了Tomcat

    前言 在 Spring Boot 框架中,我们使用最多的是 Tomcat,这是 Spring Boot 默认的容器技术,而且是内嵌式的 Tomcat.同时,Spring Boot 也支持 Undert ...

  3. 使用Spring Boot开发者工具进行自动重启和页面自动刷新

    简介 大家可能都听说过开发Node.js应用时可以使用多种工具对开发者提供便利,如WebPack提供了开发者服务器来支持js应用动态更替,并在保存文件时自动刷新浏览器.Spring Boot也提供了相 ...

  4. java servlet 部署到tomcat_如何把spring boot项目部署到tomcat容器中

    把spring-boot项目按照平常的web项目一样发布到tomcat容器下 一.修改打包形式 在pom.xml里设置 war 二.移除嵌入式tomcat插件 在pom.xml里找到spring-bo ...

  5. 为什么很多 SpringBoot 开发者放弃了 Tomcat,选择了 Undertow?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:阿迈达 toutiao.com/a6775476659416 ...

  6. 为什么很多SpringBoot开发者放弃了Tomcat,选择了Undertow

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:阿迈达 toutiao.com/a6775476659416 ...

  7. 为什么很多SpringBoot开发者放弃了Tomcat,选择了Undertow?

    作者:阿迈达 来源:toutiao.com/a6775476659416990212 前言 在SpringBoot框架中,我们使用最多的是Tomcat,这是SpringBoot默认的容器技术,而且是内 ...

  8. undertow 怎么创建线程_为什么很多SpringBoot开发者放弃了Tomcat,选择了Undertow

    点击上方"后端技术精选",选择"置顶公众号" 技术文章第一时间送达! 作者:阿迈达 toutiao.com/a6775476659416990212/ 前言 在 ...

  9. 为什么很多SpringBoot开发者放弃了Tomcat而选择Undertow

    一.前言 在SpringBoot框架中,我们使用最多的是Tomcat,这是SpringBoot默认的容器技术,而且是内嵌式的Tomcat.同时,SpringBoot也支持Undertow容器,我们可以 ...

  10. springboot整合hibernate_峰哥说技术系列-17 .Spring Boot 整合 Spring Data JPA

    今日份主题 Spring Boot 整合 Spring Data JPA JPA(Java Persistence API)是用于对象持久化的 API,是Java EE 5.0 平台标准的 ORM 规 ...

最新文章

  1. Linux下同步模式、异步模式、阻塞调用、非阻塞调用总结
  2. linux下wc命令详解
  3. python入门视频教程推荐-python入门学习哪个书比较好(python视频教程知乎)
  4. jsp与servlet之间页面跳转及参数传递实例
  5. 【直播预约】线上Greentea JUG Meetup
  6. 使用IntelliJ IDEA的原因
  7. LaTeX 基础笔记。开篇
  8. 实现TFrecords文件的保存与读取
  9. MariaDB之SQL语句基础
  10. 【报告分享】2019中国少儿编程行业报告.pdf(附下载链接)
  11. tomcat源码阅读20
  12. 移动前端开发需要注意的20个要点
  13. 关于路由器和交换机的区别图解(总结)
  14. bitcoin简析一
  15. hp服务器修改阵列,HP ProLiant 服务器 修改磁盘阵列的方法
  16. 10天背诵英文10000单词
  17. ppt模板如何更换表格颜色?
  18. VR虚拟线上展馆之水资源绿色发展博览会
  19. python-爬取中国评书网音频
  20. ATM机程序Linux,c语言模拟银行ATM机程序

热门文章

  1. the database profile could not loaded. Check log for details
  2. bootstrap-引用-命名来源
  3. 虽然今天angular5发布了,但我还是吧这篇angularjs(1)+webpack的文章发出来吧哈哈哈...
  4. Web开发(初级)- 常用css总结,方便查询
  5. 【网络文摘】编程的智慧
  6. java堆内存与栈内存
  7. 一个关于Show窗口与Invalidate();顺序问题
  8. 只身单车游山东(一)
  9. InDesign入门教程,如何导入文本?
  10. 如何在 Mac 上使用网络位置?