面试题:Tomcat 、Nginx 、Apache的区别?各自的优点是什么?
面试题:
Tomcat 、Nginx 、Apache 的区别? 各自的优点是什么? 什么场景下用合适?
面试官心理分析
主要是看看应聘人员对常用web 容器是否熟悉,常用的web 容器基本上也就几个(这里指的是linux下常用的Web 容器,当然还有windows 下的IIS 以及 商业的WAS),应聘人员需要简单的回答出三者的区别、大致的应用场景 以及各自的优势。
也可以让应聘人员简单地画出上家公司维护的一个业务拓扑(如果涉及到商业机密,就跳过...),让他从业务的层面讲解下对这套架构的理解(优缺点、高可用如何实现的?是否存在系统瓶颈等),如果这套架构是由他自己搭建的,那他一定会非常熟悉,而且也可以测试下他的表达能力
面试题剖析
Apache
Apache HTTP服务器是一个模块化的服务器,可以运行在几乎所有广泛使用的计算机平台上。其属于应用服务器。Apache支持支持模块多,性能稳定,Apache本身是静态解析,适合静态HTML、图片等,但可以通过扩展脚本、模块等支持动态页面等。
Apache相对于Tomcat的优点:
服务器来说处理静态文件是它的优势,速度快。Apache是静态解析,适合静态HTML、图片等。
Apache 相对于 Nginx 的优点:
apache的 rewrite 比nginx 的强大;支持动态页面;支持的模块多,基本涵盖所有应用;性能稳定。
缺点:配置相对复杂,自身不支持动态页面。
Tomcat:
Tomcat是应用(Java)服务器,它只是一个Servlet(JSP也翻译成Servlet)容器,可以认为是Apache的扩展,但是可以独立于Apache运行。
缺点:可以说Tomcat 只能用做java服务器
优点:动态解析容器,处理动态请求,是编译JSP/Servlet的容器。
Nginx
Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器。
nginx相对于apache的优点:
轻量级,同样起web服务,比apache占用更少的内存及资源;抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能;高度模块化的设计,编写模块相对简单;提供负载均衡
缺点:Nginx 只适合静态和反向代理。
应用场景:
- 反向代理
- 负载均衡
- HTTP服务器(包含动静分离)
- 正向代理
三者之间的区别:
1)Nginx和tomcat的区别
nginx常用做静态内容服务和代理服务器,直接外来请求转发给后面的应用服务器(tomcat,Django等),tomcat更多用来做一个应用容器,让java web app泡在里面的东西。
注意:nginx只是把请求做了分发,不做处理!!!
2)nginx和Apache的区别
Apache是同步多进程模型,一个连接对应一个进程,而nginx是异步的,多个连接(万级别)可以对应一个进程。
Nginx轻量级,抗并发,处理静态文件好Apache超稳定,对PHP支持比较检单,nginx需要配合其他后端用,处理动态请求有优势,建议使用前端nginx抗并发,后端apache集群,配合起来。
应用场景分析:
Tomcat结合Apache、Nginx实现高性能的web服务器
Tomcat虽然是一个servlet和jsp容器,但是它也是一个轻量级的web服务器。它既可以处理动态内容,也可以处理静态内容。但是,tomcat的最大优势在于处理动态请求,处理静态内容的能力不如apache和nginx,我们可以利用nginx的高并发,低消耗的特点与tomcat一起使用。
通常情况下,tomcat与nginx、Apache结合使用,nginx、apache既可以提供web服务,也可以转发动态请求至tomcat服务器上。通常nginx、apache只提供代理的功能,也就是转发请求至tomcat服务器上,而对于静态内容的响应,则由前端负载均衡器来转发至专门的静态服务器上进行处理。其架构类似于如下图:
网站崩溃找不到原因?平台搭建无从下手?热门技术不想落伍?想要变强找不到资料?
加入[IT拯救联盟],让大牛和同伴拯救你,带你装x带你飞。群里有定期干货分享、大牛专业解答、实用IT工具优选.....
私信小编“联盟”,即可加入我们~