一文总结应用、Web、HTTP服务器,Apache、Nginx,Tomcat、IIS、JBoss、Glassfish等区别

苏高峰
2023-12-01

一个学习的总结,或者说是汇总,有些链接给出的观点过时,已按照自己的理解经过修改编辑;

web服务器

Web服务器的基本功能就是提供Web信息浏览服务,响应客户端的浏览器请求。因为Web服务器主要支持的协议就是HTTP,所以通常情况下HTTP服务器和WEB服务器是相等的。待考:支持除HTTP之外的协议的web服务器?
不支持事务处理或数据库连接池,但它可以配置各种策略来实现容错性和可扩展性,例如负载平衡,缓冲,集群。
IIS、Apache、Tomcat都可以属于Web服务器。

应用服务器

应用程序服务器(简称应用服务器),就像文件服务器为很多用户提供文件一样,应用程序服务器让多个用户可以同时使用应用程序(通常是客户创建的应用程序)。应用服务器是通过组件的应用程序接口(API)把内部逻辑暴露给客户端应用程序的,例如基于J2EE应用程序服务器的EJB组件模型。此外,应用程序服务器可以管理自己的资源,例如安全,事务处理,资源池,和消息。就象Web服务器一样,应用程序服务器配置多种可扩展和容错技术。
大多数应用服务器包含web服务器功能,即静态资源的处理能力,只是有性能问题。
Weblogic、WebSphere都属于应用服务器。
Tomcat准确说是servlet日期,轻量级的应用服务器。

HTTP服务器

基本上可以理解为web服务器,只是协议指定为HTTP/HTTPS。

IIS

微软早期的IIS,就是一个纯粹的Web服务器。后来嵌入ASP引擎,可以解释VBScript和JScript服务器端代码,这时兼作应用服务器。确切地说,它是兼有一点应用服务器功能的Web服务器。

Apache

Apache是纯粹的Web服务器,对HTML页面具有强大的解释能力,但是不能解释嵌入页面内的服务器端脚本代码(JSP/Servlet)。经常与Tomcat配对使用。

Tomcat

Tomcat 服务器是一个免费的开放源代码的Web应用服务器,Apache Jakarta 核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现。
技术先进、性能稳定,其运行时占用的系统资源小,扩展性好,且支持负载平衡与邮件服务等开发应用系统常用的功能,还在不断的改进和完善中。作为一个小型的轻量级应用服务器,Tomcat在中小型系统和并发访问用户不是很多的场合下被普遍使用,成为目前比较流行的Web应用服务器。

Tomcat中,可以利用Servlet提供的事件监听器功能,来对你的应用或者Session实行监听。可以集成SSL实现安全传输。提供JNDI支持。

提供Realm支持。Realm类似于Unix里面的group。在Unix中,一个group对应着系统的一定资源,某个group不能访问不属于它的资源。Tomcat用Realm来对不同的应用(类似系统资源)赋给不同的用户(类似group)。没有权限的用户则不能访问这个应用。Tomcat提供三种Realm:

  1. JDBCRealm,这个Realm将用户信息存在数据库里,通过JDBC获得用户信息来进行验证。
  2. JNDIRealm,用户信息存在基于LDAP的服务器里,通过JNDI获取用户信息。
  3. MemoryRealm,用户信息存在一个xml文件里面,上面讲的manager应用验证用户时即使用此种Realm。

通过Realm可以方便地对访问某个应用的客户进行验证。

