tomcat与nginx,apache的区别是什么?

Tomcat与Nginx、Apache的关系如下图。由配送中心选择Apache、Nginx中的某一辆货车将包裹送给客户。虽然Apache、Nginx两辆车的用途是一样的,仔细区分它们两还是有区别的,比如:货物装载的速度、方式不一样,Apache有水箱可以直接运送活鱼而Nginx没有。

Tomcat有点像装活鱼的特殊包装。经过特殊包装打包的活鱼就可以通过Nginx和Apache运送到用户手中。另外,使用Tomcat包含了一种慢速的配送服务,所以配送中心一般都采用Nginx、Apache等配送。

通过上面的比方引申Apache、Nginx、Tomcat的实际用途

Apache全称Apache HTTP Server,它是Apache软件基金会的一个开放源码的网页伺服服务器软件。

Apache支持模块多,性能稳定。Apache本身是静态解析(静态页面),适合静态的HTML、图片等,但可以通过扩展脚本、模块来支持动态页面等。Apche可以支持PHP、CGI、Perl,但要使用Java就需要Tomcat,Java请求会通过Apache转发给Tomcat处理;

Nginx同样也是一款开源的HTTP Server,它是由俄罗斯人编写的轻量级HTTP服务。

Nginx是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP、POP3、SMTP代理服务器。Nginx本身不支持生成动态页面,很大部分Web服务器使用Nginx,主要通过Nginx的反向代理来实现负载均衡器。

Apache、Nginx本质上就是一种运用在HTTP服务器上某种应用程序,它们通过绑定服务器的IP地址并监听某一个TCP端口来接收并处理HTTP请求,这样用户(一般通过IE、Chrome、Firefox等发送请求并显示内容)就能够通过HTTP协议来获取服务器上的网页(HTML+CSS样式)、文档(PDF、txt、rar等)、音频、视频等资源。如下图:

不仅Apache和Nginx,绝大多数编程语言所包含的类库中也可以实现简单的HTTP服务供开发者使用,如:Java HTTP Server、Python SimpleHTTPServer。

Apache和Nginx的对比

Nginx使用异步非阻塞型事件驱动的方法来处理请求,而Apache则是通过同步阻塞型的方法来处理请求。

Apache接收一个请求后,就会创建一个进程,每个进程内单线程。对于一个负载相对较高的网站来说,256的进程,也就是256个线程。线程处理请求时是同步阻塞模式,会一直等待该请求读取程序文件(IO)(同步),执行业务逻辑,返回给客户端,所有操作完成之后才能处理下一个请求(阻塞)。

如果服务器已经达到256的极限,那么接下去的访问就需要排队。这也就是为什么某些服务器负载不高的原因了。

而Ngnix接收一个请求后,不会等待这个请求的文件读取操作完成之后才接收下一个请求,它不会等待这个请求的后续的处理结果。而是会马上循环处理下一个请求(不阻塞)。请求的程序文件执行完成之后,会主动通知该线程,不用你主动去等待或者轮询查看(异步)。最后返回给客户端。

这样做,每个请求过来就不需要等待很长的时间排队,而是马上就能接收,开始进行处理了。等处理完成之后,会主动通知回调这个线程进行数据返回。

基于上述特性Nginx更轻量级,比Apache占用更少的内存及资源抗并发,Nginx静态处理性能比Apache高3倍以上。在高并发下Nginx能保持低资源低消耗高性能高度模块化的设计。但Apache组件比Nginx多,对PHP的支持比较简单,Apche的Rewrite也比Nginx强大一些。

Tomcat用于扩充Apache和Nginx的动态性能

从上面我们知道了Apache和Nginx的优势在于静态解析,那么动态解析就会交给其他模块处理,如Tomcat。

Tomcat是由Apache软件基金会旗下Jakarta项目开发的Servlet容器,实现对Servlet和JavaServer Page(jsp)的支持。Tomcat本身也包含了HTTP服务,也可单做独立的Web服务,但用的不多。

Tomcat一共设计了 4 种容器,它们分别为Engine、Host、Context、Wrapper,各个容器组件之间的关系是由大到小,即父子关系,它们之间关系形成一个树状的结构,它们的实现类都实现了 Container 接口。

总结

如果Apache、Nginx、Tomcat打一局LOL,Apache和Nginx像是冲在最前面的英雄。而Tomcat攻击性能弱,它主要负责打辅助,奶前面的英雄。

Nginx并发性好,CPU、内存占用低。但如果rewrite频繁,那还是选择Apache好一些,Apache在处理动态请求更有优势。


