前言:

    转载请标明出处。

    本文主要描述几种主流web服务器的功能介绍,对网上资料进行一些整理,同时加入部分自己理解,以便在不同的场景下,选择不同的web服务器。

     本文结构分为基本概念、主流web服务器介绍、主流web容器介绍


基本概念(个人通俗理解):

    1. 应用服务器:通过各种协议,包括http协议,把业务逻辑暴露给客户端应用程序,应用程序服务器的客户端(包含有图形用户界面(GUI)的)可能会运行在一台PC、一个Web服务器或者甚至 是其它的应用程序服务器上。

    2. web服务器:WEB服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务。

      1) 应用层 使用 HTTP协议
      2)HTML( 标准通用标记语言 下的一个应用)文档格式。
      3) 浏览器 统一资源定位器 URL

     3. web应用服务器:web服务器与应用服务器存在一定的交集,如:静态新闻网站的web服务器,就是提供各种新闻信息,其信息之间没有先后逻辑关系,是一个比较纯粹的web服务器;而很多公司的OA、ERP等系统,可以通过浏览器进行访问,但是其页面的跳转、局部页面的动态刷新都存在着一定先后逻辑关系,这类系统的web服务器,就承担了应用服务器的角色,因此可以称为web应用服务器

     4. web容器
     容器是一种服务调用规范框架,WEB 容器给处于其中的应用程序组件,如:JSP、SERVLET,提供一个环境,使 JSP,SERVLET 直接跟容器中的环境变量交互,不必关注其它系统问题,将最终的结果解释HTML文档格式,提供给web服务器。当前主流的web容器,如:tomcat、weblogic、jboss等,其本身就已经具备了web服务器的功能


            


主流web服务器介绍:

    全球仍旧超半数的活跃网站使用Apache Web服务器,市场份额为52.18%。Nginx排名第二,市场份额升至14.19%。Microsoft第三,11.37%。Google第四,至8.33%

          

    1. Apache

    Apache的特点是简单、速度快、性能稳定,并可做代理服务器来 使用。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此, 在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。

    2.Nginx

    Nginx是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.Nginx以事件驱动的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理、负载平衡。其拥有匹配 Lighttpd的性能,同时还没有Lighttpd的内存泄漏问题,而且Lighttpd的mod_proxy也有一些问题并且很久没有更新。

    Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率。它支持内核Poll模型,能经受高负载的考验,有报告表明能支持高达 50,000个并发连接数。

    Nginx具有很高的稳定性。其它HTTP服务器,当遇到访问的峰值,或者有人恶意发起慢速连接时,也很可能会导致服务器物理内存耗尽频繁交换,失去响应,只能重启服务器。

    Nginx支持热部署。它的启动特别容易, 并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。

    3.IIS

    IIS是一种Web服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器, 分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联网和局域网)上发布信息成了一件很容易的事。它提供 ISAPI(Intranet Server API)作为扩展Web服务器功能的编程接口;同时,它还提供一个Internet数据库连接器,可以实现对数据库的查询和更新。IIS提供了一个图形界面的管理工具,称为 Internet服务管理器,可用于监视配置和控制Internet服务。

    4. lighttpd:

     Lighttpd是一个具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点,使用fastcgi方式运行php,它会使用很少的PHP进程响应很大的并发量。




server

Apache

Nginx     

Lighttpd

Proxy代理

非常好

非常好

一般

Rewriter

非常好

一般

Fcgi

不好

非常好

热部署

不支持

支持

不支持

系统压力比较

很大

很小

比较小

稳定性

非常好

不好

安全性

一般

一般

技术支持

非常好

很少

一般

静态文件处理

一般

非常好

Vhosts虚拟主机

支持

不支持

支持

反向代理

一般

非常好

一般

Session sticky

支持

不支持

不支持


  建议方案:

Apache 后台服务器(主要处理php及一些功能请求 如:中文url)

Nginx  前端服务器(利用它占用系统资源少得优势来处理静态页面大量请求)

Lighttpd 图片服务器

总体来说,随着nginx功能得完善将使他成为今后web server得主流。


