41 | 热点问题答疑(4): Tomcat和Jetty有哪些不同?
李号双
该思维导图由 AI 生成,仅供参考
作为专栏最后一个模块的答疑文章,我想是时候总结一下 Tomcat 和 Jetty 的区别了。专栏里也有同学给我留言,询问有关 Tomcat 和 Jetty 在系统选型时需要考虑的地方,今天我也会通过一个实战案例来比较一下 Tomcat 和 Jetty 在实际场景下的表现,帮你在做选型时有更深的理解。
我先来概括一下 Tomcat 和 Jetty 两者最大的区别。大体来说,Tomcat 的核心竞争力是成熟稳定,因为它经过了多年的市场考验,应用也相当广泛,对于比较复杂的企业级应用支持得更加全面。也因为如此,Tomcat 在整体结构上比 Jetty 更加复杂,功能扩展方面可能不如 Jetty 那么方便。
而 Jetty 比较年轻,设计上更加简洁小巧,配置也比较简单,功能也支持方便地扩展和裁剪,比如我们可以把 Jetty 的 SessionHandler 去掉,以节省内存资源,因此 Jetty 还可以运行在小型的嵌入式设备中,比如手机和机顶盒。当然,我们也可以自己开发一个 Handler,加入 Handler 链中用来扩展 Jetty 的功能。值得一提的是,Hadoop 和 Solr 都嵌入了 Jetty 作为 Web 服务器。
从设计的角度来看,Tomcat 的架构基于一种多级容器的模式,这些容器组件具有父子关系,所有组件依附于这个骨架,而且这个骨架是不变的,我们在扩展 Tomcat 的功能时也需要基于这个骨架,因此 Tomcat 在设计上相对来说比较复杂。当然 Tomcat 也提供了较好的扩展机制,比如我们可以自定义一个 Valve,但相对来说学习成本还是比较大的。而 Jetty 采用 Handler 责任链模式。由于 Handler 之间的关系比较松散,Jetty 提供 HandlerCollection 可以帮助开发者方便地构建一个 Handler 链,同时也提供了 ScopeHandler 帮助开发者控制 Handler 链的访问顺序。关于这部分内容,你可以回忆一下专栏里讲的回溯方式的责任链模式。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
Tomcat和Jetty是两种常见的Java Web服务器,它们在设计理念、功能特点和性能表现上有着明显的区别。Tomcat作为一位经验丰富的工程师,稳定成熟,适用于复杂的企业级应用,但相对复杂且不太灵活;而Jetty则更像是一位年轻的后起之秀,设计简洁灵活,适用于轻量级应用和嵌入式设备。在一次实际压测中,Jetty在吞吐量和响应速度上略有优势,同时消耗的线程和内存资源也较少,但存在一定的错误率;而Tomcat则表现更加稳定,没有出现错误。因此,选型时需根据系统需求权衡资源消耗和稳定性,对于关键的企业级应用建议选择Tomcat,而对于资源消耗要求较低的轻量级应用则可考虑Jetty。文章通过实例和理论分析,为读者提供了对比Tomcat和Jetty的参考,帮助读者更好地理解和选择适合自己系统的Web服务器。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入拆解 Tomcat & Jetty 》,新⼈⾸单¥68
《深入拆解 Tomcat & Jetty 》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(12)
- 最新
- 精选
- chun1123同样意犹未尽!2019-08-156
- undefinedjetty 那 2% 的错误主要是什么导致的哈?2021-04-084
- 完美世界jetty 吞吐量高,适合做网关。tomcat成熟稳定,更适合做核心应用。 springboot 内置了三个容器:1.undertow;2.jetty;3.tomcat。默认的是tomcat。 详细对比可以参考:https://examples.javacodegeeks.com/enterprise-java/spring/tomcat-vs-jetty-vs-undertow-comparison-of-spring-boot-embedded-servlet-containers2019-09-173
- Zzz这门课是一个宝藏!2020-07-191
- 任鹏斌第一遍读完了打算开始第二遍细细品味2019-12-181
- 许童童这篇文章有点短,没学够的感觉。2019-08-151
- QQ怪学的意犹未尽2019-08-151
- 托尼斯威特Jetty ErrorRate>0的原因是什么? 是因为有些请求分配不到线程所以超时了吗?2020-08-31
- 小熊最后的示例很形象,哈哈2020-05-03
- wakaka为啥选择100个线程模拟客户端请求呢?对于本地单机压测,这个数值是高还是低呢?2020-04-28
收起评论