以上个人浅见,欢迎批评指正。

认同我的看法,请点个赞再走,感谢!

喜欢我的,请关注我,再次感谢!

——–

Tomcat与Nginx、Apache都是web server。但是它们在功能上和使用定位上,还是有区分的

什么是web server?

顾名思义,web server就是提供web服务的server,即web服务器或网站服务器,主要提供网上信息浏览服务。当在浏览器输入一个网址之后,浏览器会把这个HTTP请求发送给对应的web服务器,web服务器经过相关处理,会返回HTTP响应,浏览器把接收到的响应数据经过渲染,就变成我们看到的网页了。

在web服务器上完成相关处理的是web服务,它是一组运行在web服务器上的应用程序软件。打个比方,web服务器就是你的电脑,web服务软件就是电脑上运行的QQ之类的应用程序。基本上web服务器是专用的,只会运行web服务程序软件,所以web服务和web服务器可以理解为同一个事物。

目前常用的web服务器软件有:apache、nginx、Tomcat、iis 、gws

什么是 Apache?

Apache隶属于Apache软件基金会的一个开放源码的web服务器软件,由于其开源免费、跨平台和安全性被广泛使用,是世界使用排名第一的Web服务器软件,是中小型web服务的主流。目前常用的是Apache 2.2系列。

Apache优点:

  • 功能强大。Apache自带很多功能模块,可以根据需求编译自己需要的模块
  • 配置简单。Apache的配置文件非常简单,通过简单的配置可以实现强大的功能
  • 性能稳定。Apache在高负载请求下性能卓越

Apache缺点:

  • 自身只支持静态网页,对于jsp、php等动态网页不支持,可配置动静分离。
  • Apache是以进程为基础的机构,比线程系统开销更大。

什么是 Nginx?

nginx是一个有俄罗斯人开发的免费开源、轻量级、高性能 Web 服务器软件,是世界使用排名第二的Web服务器软件。由于其高性能和轻量级的特性,nginx的使用量不断在上升,冲击着apache第一的宝座。是大型网站web服务的主流。在功能上,nginx不但是一个优秀的web服务软件,还具有反向代理功能和缓存功能。

nginx优点:

  • 支持高并发。能支持几万的并发连接
  • 消耗资源少。处理静态网页时,比apache占用更低的系统资源
  • 配置简单。与Apache相比配置还更简单。

nginx的缺点:

  • nginx本身不支持处理动态网页。nginx可以通过配置动静分离实现处理动态网页,处理php网页,需要安装FastCGI进程管理器,将php请求转发给FastCGI进程管理器处理。处理jsp网页,可以将请求转发给对应的Java服务器。
  • nginx是主进程+多个子线程。这既是nginx性能卓越的优点所在,也存在潜在的缺点,当nginx主进程挂掉之后,整个nginx服务器将会停止提供服务。

什么是 Tomcat?

Tomcat是Apache软件基金会Jakarta项目的一个核心项目,是一个开源免费的web服务器。Tomcat一直是中小企业动态web服务的主流,常用作解析Java程序的容器。目前常用的是Tomcat6和Tomcat7系列。

Tomcat的优点:

  • 支持servlet和jsp,可以很好的处理动态网页
  • 跨平台。在window系统和Linux系统都能很好的运行

Tomcat的缺点:

  • 处理静态网页与apache和nginx相比效率不高。
  • 可配置性不强。

Tomcat、nginx、apache的区别和联系

  • Tomcat和apache的区别和联系

由于Apache处理静态网页性能更好,Tomcat一般用于处理动态网页,Tomcat和Apache在功能上有一定的互补性,所以在nginx崛起之前,常常将Tomcat和Apache进行整合配合使用,在Apache上配置动静分离

客户端请求静态页面时,由Apache响应请求;当客户端请求动态页面时,则由Apache将请求转发给Tomcat服务器,由Tomcat服务器进行处理。保障了应用的可拓展性和安全性。在nginx崛起之后,nginx逐渐替代Apache的功能。

  • nginx和apache的区别和联系

nginx同样都是性能卓越的web服务器。但是nginx作为后起之秀,相比Apache有了更多的改进。

在性能上,nginx占用系统资源更少,能支持更多的并发连接,达到更高的访问效率

在功能上,nginx还是一个性能堪比haproxy的反向代理软件,甚至nginx部署配置更加简单、方便。

所以说nginx是一款很有发展潜力的web服务器软件,未来一定可以超越Apache,称为世界排名第一的web服务器软件