主要web容器介绍

   本文中web容器主要是指具有web容器功能的web服务器,主要都是Java和Asp.net,php,python等貌似一般不需要单独的应用服务器


   1. Tomcat 免费

    Tomcat是Apache鼎力支持的Java Web应用服务器,由于它优秀的稳定性以及丰富的文档资料,广泛的使用人群,从而在开源领域受到最广泛的青睐。Tomcat不仅仅是一个Servlet容器,它也具有传统的Web服务器的功能:处理Html页 面。但是与Apache相比,它的处理静态Html的能力就不如Apache。我们可以将Tomcat和Apache集成到一块,让Apache处理静态 Html,而Tomcat处理Jsp和Servlet。这种集成只需要修改一下Apache和Tomcat的配置文件即可


   2. JBoss 免费(文档收费)

   Jboss作为Java EE应用服务器,它不但是Servlet容器,而且是EJB容器,从而受到企业级开发人员的欢迎,从而弥补了Tomcat只是一个Servlet容器的缺憾,已经被RedHat收购。

   而JBoss Web采用业界最优的开源Java Web引擎, 将Java社区中下载量最大,用户数最多,标准支持最完备的Tomcat内核作为其Servlet容器引擎,并加以审核和调优。JBoss在Tomcat的基础上,对其进行本地化,将Tomcat 以内嵌的方式集成到 JBoss 中。JBoss Web通过使用APR和Tomcat本地技术的混合模型来解决Tomcat的诸多不足。JBoss Web达到了可扩展性,性能参数匹配甚至超越了本地Apache HTTP服务器或者IIS。譬如JBoss Web能够提供数据库连接池服务,不仅支持 JSP 等 Java 技术,同时还支持其他 Web 技术的集成,譬如 PHP、.NET 两大阵营。


   3.Jetty

   Jetty 目前的是一个比较被看好的 Servlet 引擎,它的架构比较简单,也是一个可扩展性和非常灵活的应用服务器,它有一个基本数据模型,这个数据模型就是 Handler(注意不是容器,放在这里是因为其经常会被与Tomcat进行比较),所有可以被扩展的组件都可以作为一个 Handler,添加到 Server 中,Jetty 就是帮你管理这些 Handler。

   Tomcat 在处理少数非常繁忙的连接上更有优势,也就是说连接的生命周期如果短的话,Tomcat 的总体性能更高。而 Jetty 刚好相反,Jetty 可以同时处理大量连接而且可以长时间保持这些连接。例如像一些 web 聊天应用非常适合用 Jetty 做服务器,像淘宝的 web 旺旺就是用 Jetty 作为 Servlet 引擎。

   详细信息,参考:http://www.ibm.com/developerworks/cn/java/j-lo-jetty/

        http://www.ibm.com/developerworks/cn/java/j-lo-tomcat1/index.html


   4. Resin

    Resin也仅仅是一个Servlet容器,然而由于它优秀的运行速度,使得它在轻量级Java Web领域备受喜爱,特别是在互联网Web服务领域,众多知名公司都采用其作为他们的Java Web应用服务器,譬如163、ku6等。


   5.glassfish

   glassfish是Sun公司推出的Java EE服务器,是一个免费、开放源代码的应用服务,它实现了Java EE 5,Java EE 5 平台包括了以下最新技术:EJB 3.0、JSF 1.2、Servlet 2.5、JSP 2.1、JAX-WS 2.0、JAXB 2.0、 Java Persistence 1.0、Common Annonations 1.0、StAX 1.0等.­

   支持集群,通过内存中会话状态复制,增强了部署体系结构的可用性与可伸缩性,它对集群有着很好的支持,可以简单到通过添加机器,就可轻松的提高网站的带负载能力,在解析能力方面,它对html的吞吐能力与apache服务器不分上下,就是tomcat所不能比的,支持目录部署,热部署,解决了tomcat对热部署能力的缺陷.在版本方面做的更加人性化,有开发时用的简化版,专门用于部署web项目的版本,还要完全符合j2ee标准的版本.

­

  6.IBM WebSphere 收费

    WebSphere Application Server 是 一 种功能完善、开放的Web应用程序服务器,是IBM电子商务计划的核心部分,它是基于 Java 的应用环境,用于建立、部署和管理 Internet 和 Intranet Web 应用程序。

   IBM 将提供 WebSphere 产品系列,通过提供综合资源、可重复使用的组件、功能强大并易于使用的工具、以及支持 HTTP 和 IIOP 通信的可伸缩运行时环境,来帮助这些用户从简单的 Web 应用程序转移到电子商务世界。


   7. BEA WebLogic Server 收费

     是一种多功能、基于标准的web应用服务器,为企业构建自己的应用提供了坚实的基础。各种应用开发、部署所有关键性的任务,无论是集成各种系统和数据库, 还是提交服务、跨 Internet 协作,起始点都是 BEA WebLogic Server。由于 它具有全面的功能、对开放标准的遵从性、多层架构、支持基于组件的开发,基于 Internet 的企业都选择它来开发、部署最佳的应用。 

   BEA WebLogic Server 为构建集成化的企业级应用提供了稳固的基础,它们以 Internet 的容量和速度,在连网的企业之间共享信息、提交服务,实现协作自动化。BEA WebLogic Server 的遵从 J2EE 、面向服务的架构,以及丰富的工具集支持,便于实现业务逻辑、数据和表达的分离,提供开发和部署各种业务驱动应用所必需的底层核心功能。


资料参考:

   http://www.199it.com/archives/201639.html

   http://blog.csdn.net/newnewman80/article/details/8809560

   http://www.cnblogs.com/itech/archive/2009/08/18/1548860.html

   http://www.blogjava.net/daniel-tu/archive/2008/12/29/248883.html

   http://m.oschina.net/blog/178358

   http://www.bianceng.cn/Programming/Java/201101/22999.htm

   http://soft.zdnet.com.cn/software_zone/2008/0919/1138298.shtml

         http://www.ibm.com/developerworks/cn/java/j-lo-jetty/index.html





Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