与传统的桌面应用程序不同,Tomcat中的应用程序是一个WAR(Web Archive)文件。WAR是Sun提出的一种Web应用程序格式,与JAR类似,也是许多文件的一个压缩包。这个包中的文件按一定目录结构来组织:通常其根目录下包含有Html和Jsp文件或者包含这两种文件的目录,另外还会有一个WEB-INF目录,这个目录很重要。通常在WEB-INF目录下有一个web.xml文件和一个classes目录,web.xml是这个应用的配置文件,而classes目录下则包含编译好的Servlet类和Jsp或Servlet所依赖的其它类(如JavaBean)。通常这些所依赖的类也可以打包成JAR放到WEB-INF下的lib目录下,当然也可以放到系统的CLASSPATH中,但那样移植和管理起来不方便。
在Tomcat中,应用程序的部署很简单,你只需将你的WAR放到Tomcat的webapp目录下,Tomcat会自动检测到这个文件,并将其解压。你在浏览器中访问这个应用的Jsp时,通常第一次会很慢,因为Tomcat要将Jsp转化为Servlet文件,然后编译。编译以后,访问将会很快。另外Tomcat也提供了一个应用:manager,访问这个应用需要用户名和密码,用户名和密码存储在一个xml文件中。通过这个应用,辅助于Ftp,你可以在远程通过Web部署和撤销应用。当然本地也可以。

Tomcat也可以与其它一些软件集成起来实现更多的功能。如与上面提到的JBoss集成起来开发EJB,与Cocoon(Apache的另外一个项目)集成起来开发基于Xml的应用,与OpenJMS集成起来开发JMS应用。

Apache & Tomcat

Apache只支持静态网页,不支持动态网页,是http/web server;
tomcat支持动态的,比如servlet等,servletr容器,也可以作为静态服务器使用,对静态网页不太理想。tomcat是应用(java)服务器。
一般使用apache+tomcat的话,apache只是作为一个转发,对jsp/servlet的处理是由tomcat来处理的。
apche可以支持phpcgiperl,但是要使用java的话,你需要tomcat在apache后台支撑,将java请求由apache转发给tomcat处理。
两者都有HTTP服务的功能,不同点:
Apache是专门提供HTTP服务的,以及相关配置的(如虚拟主机、URL转发等)
Tomcat是Apache组织在符合J2EE的JSP、Servlet标准下开发的一个JSP服务器

应用、Web、HTTP服务器

这篇文章讲述典型的Web服务器的工作原理。
Web服务器和应用服务器有什么区别?EAR和WAR部署包之间的不同?
参考stackoverflow这个问题。在大多数情况下,Web服务器和应用服务器基本等价的。Tomcat(多被认为是Web服务器)怎么会有能力去运行企业级的应用程序。这样的话,Tomcat到底是Web服务器还是应用服务器?
类比于JPA和Hibernates,那么区分Web服务器和应用服务器就会变得非常简单。stackoverflow另一个问题
JavaEE规范,就是一套规则,定义一些接口。任何一个JavaEE服务器都需要服从这些规范,并实现这些接口。这里有“官方认证”的JavaEE服务器的清单。如果你把你的企业级应用程序(就是指使用到JPA,EJB或者其他JavaEE组件功能的应用程序)部署到一个符合JavaEE规范的服务器上,那么真正的应用服务器本身是不需要你的部署包包含对JavaEE组件进行实现的类库的。如果部署的时候你必须要通过自己的应用程序中自带jar文件来支持这些JavaEE组件,那你用的就是Web服务器,就像是Tomcat。

如果你在你的程序里使用JPA,然后你打算把程序部署到JBoss AS7服务器上,你的程序本身是不需要包含支持JPA实现的jar包的。但是如果你想把程序部署到Tomcat服务器上,你就必须要把实现JPA功能的jar包放到你的lib库中,然后再一起部署过去。这就是为什么JBoss AS7是应用服务器而Tomcat是Web服务器的原因。另一个关键的区别是,Tomcat上不能部署EAR文件,而只能部署WAR文件。

JBoss

开源版已更名为WildFly;JBoss是一套可以基于J2EE框架的全套解决方案,包括JBoss/Server,JBoss/spyderMQ,JBoss/Jaws,JBoss/Zola,JBoss/Zoap,JBoss/Castor,JBoss/Tomcat。
而JBoss Web采用业界最优的开源Java Web引擎, 将Java社区中下载量最大,用户数最多,标准支持最完备的Tomcat内核作为其Servlet容器引擎,并加以审核和调优。单纯的Tomcat性能有限,在很多地方表现有欠缺,如活动连接支持、静态内容、大文件和HTTPS等。除性能问题,Tomcat的另一大缺点是它是一个受限的集成平台,仅能运行Java应用程序。企业在使用时Tomcat,往往还需同时部署Apache Web Server以与之整合。此配置较为繁琐,且不能保证性能的优越性。

