Apache/Tomcat/JBOSS/Jetty/Nginx区别 与选择

2023-11-17

总结:Apache/Tomcat/JBOSS/Nginx区别 .
1、Apache是Web服务器,Tomcat是应用(Java)服务器。Tomcat在中小型系统和并发访问用户不是很多的场合下被普遍使用。Apache支持静态页,Tomcat支持动态的。
2、Jetty:Tomcat内核作为其Servlet容器引擎,并加以审核和调优.大中型系统可以应用。能够提供数据库连接池服务,还支持其他 Web 技术的集成,譬如PHP、.NET 两大阵营.
3、JBoss是一个管理EJB的容器和服务器,但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。
4、Nginx是目前性能最高的HTTP服务器。其特点是占有内存少,并发能力强。Nginx代码完全用C语言从头写成。

所以:Apache--Nginx;Tomcat--Jetty;JBoss。这三组可以组合了。

一、Apache+Tomcat

Apache支持静态页,Tomcat支持动态的,比如Servlet等,

一般使用Apache+Tomcat的话,Apache只是作为一个转发,对JSP的处理是由Tomcat来处理的。

Apche可以支持PHPcgiperl,但是要使用Java的话,你需要Tomcat在Apache后台支撑,将Java请求由Apache转发给Tomcat处理。

Apache是Web服务器,Tomcat是应用(Java)服务器,它只是一个Servlet(JSP也翻译成Servlet)容器,可以认为是Apache的扩展,但是可以独立于Apache运行。

这两个有以下几点可以比较的:

◆两者都是Apache组织开发的
◆两者都有HTTP服务的功能
◆两者都是免费的

不同点

Apache是专门用了提供HTTP服务的,以及相关配置的(例如虚拟主机、URL转发等等)

Tomcat是符合Java EE的JSP、Servlet标准下开发的一个JSP服务器:Tomcat在中小型系统和并发访问用户不是很多的场合下被普遍使用。

二、Jetty

Jetty采用业界最优的开源java Web引擎,将Java社区中下载量最大,用户数最多,标准支持最完备的Tomcat内核作为其Servlet容器引擎,并加以审核和调优。单纯的Tomcat性能有限,在很多地方表现有欠缺,如活动连接支持、静态内容、大文件和HTTPS等。除了性能问题,Tomcat的另一大缺点是它是一个受限的集成平台,仅能运行Java应用程序。企业在使用时Tomcat,往往还需同时部署Apache WebServer以与之整合。此配置较为繁琐,且不能保证性能的优越性。
Jetty通过使用APR和Tomcat本地技术的混合模型来解决Tomcat的诸多不足。混合技术模型从最新的操作系统技术里提供了最好的线程和事件处理。结果,Jetty达到了可扩展性,性能参数匹配甚至超越了本地Apache HTTP服务器或者IIS。譬如Jetty能够提供数据库连接池服务,不仅支持 JSP 等 Java 技术,同时还支持其他 Web 技术的集成,譬如php、.NET 两大阵营。

三、Nginx

Nginx具有很高的稳定性。其它HTTP服务器,当遇到访问的峰值,或者有人恶意发起慢速连接时,也很可能会导致服务器物理内存耗尽频繁交换,失去响应,只能重启服务器。例如当前apache一旦上到200个以上进程,web响应速度就明显非常缓慢了。而Nginx采取了分阶段资源分配技术,使得它的CPU与内存占用率非常低。nginx官方表示保持10,000个没有活动的连接,它只占2.5M内存,所以类似DOS这样的攻击对nginx来说基本上是毫无用处的。就稳定性而言,nginx比lighthttpd更胜一筹。

四、JBoss

JBoss一个基于J2EE的开放源代码的应用服务器.JBoss是一个管理EJB的容器和服务器,但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。

JBoss与Web服务器在同一个Java虚拟机中运行  JBoss运行后后台管理界面,Servlet调用EJB不经过网络,从而大大提高运行效率,提升安全性能。

Jetty和Tomcat的选择:按场景而定

Jetty和Tomcat为目前全球范围内最著名的两款开源的webserver/servlet容器。由于它们的实现都遵循Java Servlet规范,一个Java Web应用部署于两款容器的任意一个皆可。但选择哪个更优?也许这得看场景。 