总结

nginx由于高性能、轻量级和支持反向代理功能,常用做七层负载均衡器。Apache历史悠久、性能稳定,常用作web服务器,可与nginx搭配使用。Tomcat支持处理jsp动态网页,常用作解析Java程序的容器,可与nginx搭配使用。当应用的环境为window操作系统时,使用的web服务器软件是iis,也可以与nginx搭配使用。

文|技术猿小黄

图|来源于网络

我是技术猿小黄,很高兴为您回答,如果您喜欢我的回答,可以关注我,点个赞,谢谢

如果您有什么想法或建议,欢迎下方留言评论。

——–

Apache和Nginx是Web服务器业务中的佼佼者。它们共同占了Web流量的近50%。作为两个最普遍和最受欢迎的开源Web服务器,它们朝着一个共同的目标努力,即照顾各种工作负载,以满足Windows和UNIX等现代操作系统在不同环境下的需求。

尽管Apache是Web服务器业务中的知名开源项目,但Nginx拥有如此之多的网站,以及它管理Web流量的速率,这是无可挑剔的。

什么是Apache?

Apache HTTP Server或简称为“ Apache”,是由一群开发人员在Apache Software Foundation的赞助下开发和维护的开源高性能Web服务器软件。这是一个协作式Web服务器项目,旨在根据当前的HTTP标准创建功能强大,安全有效的商业级Web服务器。这是一个联合项目,由遍布全球的志愿者开放社区管理,目的是使用Internet开发HTTP Web服务器及其随附文档。自1995年问世以来,Apache一直是Web服务器市场的领先领导者。它在2009年达到了1亿个网站。

由于Apache的电源兼容性和多平台支持,它仍然是服务器管理员中的首选。尽管Apache可以在几乎所有主要操作系统(包括Windows,Linux,UNIX,OSX和NetWare)上高效运行,但通常与Linux结合使用。它的体系结构简单性和灵活性使其成为管理员首选的选择,因为早期社区对创新和尝试新技术有一定的需求,而Apache正是它的核心。Apache成为了互联网的支柱骨干。

什么是Nginx?

目前,Apache的强大地位已受到其潜在竞争对手Nginx的打击。Nginx也是最早获得全球认可的竞争者之一,它还是旨在满足现代Web需求的可靠Web服务器平台。Nginx由俄罗斯开发人员Igor Sysoev开发,是一个免费的开放源代码HTTP服务器,也可以用作反向代理,邮件代理和常规TCP / UDP代理服务器。

它致力于以最少的资源有效地为大量并发用户提供服务。在无法处理大量Web流量时候,Nginx就起到了作用。

尽管Nginx在许多方面无法与功能丰富的Apache竞争,但其异步状态和单线程体系结构使其成为选择Apache的明智选择。由于其资源效率,轻量级体系结构和高并发性,它通常被管理员首选。最好的部分是,它可以部署为独立的HTTP服务器,以使用最少的资源来改进Web服务器的体系结构。

加上其以有限的硬件资源快速有效地服务静态流量的能力,无与伦比。另外,Nginx也可以成为潜在的冲击吸收者,它将保护Apache服务器免受突然的流量高峰和安全漏洞的影响。简而言之,Nginx提供了所有基本的HTTP服务器功能,而不会牺牲其使用有限的硬件资源处理多个请求的能力。

Apache和Nginx之间的区别

  1. 尽管Apache和Nginx都是Web服务器业务的两个主要参与者,它们跨越Internet上50%的Web流量,但它们彼此不同。Apache是开放源代码的HTTP服务器,而Nginx是高性能的异步Web服务器和反向代理服务器。
  2. Apache HTTP服务器中的支持,错误修复和应用程序开发由来自世界各地的用户社区管理和维护,并由Apache Software Foundation协调。Nginx的支持和维护由一家成立于2011年的同名公司负责。
  3. 两者之间的主要区别是两者处理客户端请求的方式。尽管Apache提供了多种处理客户端请求和Web流量的多处理模块,但Nginx却被设计为以最少的硬件资源同时处理多个客户端请求。
  4. 在Apache HTTP服务器中,单个线程仅与一个连接相关联,而Nginx中的单个线程可以处理多个连接。所有进程与其他连接一起放入事件循环中,并进行异步管理。此过程消耗较少的内存,从而提高了性能。
  5. Apache具有缺乏可伸缩性的多线程体系结构。另一方面,Nginx遵循异步事件驱动的方法来处理多个客户端请求。它的事件驱动体系结构经过精心设计,即使在繁忙的流量下也可以提高性能。
  6. Apache使用常规方法提供静态内容,并在Web服务器本身内部本地处理动态内容。另一方面,Nginx缺乏内部处理动态内容的能力。实际上,它依赖于外部流程来执行。

