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

Tomcat与Nginx、Apache的关系如下图 。由配送中心选择Apache、Nginx中的某一辆货车将包裹送给客户 。虽然Apache、Nginx两辆车的用途是一样的 , 仔细区分它们两还是有区别的 , 比如:货物装载的速度、方式不一样 , Apache有水箱可以直接运送活鱼而Nginx没有 。
Tomcat有点像装活鱼的特殊包装 。经过特殊包装打包的活鱼就可以通过Nginx和Apache运送到用户手中 。另外 , 使用Tomcat包含了一种慢速的配送服务 , 所以配送中心一般都采用Nginx、Apache等配送 。
通过上面的比方引申Apache、Nginx、Tomcat的实际用途Apache全称Apache 软件基金会的一个开放源码的网页伺服服务器软件 。
Apache支持模块多 , 性能稳定 。Apache本身是静态解析(静态页面) , 适合静态的HTML、图片等 , 但可以通过扩展脚本、模块来支持动态页面等 。Apche可以支持PHP、CGI、Perl , 但要使用Java就需要Tomcat , Java请求会通过Apache转发给Tomcat处理;
Nginx同样也是一款开源的服务 。
Nginx是一个高性能的的反向代理来实现负载均衡器 。
Apache、Nginx本质上就是一种运用在等)、音频、视频等资源 。如下图:
不仅Apache和Nginx , 绝大多数编程语言所包含的类库中也可以实现简单的 。
Apache和Nginx的对比
Nginx使用异步非阻塞型事件驱动的方法来处理请求 , 而Apache则是通过同步阻塞型的方法来处理请求 。
Apache接收一个请求后 , 就会创建一个进程 , 每个进程内单线程 。对于一个负载相对较高的网站来说 , 256的进程 , 也就是256个线程 。线程处理请求时是同步阻塞模式 , 会一直等待该请求读取程序文件(IO)(同步) , 执行业务逻辑 , 返回给客户端 , 所有操作完成之后才能处理下一个请求(阻塞) 。
如果服务器已经达到256的极限 , 那么接下去的访问就需要排队 。这也就是为什么某些服务器负载不高的原因了 。
【tomcat与nginx,apache的区别是什么?】而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本身也包含了服务 , 但用的不多 。
Tomcat一共设计了 4 种容器 , 它们分别为Engine、Host、Context、Wrapper , 各个容器组件之间的关系是由大到小 , 即父子关系 , 它们之间关系形成一个树状的结构 , 它们的实现类都实现了 Container 接口 。


以上关于本文的内容,仅作参考!温馨提示:如遇专业性较强的问题(如:疾病、健康、理财等),还请咨询专业人士给予相关指导!

「辽宁龙网」www.liaoninglong.com小编还为您精选了以下内容,希望对您有所帮助: