news 2026/6/9 3:36:32

很多大公司为什么禁止在SpringBoot项目中使用Tomcat?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
很多大公司为什么禁止在SpringBoot项目中使用Tomcat?

很多大公司为什么“禁止”在Spring Boot项目中使用Tomcat?

严格来说,不是所有大公司都绝对禁止使用Spring Boot的默认嵌入式Tomcat(它是Spring Boot的默认Web服务器),但在许多互联网大厂(如阿里、腾讯、京东等高并发业务场景),强烈推荐或强制替换为Undertow(有时也用Jetty)。这已成为一种常见的技术规范和最佳实践。原因主要集中在性能、资源消耗和高并发支持上,尤其在微服务时代。

核心原因:Undertow在高并发场景下全面优于Tomcat

Spring Boot默认嵌入Tomcat方便开发,但Tomcat设计较“传统”,在极端高并发下有瓶颈:

  • 连接管理弱:Tomcat默认偏向短连接(HTTP/1.1 Keep-Alive需手动优化),高并发时频繁TCP握手/挥手开销大,吞吐量受限。
  • 线程模型传统:阻塞IO为主,线程池容易耗尽(默认maxThreads=200),内存占用高。
  • 资源消耗大:相同配置下,Tomcat内存和CPU占用更高,不适合容器化/云原生密集部署。

Undertow(Red Hat开源,WildFly默认容器)则专为现代高性能设计:

  • 非阻塞IO + 异步支持:内置NIO,处理长连接/持久连接更高效。
  • 轻量级:内存占用低(测试显示比Tomcat低20-50%),启动更快。
  • 高吞吐:基准测试(wrk/JMeter)中,高并发QPS往往高出Tomcat 20-100%(视场景)。
  • 完美支持Servlet/WebSocket/HTTP2:与Spring Boot无缝集成。

实际测试数据对比(相同硬件、模拟高并发请求):

指标TomcatUndertowJetty备注
吞吐量 (QPS)基准+30-100%+10-50%Undertow 最强,尤其IO密集
内存占用最低中等Undertow 适合微服务密集部署
CPU 使用中高长连接场景 Undertow 胜出
启动时间中等最快云原生友好
高并发稳定性易线程耗尽优秀(非阻塞)Undertow 默认持久连接

(数据来源于多个基准测试,如JavaCodeGeeks、51CTO等,实际视业务而异)

大厂为什么强制替换?
  • 微服务高并发需求:大厂微服务动辄万级QPS,Tomcat容易成瓶颈。替换Undertow后,系统更稳、成本更低(少开机器)。
  • 容器化/K8s部署:嵌入式服务器镜像小、资源占用低是关键,Undertow更轻量。
  • 统一规范:公司技术栈标准化,避免团队乱用导致性能不均。代码审查时直接禁Tomcat依赖。
  • 不是绝对禁:小项目或低并发场景,Tomcat仍OK。但大厂新项目默认Undertow。

阿里巴巴Java开发手册中未明确禁Tomcat(重点在编码规范),但社区和大厂实践(如阿里内部许多团队)倾向Undertow。

如何替换(超级简单,一分钟搞定)

在pom.xml中排除Tomcat,引入Undertow:

<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><!-- 引入 Undertow --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-undertow</artifactId></dependency>

重启项目,日志显示:Undertow started on port(s) 8080

Jetty替换类似(starter-jetty),适合长连接/WebSocket场景。

总结建议
  • 新项目/高并发:优先Undertow,性能起飞!
  • 老项目:如果没瓶颈,Tomcat也稳(生态最成熟)。
  • 实际选型:压测你的业务!Tomcat不是“坏”,只是Undertow更适合现代大厂场景。

如果你在公司遇到这个规范,恭喜你——这是个好习惯,能让你项目更扛打~有具体压测数据或经历,欢迎分享!😂

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 19:41:48

【Android】Glide的使用

简介 是一个快速高效的Android开源媒体管理和图像加载框架&#xff0c;它将媒体解码、内存和磁盘缓存以及资源池封装到一个简单易用的界面中。 Glide支持拉取&#xff0c;解码和展示视频快照&#xff0c;图片和GIF动画。 **优点&#xff1a;**1.使用简单&#xff0c;并且支持多…

作者头像 李华
网站建设 2026/6/7 13:56:37

计算机毕业设计springboot餐厅预定系统 基于SpringBoot的智慧餐饮订座平台 SpringBoot驱动的线上餐厅席位预约管理系统

计算机毕业设计springboot餐厅预定系统693j34gy &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。移动互联网把“到店即食”变成了“到店前决策”&#xff0c;餐厅空座率与顾客等位…

作者头像 李华
网站建设 2026/6/8 20:22:03

被老板追着问的省钱秘籍,竟然是它!

传统资产管理的 “痛点” 大揭秘在企业运营的庞大体系中&#xff0c;资产管理堪称关键一环。然而&#xff0c;不少企业还在沿用传统的资产管理方式&#xff0c;殊不知&#xff0c;这些方式正悄然成为企业降本增效路上的 “绊脚石”。人工盘点&#xff1a;耗时耗力的 “持久战”…

作者头像 李华
网站建设 2026/6/5 15:18:34

传统修复 vs AI修复:DirectX问题处理效率提升300%

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个DirectX修复效率对比工具&#xff1a;1.传统修复流程模拟(手动下载、安装等) 2.AI修复流程实现 3.自动记录各步骤耗时 4.生成对比图表 5.支持导出测试报告。要求使用Python…

作者头像 李华
网站建设 2026/6/8 14:08:26

用HBuilderX快速原型设计:1小时打造产品Demo

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个电商APP的快速原型&#xff0c;包含商品列表、商品详情和购物车功能。使用HBuilderX和uni-app框架&#xff0c;要求界面美观&#xff0c;有基本的交互效果&#xff08;如点…

作者头像 李华
网站建设 2026/6/7 23:49:10

解锁Git高阶技能:Rebase、Stash与子模块的奇妙之旅

引言在当今软件开发的世界里&#xff0c;版本控制系统是开发者不可或缺的工具&#xff0c;而 Git 无疑是其中的佼佼者。它以强大的功能、高效的分布式特性以及丰富的命令集&#xff0c;成为了全球开发者首选的版本管理工具。无论是个人开发者在小型项目中的代码管理&#xff0c…

作者头像 李华