HTTP内容分发——《HTTP权威指南》系列

WilsonLiu's blog 首发地址html

内容分发

Web主机托管

对内容资源的存储协调以及管理的职责统称为Web主机托管。web

虚拟服务器请求却反主机信息

HTTP/1.0中的一个设计缺陷会使虚拟主机托管者疯狂。HTTP/1.0中没有为共享的Web服务器提供任何方法来识别要访问的是所托管的哪一个虚拟网站。
HTTP/1.0请求在报文中只发送URL的路径部分,若是要访问http://www.baidu.com/index.html,浏览器会链接到服务器http://www.baidu.com,但HTTP/1.0请求中却只提到GET /index.html,没有提到主机名。若是服务器虚拟托管了许多个站点,就没有足够的信息能指出要访问的是哪一个虚拟主机网站。 而且HTTP反向代理和拦截代理也都须要明确的站点信息。算法

所以HTTP/1.1的确要求服务器可以处理HTTP报文请求行上的完整URL,但将现存的应用程序都升级都这个规范还须要时间,在此期间,涌现出了如下4种技术。编程

  1. 经过URL路径进行虚拟主机托管 —— 在URL中增添专门的路径部分,以便服务器判断是哪一个网站浏览器

  2. 经过端口号进行主机托管 —— 为每一个站点分配不一样的端口号,这样请求就由web服务器的单独实例来处理缓存

  3. 经过IP地址进行主机托管 —— 为不一样的虚拟站点分配专门的IP地址服务器

  4. 经过Host首部进行主机托管网络

镜像的服务器集群

服务器集群是一排配置相同的Web服务器,互相能够替换。每一个服务器上的内容能够经过镜像复制,这样当某个服务器出问题的时候,其余的能够顶上。
镜像的服务器经常组成层次化的关系。某个服务器可能充当“内容权威”——它含有原始内容(可能就是内容做者上传的那个服务器)。这个服务器称为主原始服务器(master origin server)。从主原始服务器接收内容的镜像服务器称为复制原始服务器(replica origin server)。一种简单的部署服务器集群的方法是用网络交换机把请求分发给服务器。托管在服务器上的每一个网站的IP地址就设置为交换机的IP地址。负载均衡

镜像Web服务器能够在不一样的地点包含一样内容的副本。能够有如下两种方法把客户端的请求导向特定的服务器。分布式

  1. HTTP重定向 —— 该内容的URL会解析到主服务器的IP地址,而后它会发生重定向到复制服务器

  2. DNS重定向 —— 该内容的URL会解析到4个IP地址,DNS服务器能够选择发送给客户端的IP地址

内容分发网络 CDN

简单地说,内容分发网络就是对特定内容进行分发的专门网络。这个网络中的节点能够是Web服务器,反向代理或缓存。

反向代理

反向代理缓存能够像镜像服务器同样接收服务器请求,它们表明原始服务器中的一个特定集合来接收服务器请求。(根据内容所在的IP地址的广告方式,这是有可能的,原始服务器和反向代理缓存之间一般有协做关系,到特定的原始服务器的请求就由反向代理缓存来接收。)

CDN中的代理缓存

与反向代理不一样,传统的代理缓存可以收到发往任何Web服务器的请求(在代理缓存与原始服务器之间不须要有任何工做关系或IP地址约定)。

重定向和负载均衡

因为HTTP应用程序老是要作下列3件事情,因此在现代网络中重定向是广泛存在的:

  • 可靠地执行HTTP事务

  • 最小化时延

  • 节约网络带宽
    出于这些缘由,web内容一般分布在不少地方。这么作是出于可靠性的考虑。这样若是一个位置出现了问题,还有其余的可用;若是客户端可以访问较劲的资源,就可用更快的收到所请求的内容,以下降响应时间;将目标服务器分散,还能够减小网络拥塞。可用将重定向当作一组有助于找到"最佳"分布式内容的技术。

而重定向和负载均衡老是共存的。

重定向方法

通用的重定向方法

  • HTTP重定向

  • DNS重定向

  • 任播寻址

  • IP MAC转发

  • IP地址转发

代理与缓存重定向技术

  • 显示浏览器配置

  • 代理自动配置(PAC)

  • Web Proxy代理自动发现协议(WPAD)

  • Web缓存协调协议(WCCP)

  • 因特网缓存协议(ICP)

  • 缓存分组路由协议(CARP)

  • 超文本缓存协议(HTCP)

通用的重定向方法

HTTP重定向

与其余形式的重定向相比,HTTP重定向的优势之一就是重定向服务器知道客户端IP地址,理论上来说,它能够作出更合理的选择。

HTTP重定向能够在服务器间引导请求,但有如下几个缺点。

  • 须要原始服务器进行大量处理来判断要重定向到哪台服务器上去。有时,发布重定向所需的处理量几乎与提升页面自己所需的处理量同样。

  • 增长了用户时延,由于访问页面时要进行两次往返。

  • 若是重定向服务器出故障,站点就会瘫痪。

DNS重定向

DNS容许将几个IP地址关联到一个域中,能够配置DNS解析程序,或对其进行编程,以返回可变的IP地址。解析程序返回IP地址时,所基于的原则能够很简单(轮转),也能够很复杂(好比查看几台服务器上的负载均衡,并返回负载最轻的服务器的IP地址)。

DNS缓存带来的影响

DNS对服务器的每次查询都会获得不一样的服务器地址序列,因此DNS地址轮转会将负载分摊。可是这种负载均衡也并不完美,由于DNS查找结果可能会被客户端记住并被反复重用,以减小DNS查找的开销,并且有些服务器也愿意保持与一台客户端的联系。

其余基于DNS的重定向算法

  • 负载均衡算法

  • 邻接路由算法

  • 故障屏蔽算法

任播寻址

在任播寻址中,几个地理上分散的Web服务器拥有彻底相同的IP地址,并且会经过骨干路由器的"最短路径"路由功能将客户端的请求发送给离它最近的服务器。要使这种方法工做,每一个路由器都要想邻近的骨干路由器广告,代表本身是一台路由器。

IP MAC转发

支持MAC转发的第四次交换机一般会将请求转发给几个代理缓存,并在它们之间平衡负载,由于MAC地址转发是点对点的,因此服务器或代理只能位于离交换机一跳远的地方。

IP地址转发

在IP地址转发中,交换机或其余第四层设备会检测输入分组中的TCP/IP地址,并经过修改目的IP地址(不是目的MAC地址),对分组进行相应的转发。

代理的重定向方法

  • 显式配置浏览器设置

  • 代理自动配置 PAC

  • Web代理自动发现协议 WPAD

相关文章
相关标签/搜索