关于Apache/Tomcat/JBOSS/Neginx/lighttpd/Jetty等一些常见服务器的区别比较和理解
blog.csdn/allenlinrui/article/details/6675998
分类: 各种容器 2011-08-11 17:07 30人阅读 评论(0) 收藏 举报
今天是个很丰富的日子,早上一上班,第一个听到的惊爆消息就是楷子得了肠胃炎,一大早去医院挂水了…… 随后风胜和笑虎也没来,后来得知他们俩去去华星现代产业园参加培训,内容是关于Apache与Nginx的。于是乎,我非常感兴趣地查了一下培训用的PPT,并跟旁边的俊牧了解了一下关于服务器的一些东西……
整个交流过程中,我发现好多概念已经被我遗忘了,有的也很模糊,于是乎,我还是决定到网上查一下,并记录下来!
下面是令人纠结的正文……
先说Apache和Tomcat的区别:
Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。
在Apache基金会里面ApacheServer永远会被赋予最大的支持,毕竟大儿子最亲嘛,而Apache的开源服务器软件Tomcat同样值得关注,毕竟Tomcat是开源免费的产品,用户会给予最大的支持。但是经常在用Apache和Tomcat等这些服务器时,你总感觉还是不清楚他们之间有什么关系,在用Tomcat的时候总出现Apache,总感到迷惑,到底谁是主谁是次,因此特意在网上查询了一些这方面的资料,总结了一下。
解析一:
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基金会里面ApacheServer永远会被赋予最大的支持,毕竟大儿子最亲嘛,而Apache的开源服务器软件Tomcat同样值得关注,毕竟Tomcat是开源免费的产品,用户会给予最大的支持。但是经常在用Apache和Tomcat等这些服务器时,你总感觉还是不清楚他们之间有什么关系,在用Tomcat的时候总出现Apache,总感到迷惑,到底谁是主谁是次,因此特意在网上查询了一些这方面的资料,总结了一下。
解析一:
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是Apache组织在符合Java EE的JSP、Servlet标准下开发的一个JSP服务器.
Runtime Runtime(); Process p=null; try { ("notepad"); } catch(Exception ex) { System.out.println("fffff"); }
◆两者都是Apache组织开发的
◆两者都有HTTP服务的功能
◆两者都是免费的
不同点:
Apache是专门用了提供HTTP服务的,以及相关配置的(例如虚拟主机、URL转发等等)
Tomcat是Apache组织在符合Java EE的JSP、Servlet标准下开发的一个JSP服务器.
Runtime Runtime(); Process p=null; try { ("notepad"); } catch(Exception ex) { System.out.println("fffff"); }
解析二:
Apache是一个Web服务器环境程序,启用他可以作为Web服务器使用,不过只支持静态网页
Apache是一个Web服务器环境程序,启用他可以作为Web服务器使用,不过只支持静态网页
如(ASP,PHP,CGI,JSP)等动态网页的就不行。
如果要在Apache环境下运行JSP的话就需要一个解释器来执行JSP网页,而这个JSP解释器就是Tomcat,为什么还要JDK呢?因为JSP需要连接数据库的话就要jdk来提供连接数据库的驱程,所以要运行JSP的Web服务器平台就需要Apache+Tomcat+JDK。
整合的好处是:
◆如果客户端请求的是静态页面,则只需要Apache服务器响应请求。
◆如果客户端请求动态页面,则是Tomcat服务器响应请求。
◆因为JSP是服务器端解释代码的,这样整合就可以减少Tomcat的服务开销。
C是一个结构化语言,如谭老爷子所说:它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制),而对于C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。
解析三:
如果要在Apache环境下运行JSP的话就需要一个解释器来执行JSP网页,而这个JSP解释器就是Tomcat,为什么还要JDK呢?因为JSP需要连接数据库的话就要jdk来提供连接数据库的驱程,所以要运行JSP的Web服务器平台就需要Apache+Tomcat+JDK。
整合的好处是:
◆如果客户端请求的是静态页面,则只需要Apache服务器响应请求。
◆如果客户端请求动态页面,则是Tomcat服务器响应请求。
◆因为JSP是服务器端解释代码的,这样整合就可以减少Tomcat的服务开销。
C是一个结构化语言,如谭老爷子所说:它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制),而对于C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。
解析三:
Apache:侧重于HTTP Server
Tomcat:侧重于Servlet引擎,如果以Standalone方式运行,功能上与Apache等效 , 支持JSP,但对静态网页不太理想;
Apache是Web服务器,Tomcat是应用(Java)服务器,它只是一个Servlet(JSP也翻译成Servlet)容器,可以认为是Apache的扩展,但是可以独立于Apache运行。
Tomcat:侧重于Servlet引擎,如果以Standalone方式运行,功能上与Apache等效 , 支持JSP,但对静态网页不太理想;
Apache是Web服务器,Tomcat是应用(Java)服务器,它只是一个Servlet(JSP也翻译成Servlet)容器,可以认为是Apache的扩展,但是可以独立于Apache运行。
PS:至于为什么要集成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 服务器之间通过专门的插件来通信。
1. 1)独立的Servlet容器
在这种模式下,Tomcat可以作为独立的Java Web服务器,Servlet容器作为构成Web服务器的一部分而存在。独立的Servlet容器是Tomcat的默认模式
在这种模式下,Tomcat可以作为独立的Java Web服务器,Servlet容器作为构成Web服务器的一部分而存在。独立的Servlet容器是Tomcat的默认模式
2.
3. 2)进程内的Servlet容器
Servlet容器分为Web服务器插件和Java容器两部分。Web服务器插件在其他Web服务器内部地址空间打开一个Java虚拟机,Java容器在此JVM中运行Servlet。如有客户端发出调用Servlet的请求,插件获得对此请求的控制并将它传递给Java容器。进程内Servlet容器对于单进程、多进程的服务器非常适合,可以提供较高的运行速度,单缺乏伸缩性。
Servlet容器分为Web服务器插件和Java容器两部分。Web服务器插件在其他Web服务器内部地址空间打开一个Java虚拟机,Java容器在此JVM中运行Servlet。如有客户端发出调用Servlet的请求,插件获得对此请求的控制并将它传递给Java容器。进程内Servlet容器对于单进程、多进程的服务器非常适合,可以提供较高的运行速度,单缺乏伸缩性。
4.
5. 3)进程外的Servlet容器
Servlet容器分为Web服务器插件和java容器两部分。Web服务器插件在其他Web服务
Servlet容器分为Web服务器插件和java容器两部分。Web服务器插件在其他Web服务
器的外部地址空间打开一个JVM。java容器在此JVM中运行Servlet。如有客户端发出调用Servlet的请求,插件获得对此请求的控制并将它传递给java容器。进程外Servlet容器对客户请求的响应速度不如进程内容器,但进程外容器具有更好的伸缩性和稳定性。
Tomcat 既可作为独立的Servlet容器,也可和其他的Web服务器集成,作为进程内的Servlet容器或者进程外的Servlet容器。
在说Tomcat和Jetty的区别:
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器(主要用于解析servlet/JSP,同时具备http服务),技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可。其运行时占用的系统资源小,扩展性好,且支持负载平衡与邮件服务等开发应用系统常用的功能。作为一个小型的轻量级应用服务器,Tomcat在中小型系统和并发访问用户不是很多的场合下被普遍使用,成为目前比较流行的Web 应用服务器。
而Jetty采用业界最优的开源Java Web引擎, 将Java社区中下载量最大,用户数最多,标准支持最完备的Tomcat内核作为其Servlet容器引擎,并加以审核和调优。单纯的Tomcat性
而Jetty采用业界最优的开源Java Web引擎, 将Java社区中下载量最大,用户数最多,标准支持最完备的Tomcat内核作为其Servlet容器引擎,并加以审核和调优。单纯的Tomcat性
能有限,在很多地方表现有欠缺,如活动连接支持、静态内容、大文件和HTTPS等。除了性能问题,Tomcat的另一大缺点是它是一个受限的集成平台,仅能运行Java应用程序。企业在使用时Tomcat,往往还需同时部署Apache Web Server以与之整合。此配置较为繁琐,且不能保证性能的优越性。
Jetty通过使用APR和Tomcat本地技术的混合模型来解决Tomcat的诸多不足。混合技术模型从最新的操作系统技术里提供了最好的线程和事件处理。结果,Jetty达到了可扩展性,性能参数匹配甚至超越了本地Apache HTTP服务器或者IIS。譬如Jetty能够提供数据库连接池服务,不仅支持 JSP 等 Java 技术,同时还支持其他 Web 技术的集成,譬如 PHP、.NET 两大阵营。
标准化是减小技术依赖风险,保护投资最好的方式。Jerry率先支持全系列JEE Web标准,从根本上保证了应用“一次开发,到处运行”的特点,使应用成品能方便地在Jetty和其他Java Web服务器之间轻易迁移。
Jetty通过使用APR和Tomcat本地技术的混合模型来解决Tomcat的诸多不足。混合技术模型从最新的操作系统技术里提供了最好的线程和事件处理。结果,Jetty达到了可扩展性,性能参数匹配甚至超越了本地Apache HTTP服务器或者IIS。譬如Jetty能够提供数据库连接池服务,不仅支持 JSP 等 Java 技术,同时还支持其他 Web 技术的集成,譬如 PHP、.NET 两大阵营。
标准化是减小技术依赖风险,保护投资最好的方式。Jerry率先支持全系列JEE Web标准,从根本上保证了应用“一次开发,到处运行”的特点,使应用成品能方便地在Jetty和其他Java Web服务器之间轻易迁移。
相同点:
都是web容器,作用基本一致,都作为jboss的集成的web容器(有tomcat版的jboss、也有jetty版的jboss,即4.0以后的版本)
区别:
静态网页和动态网页的概念和区别 实现机制稍有不同,Jetty性能更优
Nginx / Apache / lighttpd 的区别:
1. lighttpd
Lighttpd是一个具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。lighttpd是众多OpenSource轻量级的web server中较为优秀的一个。支持FastCGI, CGI, Auth, 输出压缩(output compress), URL重写, Alias等重要功能。
Lighttpd使用fastcgi方式运行php,它会使用很少的PHP进程响应很大的并发量。
Fastcgi的优点在于:
· 从稳定性上看, fastcgi是以独立的进程池运行来cgi,单独一个进程死掉,系统可以很轻易的丢弃,然后重新分配新的进程来运行逻辑.
· 从安全性上看, fastcgi和宿主的server完全独立, fastcgi怎么down也不会把server搞垮,
· 从性能上看, fastcgi把动态逻辑的处理从server中分离出来, 大负荷的IO处理还是留给宿主server, 这样宿主server可以一心一意作IO,对于一个普通的动态网页来说, 逻辑处理可能只有一小部分, 大量的图片等静态IO处理完全不需要逻辑程序的参与(注1)
· 从扩展性上讲, fastcgi是一个中立的技术标准, 完全可以支持任何语言写的处理程序(php,)
2.apache
apache是世界排名第一的web服务器, 根据netcraft()所作的调查,世界上百分之五十以上的web服务器在使用apache.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论