Jetty与Tomcat的区别

由于没有研究过Tomcat,所以区别不好说,这里暂时就网上的一些言论和自己所了解到的一些总结下(摘自于许令波)。

Jetty 的架构从前面的分析可知,它的所有组件都是基于 Handler 来实现,当然它也支持 JMX。但是主要的功能扩展都可以用 Handler 来实现。可以说 Jetty 是面向 Handler 的架构,就像 Spring 是面向 Bean 的架构,iBATIS 是面向 statement 一样,而 Tomcat 是以多级容器构建起来的,它们的架构设计必然都有一个“元神”,所有以这个“元神“构建的其它组件都是肉身。

从设计模板角度来看 Handler 的设计实际上就是一个责任链模式,接口类 HandlerCollection 可以帮助开发者构建一个链,而另一个接口类 ScopeHandler 可以帮助你控制这个链的访问顺序。另外一个用到的设计模板就是观察者模式,用这个设计模式控制了整个 Jetty 的生命周期,只要继承了 LifeCycle 接口,你的对象就可以交给 Jetty 来统一管理了。所以扩展 Jetty 非常简单,也很容易让人理解,整体架构上的简单也带来了无比的好处,Jetty 可以很容易被扩展和裁剪。

相比之下,Tomcat 要臃肿很多,Tomcat 的整体设计上很复杂,前面说了 Tomcat 的核心是它的容器的设计,从 Server 到 Service 再到 engine 等 container 容器。作为一个应用服务器这样设计无口厚非,容器的分层设计也是为了更好的扩展,这是这种扩展的方式是将应用服务器的内部结构暴露给外部使用者,使得如果想扩展 Tomcat,开发人员必须要首先了解 Tomcat 的整体设计结构,然后才能知道如何按照它的规范来做扩展。这样无形就增加了对 Tomcat 的学习成本。不仅仅是容器,实际上 Tomcat 也有基于责任链的设计方式,像串联 Pipeline 的 Vavle 设计也是与 Jetty 的 Handler 类似的方式。要自己实现一个 Vavle 与写一个 Handler 的难度不相上下。表面上看,Tomcat 的功能要比 Jetty 强大,因为 Tomcat 已经帮你做了很多工作了,而 Jetty 只告诉,你能怎么做,如何做,有你去实现。

单纯比较 Tomcat 与 Jetty 的性能意义不是很大,只能说在某种使用场景下,它表现的各有差异。因为它们面向的使用场景不尽相同。从架构上来看 Tomcat 在处理少数非常繁忙的连接上更有优势,也就是说连接的生命周期如果短的话,Tomcat 的总体性能更高。

而 Jetty 刚好相反,Jetty 可以同时处理大量连接而且可以长时间保持这些连接。例如像一些 web 聊天应用非常适合用 Jetty 做服务器,像淘宝的 web 旺旺就是用 Jetty 作为 Servlet 引擎。

另外由于 Jetty 的架构非常简单,作为服务器它可以按需加载组件,这样不需要的组件可以去掉,这样无形可以减少服务器本身的内存开销,处理一次请求也是可以减少产生的临时对象,这样性能也会提高。另外 Jetty 默认使用的是 NIO 技术在处理 I/O 请求上更占优势,Tomcat 默认使用的是 BIO,在处理静态资源时,Tomcat 的性能不如 Jetty。

转载于:https://www.cnblogs.com/gym333/p/5127941.html