JBoss在Tomcat的基础上,对其进行本地化,将Tomcat 以内嵌的方式集成到 JBoss 中。JBoss Web通过使用APR和Tomcat本地技术的混合模型来解决Tomcat的诸多不足。混合技术模型从最新的操作系统技术里提供最好的线程和事件处理。 结果,JBoss Web达到了可扩展性,性能参数匹配甚至超越本地Apache HTTP服务器或者IIS。譬如JBoss Web能够提供DBCP服务,不仅支持 JSP 等 Java 技术,同时还支持其他 Web 技术的集成,譬如 PHP、.NET 两大阵营。

标准化是减小技术依赖风险,保护投资最好的方式。JBoss Web率先支持全系列JEE Web标准,从根本上保证应用“一次开发,到处运行”的特点,使应用成品能方便地在JBoss Web和其他Java Web服务器之间轻易迁移。

集多功能于一身,性能卓越,JBoss Web服务器集多种功能于一身。其关键功能包括:完全支持Java EE、高度的扩展性、快速的静态内容处理、群集、OpenSSL、URL重写和综合性。

JBoss Web服务器具有原生特性和强大的可扩展性,可支持多种并非基于Java的服务器内容处理技术,可同时运行JSP, Servlet, Microsoft .NET , PHP 及 CGI,为其提供一个单一的、高性能的企业级部署平台。
与Tomcat 相比,JBoss Web在静态资源访问方面性能优越。JBoss Web支持两种组件模式——纯Java和Native I/O。在Native组件的支持下,动态运行不会受到任何影响,而静态资源的访问利用操作系统本身提供的0拷贝传送,CPU消耗降低,响应时间缩短, 吞吐率大大提高,混合的连接模式支持最大达到10000个并发客户端的同时访问,与Apache Web服务器相当。部署于高性能的操作系统,可利用JBoss Web对纯Java和Native I/O两种模式的支持,使得应用在开发时可随时跨平台敏捷迁移,而部署于高性能的操作系统相关的Native环境。由于JBoss Web较好地解决了静态资源的访问性能问题,可在解决方案中把它直接作为强大的LVS的分发对象,和RHEL负载均衡系统结合,形成理论上无限线性扩展的 负载均衡场景。

OpenSSL是业界最为快速和安全的开源传输组件,可借助操作系统和硬件的特性实现高效的安全承载。JBoss Web集成OpenSSL,可提供高效的安全传输服务,使得安全机制更上台阶。研究表明,JBoss Web中的SSL性能比单纯的Tomcat快四倍。

URL重写功能可缩短URL,隐藏实际路径提高安全性,易于用户记忆和键入,及被搜索引擎收录。Tomcat 不具备URL重写功能,JBoss Web则可提供一个灵活的URL rewriting操作引擎,支持无限个规则数和规则条件。URL可被重写以支持遗留的URL错误处理,或应对服务器不时产生的其他问题。

JBoss Web既可单独运行,也可无缝嵌入JBoss应用服务器,成为JBoss中间件平台的一部分。不仅后台服务调用的性能将得以提升,也可利用以下JBoss平台的特性提升Web应用功能:
基于JGroups的多种集群方案的支持
基于Arjuna技术的JTA和JTS的事务处理支持
优化的线程池和连接池的支持
基于JMX 控制台的基本管理支持和JBoss On的高级管理维护支持
基于JBoss AOP技术的面向方面架构的支持
Hibernate服务组件的支持

Glassfilsh

Sun公司推出的Java EE服务器,免费、开放源代码的应用服务。

WebLogic

