问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何选择Tomcat和Jetty

发布网友 发布时间:2022-12-26 21:15

我来回答

2个回答

热心网友 时间:2023-10-17 04:50

概括一下 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 链的访问顺序。

说了一堆理论,你可能觉得还是有点抽象,接下来我们通过一个实例,来压测一下 Tomcat 和 Jetty,看看在同等流量压力下,Tomcat 和 Jetty 分别表现如何。需要说明的是,通常我们从吞吐量、延迟和错误率这三个方面来比较结果。

首先用 Spring Boot 默认的 Tomcat 作为内嵌式 Web 容器,经过一轮压测后,将内嵌式的 Web 容器换成 Jetty,再做一轮测试,然后比较结果。为了方便观察各种指标,在本地开发机器上做这个实验。

我们会在每个请求的处理过程中休眠 1 秒,适当地模拟 Web 应用的 I/O 等待时间。JMeter 客户端的线程数为 100,压测持续 10 分钟。在 JMeter 中创建一个 Summary Report,在这个页面上,可以看到各种统计指标。

第一步,压测 Tomcat。启动 Spring Boot 程序和 JMeter,持续 10 分钟,以下是测试结果,结果分为两部分:

第二步,我们将 Spring Boot 的 Web 容器替换成 Jetty,具体步骤是在 pom.xml 文件中的 spring-boot-starter-web 依赖修改下面这样:

编译打包,启动 Spring Boot,再启动 JMeter 压测,以下是测试结果:

下面我们通过一个表格来对比 Tomcat 和 Jetty:

从表格中的数据我们可以看到:

当然由于测试场景的*,以上数据并不能完全反映 Tomcat 和 Jetty 的真实能力。但是它可以在我们做选型的时候提供一些参考:如果系统的目标是资源消耗尽量少,并且对稳定性要求没有那么高,可以选择轻量级的 Jetty;如果你的系统是比较关键的企业级应用,建议还是选择 Tomcat 比较稳妥。

最后用一句话总结 Tomcat 和 Jetty 的区别:Tomcat 好比是一位工作多年比较成熟的工程师,轻易不会出错、不会掉链子,但是他有自己的想法,不会轻易做出改变。而 Jetty 更像是一位年轻的后起之秀,脑子转得很快,可塑性也很强,但有时候也会犯一点小错误。

热心网友 时间:2023-10-17 04:50

1、在架构方面
Jetty架构需要在Handler基础上才能实现,主要功能都可以用Handler来实现,也比较简单;Tomcat架构则需要建立在容器设计基础上才能实现,比Jetty复杂一些。
2、在轻量级方面
Jetty相对于Tomcat更轻一些,Tomcat既要遵循Java Servlet,还要扩展大量的JEE特性以满足企业级应用的需求。
3、在灵活性方面
Jetty灵活性更高一些,扩展性强,开发者可以对etty本身进行二次开发,重量级的Tomcat原本便支持过多特性,成本比Jetty要高很多。
3、灵活性
4、其它比较
Jetty的应用更加快速,修改简单,对新的Servlet规范的支持较好。
Tomcat目前应用比较广泛,对JavaEE和Servlet的支持更加全面,很多特性会直接集成进来。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
在筋骨堂治疗腰椎间盘突出一个疗程后已有好转,隔了三、四天又疼上了... 美的3⃣️匹柜机空调为什么不制热是什么原因? 小票打印机不出字的原因及解决方法如何解决小票打印机无法打印字的问题... 电脑打单打印机出不了小票超市收银台电脑键盘怎么用 交易房屋如何分类 城市规划用途分类该怎么做 规划用途的分类 ...打火机散件设备公司 值得信赖么 ?是不是《骗子》皮包公司? 希望给予... 哈尔滨农垦太阳神打火机散件厂是否骗人 有没有人知道网上那些打火机加工的广告是不是真是可靠?做打火机反销... 使用jetty配置 开发web应用 丑怎么组词 肃宁天然气公司给停气怎么在上一级投诉 上海哪里可以查到停气信息 华为中学生平板用什么样的耳机 百度贴吧名称,怎么才能加进空格? 灬浅丶絔弃 灬浅丶絔囄和灬浅丶絔弃 灬浅丶絔离 那个比较好看点那。。。请大家给给意见。。谢谢! 泥塑大公鸡? 刚成立一家化妆品公司,想在网路和微信上作推广,该怎么做? 斯普特尼克1号 网上口语课程 我想学英语口语,有好的办法吗? 普特易兽药治疗什么病 求大神告知一些提高雅思口语成绩的技巧 普特结合什么意思 在wps文字中怎么把页面分页显示 燃气热水器打不著火的十种原因及解决办法 新买万和燃气热水器把火力和温度调高可以打着火,调低了就打不着火是怎么回事,是不是水压不够啊? 我家的一台燃气热水器,用了一段时间后,现在将火力和水温调小后,就点不燃火了,是什么原因。 如何制作好看的微信H5页面 躺尸   [tǎng shī]什么意思?近义词和反义词是什么?英文翻译是什么? 海信电视怎么看新剧 如何切换操作系统 office在mac上的许可证会怎么样 奇迹暖暖真的可以用Q币冲吗 我想用Q币充值奇迹暖暖,(手机QQ),但是找不到,这是为什么? 梦见亲人生日有什么预兆?是什么意思? cad如何画倒角,cad里的倒角怎么画? CAD怎么绘制矩形倒角? 泰语数字读写教程 泰语数字0 库乐队怎么用钢琴 友谊的友情作文 关于友情的作文开头结尾 梦见爸爸坐牢有什么预兆?是什么意思? 实达650怎么调节高速模式 财务贴息证明怎么写 人工中耳是什么 贴息贷款联审通过情况 如何在CAD中找到已存的图形? bsp测试工程师怎么测试