近期很多人关注Jetty,也许主要是因为GAE放弃了Tomcat而选择了Jetty。于是,以很直接的想法,Jetty更符合GAE的需求、即云环境的需求,亦分布式环境的需求。

那Jetty与Tomcat比较,有哪差异呢? 自己简单做了些调研,也请救了熟悉Tomcat和Jetty的朋友和师兄,得出以下结论:

1)Jetty更轻量级。这是相对Tomcat而言的。

由于Tomcat除了遵循Java Servlet规范之外,自身还扩展了大量JEE特性以满足企业级应用的需求,所以Tomcat是较重量级的,而且配置较Jetty亦复杂许多。但对于大量普通互联网应用而言,并不需要用到Tomcat其他高级特性,所以在这种情况下,使用Tomcat是很浪费资源的。这种劣势放在分布式环境下,更是明显。换成Jetty,每个应用服务器省下那几兆内存,对于大的分布式环境则是节省大量资源。而且,Jetty的轻量级也使其在处理高并发细粒度请求的场景下显得更快速高效。

2)Jetty更灵活,体现在其可插拔性和可扩展性,更易于开发者对Jetty本身进行二次开发,定制一个适合自身需求的Web Server。

相比之下,重量级的Tomcat原本便支持过多特性,要对其瘦身的成本远大于丰富Jetty的成本。用自己的理解,即增肥容易减肥难。

3)然而,当支持大规模企业级应用时,Jetty也许便需要扩展,在这场景下Tomcat便是更优的。

总结:Jetty更满足公有云的分布式环境的需求,而Tomcat更符合企业级环境。

GAE放弃了Tomcat,选择了Jetty,正是因为Jetty的体积和灵活性,Google可以更好地定制一个足够小的Java Web Server为其GAE服务。

而Tomcat为满足更多的企业级需求,增加了JEE特性,在服务企业级应用时,它的支持优于Jetty。然而,即使Tomcat性能略优于Jetty,但对于大多非企业级应用而言,配置复杂体积庞大的Tomcat显得过于重量级。

正因为这个,实验室的云平台实现便是把云平台本身的门户网站放在Tomcat内,而云台托管的Java Web应该是部署在Jetty内的

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Apache/Tomcat/JBOSS/Jetty/Nginx区别 与选择 的相关文章

  • pycharm使用anaconda

    一 Anaconda 1 简介 Anaconda就是可以方便的对的python包进行管理 并且可以通过可视化界面对虚拟环境进行管理 Anaconda包含大部分python库 且自带jupyter notebook等一系列应用 实在是学习py