总的来说,Apache和Nginx都是开放源代码的高性能Web服务器,能够处理各种工作负载以满足现代Web需求。它们在概念上彼此接近,但在Web服务器业务中却是紧密的竞争对手。Apache已经20年来一直是Web服务器生态系统的领导者,并且广受欢迎,但是Nginx并非没有其应有的优势。

虽然我不认为Apache已经成为过去,因为目前Apache还是占一部分比例,但Nginx应该是Web应用程序和网站的未来。

——–

三者的特点和区别一句话描述就是

tocmat:web服务器

nginx:web服务器和反向代理服务器

apache:web服务器

三者性能

tocmat:后台java是当今世界用的最多的半编译型语言,速度和性能非常优秀!

nginx:优化好的话,并发量可达10万(静态页面),速度和性能也是非常出众的!

apache:曾经的辉煌,只能说产品老了,没有进一步优化导致用户量越来越少。

java后台程序难道不能用apache和nginx吗?

nginx可以作为反向代理服务器,所以可以转发到后端的java应用上。这也是非常常见的应用方式。

——–

Nginx是一款免费开源的高性能HTTP服务器及反向代理服务器,也是一个IMAP/POP3/SMTP 代理服务器。Tomcat是一款免费开源的轻量级应用服务器,它体积小、安装部署方便、系统资源占用率低,主要用于处理JSP页面和Servlet。Apache是一个模块化的服务器,可以运行在几乎所有广泛使用的计算机平台上。其属于web服务器。Apache支持支持模块多,性能稳定,Apache本身是静态解析,适合静态HTML、图片等,但可以通过扩展脚本、模块等支持动态页面等。

Tomcat

Tomcat服务器最初是由Sun公司软件架构师詹姆斯·邓肯·戴维森开发,后来变为开源项目,并由Sun公司将其贡献给了Apache软件基金会。

Tomcat是一款免费开源的轻量级应用服务器,它体积小、安装部署方便、系统资源占用率低,主要用于处理JSP页面和Servlet,提供了作为应用服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。

由于 Tomcat 本身也内含了一个 HTTP 服务器,它也可以被视作一个单独的应用服务器。但是,不能将 Tomcat 和 Apache HTTP 服务器混淆,Apache HTTP 服务器是一个用 C 语言实现的 HTTP Web 服务器;这两个 HTTP web server 不是捆绑在一起的。Tomcat 包含了一个配置管理工具,也可以通过编辑XML格式的配置文件来进行配置。

Nginx

Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的。从2004年发布至今,凭借开源的力量,已经接近成熟与完善。

Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。并且支持很多第三方的模块扩展。

Nginx运行效率高、CPU内存占用率低、代理功能强大、占用资源少、支持更多的并发连接,主要用来做负载均衡和动静分离。

Apache

Apache是一款开源的web服务器产品,由NCSA httpd 1.3服务器发展而来,其市场份额高达55.46%,全球超过半数的活跃网站都在使用Apache Web服务器。

Apache服务器跨平台能力强、安全性能高、运行速度快、性能相对稳定、功能扩展丰富,是一款被业界广泛接受和使用的最流行的Web服务器软件。

性能

Nginx性能要比Apache高,由于网络IO模型选择不同,Nginx使用是最新的epoll网络I/O模型,而Apache使用的则是传统的select模型。

  • Linux下能够承受高并发访问的Squid、Memcached都采用的是epoll,epoll是一种IO多路复用技术,可以非常高效的处理数以百万计的socket句柄,比起select效率会高一些。
  • epoll不会随着监听fd(文件描述符)数目的增长而降低效率。
  • select采用的是轮询来处理,在高并发服务器中,轮询I/O是最耗时间的操作之一,轮询的fd(文件描述符)数目越多,自然耗时越多,性能越低。
  • 总结

    Nginx运行效率高、CPU内存占用率低、代理功能强大、占用资源少、支持更多的并发连接,主要用来做动静分离和负载均衡。Apache在动态资源处理和稳定性方便要优于Nginx,但是静态资源处理不如Nginx。Tomcat主要用于处理JSP页面和Servlet。


    如果解决了你的疑惑,请点点赞,点点关注,谢谢。


    为您推荐