当前位置:首页 > 每日看点 > 正文内容

有些公司为什么禁止SpringBoot项目使用Tomcat?

卡卷网7个月前 (01-17)每日看点112

谢邀!

说到底,Spring Boot和Tomcat这对CP被拆散的根本原因,是Tomcat的设计在某些高并发场景下已经显得力不从心,尤其是在需要高效、稳定的长连接环境中。

从源码来看,Spring Boot内嵌Tomcat实现的核心是`spring-boot-starter-tomcat`包。启动时,Spring Boot会初始化`TomcatServletWebServerFactory`,创建内嵌的Tomcat容器,方便开发却也限制了并发性能。Tomcat底层虽然支持NIO(非阻塞I/O)和APR(原生API),但这些都是“补丁”优化,无法解决根本的并发瓶颈问题。

比如说,Tomcat创建连接的关键代码:

// Tomcat Connector初始化部分 public void initInternal() throws LifecycleException { ... this.endpoint = new NioEndpoint(); // 默认使用NIO模式 ... this.protocolHandler = new Http11NioProtocol(endpoint); ... }

Tomcat默认启用NIO模式来处理请求,但在高并发场景下,这种基于线程池的处理方式仍然存在瓶颈。特别是当请求数量超出线程池容量时,就会出现请求阻塞,甚至出现`RejectedExecutionException`异常。也就是说,Tomcat的同步锁和线程管理方式并不适合高并发的场景。

为了解决这一问题,有些公司会直接用Netty替代Tomcat。Netty的Reactor模型特别适合处理大并发,因为它基于异步非阻塞I/O,允许高效管理大量连接,并能灵活配置事件循环,避免线程资源的竞争。

假设我们用Netty替代Spring Boot中的Tomcat,代码如下:

import org.springframework.boot.web.embedded.netty.NettyReactiveWebServerFactory; import org.springframework.boot.web.server.WebServerFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class WebServerConfig { @Bean public WebServerFactory webServerFactory() { return new NettyReactiveWebServerFactory(); // 使用Netty替代Tomcat } }

这样Spring Boot启动时会加载Netty容器,放弃默认的Tomcat。Netty的事件驱动模型天生支持高并发场景,比如实时推送服务、大规模的WebSocket应用等,比Tomcat稳定而高效。某金融公司曾在处理数十万实时连接时,因Tomcat频繁出现连接数耗尽问题,改用Netty后,并发处理能力提升了一倍,系统的稳定性也显著提高。

换句话说,Tomcat并不是完全不行,但它对高并发、长连接场景支持有限,且在处理大量请求时的同步锁管理容易造成性能瓶颈。所以,才有些公司在Spring Boot项目中禁止使用Tomcat,选择Netty或Undertow等容器来保证项目的高并发性能与稳定性。

最后,分享一个不错的编程导航网站,里面有大量的免费教程供你学习:

j301.cn/java.html

扫描二维码推送至手机访问。

版权声明:本文由卡卷网发布,如需转载请注明出处。

本文链接:https://www.kajuan.net/ttnews/2025/01/9663.html

分享给朋友:

相关文章

学了两个月网络安全,一直未入门怎么办,知乎大佬们给些建议吧?

学了两个月网络安全,一直未入门怎么办,知乎大佬们给些建议吧?

你才学两个月,就想入门,笑不活了,我学了8年了,还被人说是个菜鸟。我学了这么多的渗透,依然挖不到自己的漏洞。ailx10:学习CSRF漏洞ailx10:学习PHP XXE漏洞ailx10:学习CORS漏洞ailx10:学习ClickJack...

我爸讽刺我,写个破代码一年才十几万,他在工地带50个人,让我回去跟他干,写代码没出路,我该怎么选择?

我跟你一样的情况,本人现身说法,千万不要跟你爸干,我就是反面教材,现在想回去都回不去了,快十年没写代码了,再就是岁数大了,38岁了,35岁以上的码农根本就没公司愿意要,而且会受歧视。工程不好干,首先就是不合法,在法律层面,根本就没有包工头的...

拼多多,怎么就成为了年轻人的「赛博菜市场」?

拼多多,怎么就成为了年轻人的「赛博菜市场」?

可惜你不在拼多多买水果蔬菜,很难一句话跟你解释,我只能笨拙的用经历来慢慢讲。我们公司有微波炉,同事们几乎都是自己带饭来上班,便当荤素搭配、水果零食;都是好看又好吃。我自己本来就不喜欢外卖,当然也加入了带饭大军: 直到某一天深夜我闲着无聊刷了...

腾讯云为何在云服务市场败给了阿里云?

IDC领域,2010年以前,万网、新网互联、新网,三家公司瓜分天下,其中万网市场份额最高,排名第一。当时,万网的域名是http://www.net.cn,通过该域名就可以判断万网的地位。2010年阿里云成立,直接收购了万网,大量用户直接流向...

阿里云服务器续费价格好贵,想换一家云服务厂商,该怎么选择?

阿里云服务器续费价格好贵,想换一家云服务厂商,该怎么选择?

最近一台买了3年时间的腾讯云轻量服务器到期了,还有5天时间。当时买的价格是3年198元。配置是2核CPU、4GB内存,80GB SSD云硬盘,1200GB 流量包,然后中途给免费升级了CPU,从2核变成了4核。平均下来一年的费用70元不到,...

华为纯血鸿蒙,从此天下三分了吗?

华为纯血鸿蒙,从此天下三分了吗?

万众期待的纯血版 HarmonyOS NEXT 终于是端上来了,主打一个自研,从里到外,从内核到架构,都是自研。用户的激情已经被点燃,可见大家对于纯血鸿蒙的期待,但是鸿蒙系统能不能真正与安卓、iOS三分天下呢?目前来说,还为时过早。iOS和...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。