IIS、Apache、Tomcat、Nginx、CDN,它们之间有何区别?
一个学习的总结,或者说是汇总,有些链接给出的观点过时,已按照自己的理解经过修改编辑;
web服务器
Web服务器的基本功能就是提供Web信息浏览服务,响应客户端的浏览器请求。因为Web服务器主要支持的协议就是服务器?
不支持事务处理或数据库连接池,但它可以配置各种策略来实现容错性和可扩展性,例如负载平衡,缓冲,集群。
IIS、Apache、Tomcat都可以属于Web服务器。
IIS 是微软开发的web服务器,需要收费,主要用来跑 asp.net asp php,只能在windows下运行。
Apache与Tomcat都是Apache开源组织开发的用于处理 都能处理。
一般是把 Apache服务器 与 tomcat服务器 搭配在一起用:
1) Apache服务器 负责处理所有 静态的 页面/图片 等信息。
2) Tomcat 只处理动态的 部分。
Apache:是C语言实现的,专门用来提供HTTP服务。特性:简单、速度快、性能稳定、可配置(代理)
1、主要用于解析静态文本,并发性能高,侧重于HTTP服务;
2、支持静态页(HTML),不支持动态请求如:CGI、Servlet/JSP、PHP、ASP等;3、具有很强的可扩展性,可以通过插件支持PHP,还可以单向Apache连接Tomcat实现连通;
4、Apache是世界使用排名第一的Web服务器。
Tomcat:是Java开发的一个符合JavaEE的Servlet规范的JSP服务器(Servlet容器),是 Apache 的扩展。特性:免费的Java应用服务器
1、主要用于解析JSP/Servlet,侧重于Servlet引擎;
2、支持静态页,但效率没有Apache高;支持Servlet、JSP请求;
3、Tomcat本身也内置了一个整合。
Apache + Tomcat:两者整合后优点:如果请深圳市是静态网页则由Apache处理,并将结果返回;如果是动态请求,Apache会将解析工作转发给Tomcat处理,Tomcat处理后将结果通过Apache返回。这样可以达到分工合作,实现负载远衡,提高系统的性能。apache是web服务器,tomcat是应用(java)服务器,它只是一个servlet容器,可以认为是apache的扩展,但是可以独立于apache运行。独立于apache运行。换句话说,apache是一辆卡车,上面可以装一些东西如html等。但是不能装水,要装水必须要有容器(桶),而这个桶也可以不放在卡车上。
Nginx是俄罗斯人编写的十分轻量级的 代理服务器。
Nginx与Apache比较:
1)轻量级,同样起web 服务,比apache占用更少的内存及资源 ;
2)高并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能 ;
3)高度模块化的设计,编写模块相对简单 ;
4)提供负载均衡;
5)apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程;
归纳起来,CDN具有以下主要功能:(1)节省骨干网带宽,减少带宽需求量;(2)提供服务器端加速,解决由于用户访问量大造成的服务器过载问题;(3)服务商能使用Web Cache技术在本地缓存用户访问过的Web页面和对象,实现相同对象的访问无须占用主干的出口带宽,并提高用户访问因特网页面的相应时间的需求; (4)能克服网站分布不均的问题,并且能降低网站自身建设和维护成本;(5)降低“通信风暴”的影响,提高网络访问的稳定性。