Jetty与Tomcat的区别 转相关推荐

  1. 浅聊Jetty和Tomcat的区别

    Jetty和Tomcat的区别 Jetty和Tomcat是目前全球范围内最著名的两款开源的webserver/servlet容器. Jetty 是一个开源的servlet容器,它为基于Java的web ...

  2. tomcat和undertow、jetty、netty的区别

    tomcat简介 在说undertow和tomcat区别之前,先说下tomcat是什么(如果知道了可以跳过哦!) Tomcat:免费开源,轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被 ...

  3. Undertow,Tomcat和Jetty服务器之间的区别

    Undertow,Tomcat和Jetty服务器配置详解与性能测试 本文文章是通过研究时下比较流行的Java框架spring boot引发的思考,希望大家能一起学习.undertow,jetty和to ...

  4. jetty与tomcat区别

    相同点 1.tomcat与jetty都是一种servlet引擎,他们都支持标准的servlet规范和javaEE规范 不同点 1.架构比较 jetty相比tomcat更为简单 jetty架构是基于Ha ...

  5. Jetty 与 Tomcat 比较,及性能分析

    主流java的web容器,主要是Tomcat, jboss, jetty, resin.由于以前我们主要用的是jboss4.0.5,但jbosse用的servlet容器是tomcat5.5,所以只进行 ...

  6. apache/nginx/tomcat的区别

    根据[1] ①:Nginx的并发性要比apache好很多: ②:nginx属于轻量级服务器软件,apache属于重量级软件: ③:nginx在处理静态页的效率要比apache好很多,apache在处理 ...

  7. Jetty 与 Tomcat

    Tomcat 的关键指标有吞吐量.响应时间.错误数.线程池.CPU 以及 JVM 内存 线程池中的线程数量不足会影响吞吐量和响应时间: 但是线程数太多会耗费大量 CPU: 当内存不足时会触发频繁地 G ...

  8. J2EE进阶(二十四)JBoss Web和 Tomcat的区别

    J2EE进阶(二十四)JBoss Web和 Tomcat的区别 在Web2.0的浪潮中,各种页面技术和框架不断涌现,为服务器端的基础架构提出了更高的稳定性和可扩展性的要求.近年来,作为开源中间件的全球 ...

  9. spring-boot-starter-undertow和tomcat的区别

    什么是tomcat 在说undertow和tomcat区别之前,先说下tomcat是什么(如果知道了可以跳过哦!) Tomcat:免费开源,轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下 ...

最新文章

  1. pycharm 查看代码行数_【收藏】提高PyCharm效率的10个小技巧
  2. 五. H.264的码流封装格式
  3. java中的compareTo函数
  4. C# ListView 简单命令例子
  5. Android 系统性能优化(42)---Android代码内存优化建议-Android资源篇
  6. 正在做鸡肋事情的你,准备好了奔赴下一个战场么?
  7. abaqus2021安装及fortran关联
  8. 基于MATLAB的柱状图画法及特殊柱状图画法总结
  9. 常见游戏外挂分类及原理概述
  10. OneNote使用技巧 - 5.快速设置首行缩进
  11. 物联网:GPRS和NB-IOT
  12. 2022世界杯看球指南
  13. 目标跟踪常用的视频库
  14. matlab 小波 清浊音,matlab语音信号处理如何判别清浊音?
  15. 2020年,阿里最新的java程序员面试题目含答案带你吊打面试官
  16. 北航计算机组成原理课程设计-2020秋 【系列完结】Verilog或ISE高级特性与自动化测试
  17. @Transactional使用
  18. 利用html2canvas 和 jspdf 实现html转pdf html转图片
  19. Java基础笔记_6_类和对象_成员变量
  20. 店盈通: 拼多多店运营怎么选择推广关键词?

热门文章

  1. 高级排序之分割法(以某数为基准分割)
  2. bat脚本 git pull_Git遇到错误时如何解决的一些坑
  3. mysql 使用update 1064错误的原因和解决方法
  4. 现在这个时代变了,区块链,数字货币才是最火的项目
  5. ****** 四 ******、软设笔记【数据结构】-排序、插入排序、选择排序
  6. Centos开放查看端口 防火墙关闭打开
  7. c# 在mongo中查询经纬度范围
  8. centos的yum源换成阿里云
  9. 通过binlog恢复mysql备份之前的数据
  10. 银行卡扫描(基于swift)