随机推荐

  • Anaconda Prompt 如何切换工作路径

    Anaconda Prompt 默认路径 默认路径是你的用户名路径 切换路径 Anaconda Prompt在默认路径下 无法直接cd到其他盘 只能在根目录下进行切换盘符 在用户名路径下 输入cd 切换到根目录 返回根目录 使用cd 切换到
  • Office 之将 PPT 图片完美插入 Word

    将 PPT 图片完美插入 Word 原始文档 https www yuque com lart tools wdg4ww 前言 PPT 提供了简单易用的基本绘图支持 而 Word 则提供了专业的文档撰写和处理的支持 但这些工具并不是独立且互
  • 国内版ChatGPT插件来了,快速帮你阅读分析一本书,拆书神器

    好消息 我们都知道 自 OpenAI 开放插件后 其插件数量一直在迅速增加 据国外网友统计 最新的插件总数已经有 430 个 与 5 月 13 日刚开放时的 74 个相比 增长超过 400 而现在 文心一言网页版也正式添加了插件机制 普通用
  • 数据库操作不再困难,MyBatis动态Sql标签解析

    系列文章目录 MyBatis缓存原理 Mybatis的CachingExecutor与二级缓存 Mybatis plugin 的使用及原理 MyBatis四大组件Executor StatementHandler ParameterHand
  • 网页设计,前端大作业-个人主页网站

    个人主页网站 下载链接在文末 个人介绍 比较简单的一个网站适合初学者学习使用 点我下载
  • 简单有效,如何彻底卸载删除AlibabaProtect.exe

    简单有效 如何彻底卸载删除AlibabaProtect exe Process Hacker https www isharepc com 33781 html
  • Java常量池理解和经典总结

    Java常量池理解和经典总结 一 相关知识 1 什么是常量 第一种 是一个值 这个值本身 我们就叫做常量 整型常量 1024 实型常量 1 024 字符常量 g c w 字符串常量 gcw 逻辑常量 true false 这只是我们平时我们
  • JPEG数据格式分析

    添加链接描述 参考如让 感谢原创分享 JPEG数据分析 分析对象是一幅8x8的jpg图片 如下 图片已被放大并被虚线切分 这里写图片描述 用windows照片查看器查看图片详细信息 信息 参数 大小 667字节 尺寸 8x8 宽度 8像素
  • 【干货】Spring远程命令执行漏洞(CVE-2022-22965)原理分析和思考

    前言 上周网上爆出Spring框架存在RCE漏洞 野外流传了一小段时间后 Spring官方在3月31日正式发布了漏洞信息 漏洞编号为CVE 2022 22965 本文章对该漏洞进行了复现和分析 希望能够帮助到有相关有需要的人员进一步研究 1
  • 《热题100》字符串、双指针、贪心算法篇

    思路 对于输入的的字符串 只有三种可能 ipv4 ipv6 和neither ipv4 四位 十进制 无前导0 小于256 ipv6 八位 十六进制 无多余0 00情况不允许 不为空 class Solution def solve sel
  • 区块链扩容系列之Plasma MVP

    以太坊低TPS一直被诟病 最近V神提出一种将以太坊TPS提升到500的方案 一经发表就被BM调侃 可见以太坊低TPS目前确实严重阻碍了以太坊的发展 连V神都不得不经常发声 我们知道以太坊低TPS的一个关键原因是以太坊采用POW 因而将部分交
  • selenium爬虫检测之如何避免对isTrusted属性检测

    如何避免对isTrusted属性检测 检测原理 什么是isTrusted属性 在web api官方网站mozilla org有如下解释 Event接口的 isTrusted 属性是一个只读属性 它是一个布尔值 Boolean 当事件是由用户
  • java中访问数组元素的方法

    1 使用普通 for 循环 这是最常见的遍历数组的方法 使用传统的 for 循环语法 通过索引来访问数组中的每个元素 int arr 1 2 3 4 5 for int i 0 i lt arr length i int element a
  • 【线上死锁分析】由index_merge引发的死锁事件

    1 事情背景 背景由于更换新的短信供应商 同事之前可能对这块业务不太熟 原本是回执ID recordId 一个手机号一个 但是同事接的时候将这个批量发送接口只设置了一个recordId 导致了多个手机号共用了一个recordId 2 线上d
  • Linux系统发生故障时,所有文件会以只读方式挂载

    解决办法 执行mount o remount rw 让文件可以修改 原因 挂载磁盘时 没有写fstab文件 或者fstab文件里写的是磁盘名称而不是uuid
  • 解决问题:EXT4 filefield 文件上传在IE8上返回状态无效,弹出下载页面

    解决描述 EXT4 filefield 以form 文件上传 基于IE8浏览器 不管上传成功与否 返回状态无效 即success function fp o 方法无效 并弹出下载页面 原代码情况如下 1 EXT4前台视图层view view
  • civetweb框架学习和使用(一)

    背景 CivetWeb基于Mongoose项目 是一个易于使用 功能强大的C C 嵌入式Web服务器 在2013年8月16日 在编写和分发此项目所依据的原始代码后 Mongoosed的许可证已经更改了 因此 CivetWeb已从上一个MIT
  • Windows下在后台运行jar包

    为什么80 的码农都做不了架构师 gt gt gt 新建一个bat文件 输入 echo off start javaw jar xxx jar exit 执行这个批处理程序就可以在后台运行jar包了 转载于 https my oschina
  • FIddler之Fiddler移动端抓包

    前言 笔者今天的这篇文章呢 想使用通俗易懂的话语 让大家明白以下内容 什么是抓包哪些场景需要用到抓包Fiddler抓包的原理怎样使用Fiddler进行移动端抓包 一 抓包 包 Packet 是TCP IP协议通信传输中的数据单位 一般也称
  • Apache/Tomcat/JBOSS/Jetty/Nginx区别 与选择

    总结 Apache Tomcat JBOSS Nginx区别 1 Apache是Web服务器 Tomcat是应用 Java 服务器 Tomcat在中小型系统和并发访问用户不是很多的场合下被普遍使用 Apache支持静态页 Tomcat支持动