WebLogic是bea公司出品的一个application server,确切的说是一个基于j2ee架构的中间件,webserver是用来构建网站的必要软件用来解析发布网页等功能,它是用纯java开发的。weblogic本来不是由bea发明的,是它从别人手中买过来,然后再加工扩展。目前weblogic在世界application server市场上占有最大的份额,其他还有象IBM的websphere,免费的tomcat、resin等中间件。
BEA WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。
BEA WebLogic Server拥有处理关键Web应用系统问题所需的性能 、可扩展性和高可用性。
与BEA WebLogic Commerce ServerTM配合使用, BEA WebLogic Server可为部署适应性个性化电子商务应用系统提供完善的解决方案。
BEA WebLogic Server具有开发和部署关键任务电子商务Web应用系统 所需的多种特色和优势,包括:
1)领先的标准
对业内多种标准的全面支持,包括EJB、JSB、JMS、JDBC、XML和WML,使Web应用系统的实施更为简单。
2)无限的可扩展性
BEA WebLogic Server以其高扩展的架构体系闻名于业内,包括客户机连接的共享、资源pooling以及动态网页和EJB组件群集。
3)快速开发
凭借对EJB和JSP的支持,以及BEA WebLogic Server 的Servlet组件架 构体系,可加速投放市场速度。这些开放性标准与WebGain Studio配合时,可简化开发,并可发挥已有的技能,迅速部署应用系统。
4)部署更趋灵活
BEA WebLogic Server的特点是与领先数据库、操作系统和Web服务器 紧密集成。
5)关键任务可靠性
其容错、系统管理和安全性能已经在全球数以千记的关键任务环境中得以验证。
6)体系结构
BEA WebLogic Server是专门为企业电子商务应用系统开发的。企业电子商务应用系统需要快速开发,并要求服务器端组件具有良好的灵活性和安全性,同时还要支持关键任务所必需的扩展、性能、和高可用性。BEA WebLogic Server简化了可移植及可扩展的应用系统的开发,并为其它应用 系统和系统提供了丰富的互操作性。
凭借其出色的群集技术,BEA WebLogic Server拥有最高水平的可扩展 性和可用性。BEA WebLogic Server既实现了网页群集,也实现了EJB组件 群集,而且不需要任何专门的硬件或操作系统支持。网页群集可以实现透明的复制、负载平衡以及表示内容容错,如Web购物车;组件群集则处理复杂的复制、负载平衡和EJB组件容错,以及状态对象(如EJB实体)的恢复。
无论是网页群集,还是组件群集,对于电子商务解决方案所要求的可扩展性和可用性都是至关重要的。共享的客户机/服务器和数据库连接以及数据缓存和EJB都增强了性能表现。这是其它Web应用系统所不具备的

应用服务器 v.s. Tomcat

应用服务器提供更多的J2EE特征,如EJB,JMS,JAAS等,支持Servlet。而Tomcat则功能没有那么强大,它不提供EJB等支持。但如果与JBoss(一个开源的应用服务器)集成到一块,则可以实现J2EE的全部功能。很多中小应用不需要采用EJB等技术,Servlet已经足够,这时如果用应用服务器就有些浪费。而Tomcat短小精悍,配置方便,能满足需求。

GlassFish v.s. JBoss

Glassfish 和 JBoss 都是 J2EE 应用服务器,都可以作为 EJB 容器来运行 EJB 的。Glassfish 是 Java EE 的参考实现(是Oracle家产品),Java EE 最新的版本都能在 Glassfish 中得到体现。

如果是企业级的复杂应用,无论从稳定性,成熟度,还是从产品的完整性来看,JBoss无疑是比较好的选择。
GlassFish的闪光点在热部署,支持OSGI,而且内核变的很小,启动速度非常快。

JBoss实现所有j2ee的规范和api,它的优势在于具有良好的性价比,支持的标准新,版本快,有开放源码的所有优点,支持热部署。
可以在开发阶段采用GlassFish,真实运行环境采用JBoss。

总结

很勉强的总结:

serverweb serverweb servletweb app serversupport reverse proxy
apache(httpd)YY
IISYYY
NginxYY
TomcatYY
JettyYY
WebLogicYYY
WebSphereYYY
GlassFishYYY
JBossYYY

参考

 类似资料: