[Web]Apache/Tomcat/JBOSS/Neginx/lighttpd/Jetty的理解

八 29th, 2011

Apache/Tomcat/JBOSS/Neginx/lighttpd/Jetty的理解

最近,正接触Web服务的应用,常常被Apache/Tomcat/JBOSS/Neginx/lighttpd/Jetty这些服务器搞得晕晕的,所以找些资料,整理了下。

1. Apache和Tomcat

Apache是Web服务器,专门提供HTTP服务的,以及相关配置的服务器。它支持静态页,也支持PHPcgiperl,如果需要处理Java的话,它就无能为力啦。

Tomcat是Apache组织在符合Java EE的JSP、Servlet标准下开发的一个JSP服务器,它是一个应用(Java)服务器,它只是一个Servlet(JSP也翻译成Servlet)容器,可以认为是Apache的扩展,但是可以独立于Apache运行。Tomcat支持动态网页,比如(ASP,PHP,CGI,JSP,Servlet)等。一般我们会使用Apache+Tomcat,Apache只是作为一个转发,对JSP是由Tomcat来处理的.

2. 为什么需要Apache+Tomcat+JDK

  • Apache是一个Web服务器环境程序,启用他可以作为Web服务器使用,不过只支持静态网页 ,如(ASP, PHP,CGI,JSP)等动态网页的就不行.
  • 在Apache环境下运行JSP的话就需要一个解释器来执行JSP网页,而这个JSP解释器就是Tomcat.
  • 因为JSP需要连接数据库的话就要jdk来提供连接数据库的驱程, 所以要运行JSP的Web服务器平台就需要Apache+Tomcat+JDK.

  • 3. Apache+Tomcat+JDK整合的好处

  • 如果客户端请求的是静态页面,则只需要Apache服务器响应请求。
  • 如果客户端请求动态页面,则是Tomcat服务器响应请求。
  • 因为JSP是服务器端解释代码的,这样整合就可以减少Tomcat的服务开销。

  • 4. 为什么要集成Tomcat和Apache

    Tomcat的最主要的功能是提供Servlet/JSP容器,尽管它也可以作为独立的Java Web 服务器,但在对静态资源(如HTML 文件或图像文件)的处理速度,以及提供的Web 服务器管理功能方面Tomcat都不如其他专业的HTTP服务器,如IIS和Apache服务器。
    因此在实际应用中,常常把Tomcat 与其他HTTP 服务器集成。对于不支持Servlet/JSP的HTTP服务器,可以通过Tomcat服务器来运行Servlet/JSP组件。
    当Tomcat与其他HTTP服务器集成时,Tomcat服务器的工作模式通常为进程外的Servlet容器,Tomcat 服务器与其他HTTP 服务器之间通过专门的插件来通信。

5. Servlet容器

  • 独立的Servlet容器
    在这种模式下,Tomcat可以作为独立的Java Web服务器,Servlet容器作为构成Web服务器的一部分而存在。独立的Servlet容器是Tomcat的默认模式
  • 进程内的Servlet容器
    Servlet容器分为Web服务器插件和Java容器两部分。Web服务器插件在其他Web服务器内部地址空间打开一个Java虚拟机,Java容器在此JVM中运行Servlet。如有客户端发出调用Servlet的请求,插件获得对此请求的控制并将它传递给Java容器。进程内Servlet容器对于单进程、多进程的服务器非常适合,可以提供较高的运行速度,单缺乏伸缩性。
  • 进程外的Servlet容器
    Servlet容器分为Web服务器插件和java容器两部分。Web服务器插件在其他Web服务器的外部地址空间打开一个JVM。java容器在此JVM中运行Servlet。如有客户端发出调用Servlet的请求,插件获得对此请求的控制并将它传递给java容器。进程外Servlet容器对客户请求的响应速度不如进程内容器,但进程外容器具有更好的伸缩性和稳定性。
    Tomcat 既可作为独立的Servlet容器,也可和其他的Web服务器集成,作为进程内的Servlet容器或者进程外的Servlet容器。

    6. Jetty和Tomcat

    Jetty采用业界最优的开源Java Web引擎, 将Java社区中下载量最大,用户数最多,标准支持最完备的Tomcat内核作为其Servlet容器引擎,并加以审核和调优。

Jetty通过使用APR和Tomcat本地技术的混合模型来解决Tomcat的诸多不足,混合技术模型从最新的操作系统技术里提供了最好的线程和事件处理。

Jetty具有可扩展性,性能参数匹配甚至超越了本地Apache HTTP服务器或者IIS。Jetty还能够提供数据库连接池服务,不仅支持 JSP 等 Java 技术,同时还支持其他 Web 技术的集成,譬如 PHP、.NET 两大阵营。

Tomcat和Jetty的区别:
  • 单纯的Tomcat性能有限,在很多地方表现有欠缺,如活动连接支持、静态内容、大文件和HTTPS等。
  • Tomcat的另一大缺点是它是一个受限的集成平台,仅能运行Java应用程序。
  • 企业在使用时Tomcat,往往还需同时部署Apache Web Server以与之整合。此配置较为繁琐,且不能保证性能的优越性。

    Tomcat和Jetty的相同点:

    它们都是web容器,作用基本一致,都作为jboss的集成的web容器(有tomcat版的jboss、也有jetty版的jboss,即4.0以后的版本).

7. Nginx / Apache / lighttpd 的区别

Lighttpd: Lighttpd是一个具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。
lighttpd是众多OpenSource轻量级的web server中较为优秀的一个。支持FastCGI, CGI, Auth, 输出压缩(output compress), URL重写, Alias等重要功能。Lighttpd使用fastcgi方式运行php,它会使用很少的PHP进程响应很大的并发量。

Nginx: 十分轻量级的HTTP服务器, 一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器. Nginx以事件驱动的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理、负载平衡。其拥有匹配 Lighttpd的性能,同时还没有Lighttpd的内存泄漏问题,而且Lighttpd的mod_proxy也有一些问题并且很久没有更新。但是Nginx并不支持cgi方式运行,原因是可以减少因此带来的一些程序上的漏洞。所以必须使用FastCGI方式来执行PHP程序。

Apache 的特性:

  • 几乎可以运行在所有的计算机平台上.
  • 支持最新的http/1.1协议
  • 简单而且强有力的基于文件的配置(httpd.conf).
  • 支持通用网关接口(cgi)
  • 支持虚拟主机.
  • 支持http认证.
  • 集成perl.
  • 集成的代理服务器
  • 可以通过web浏览器监视服务器的状态, 可以自定义日志.
  • 支持服务器端包含命令(ssi).
  • 支持安全socket层(ssl).
  • 具有用户会话过程的跟踪能力.
  • 支持fastcgi
  • 支持java servlets
  • 三种服务器搭配的建议方案:
    Apache    后台服务器(主要处理php及一些功能请求 如:中文url)
    Nginx       前端服务器(利用它占用系统资源少得优势来处理静态页面大量请求)
    Lighttpd   图片服务器
    总体来说,随着nginx功能得完善将使他成为今后web server得主流。

    8. 服务器分类

    Apache / Nginx / lighttpd 是一类,都是专用的WEB服务器,Tomcat / Jetty 是一类,是servlet/jsp应用服务器+WEB服务器 ,Jboss则是一个大框架,也是应用服务器 + WEB服务器,但是Tomcat 或则Jetty 都是它的一部分。





除非注明,本站文章均为原创。本文基于 BY-NC-SA 协议进行授权,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名 metaboy(包含链接).

本文链接地址: http://blog.wangyuxiong.com/archives/51274

订阅本站:http://www.wangyuxiong.com/feed

分类: 工具推荐         标签: , , , , ,
目前还没有任何评论.

无觅相关文章插件,快速提升流量