HTTP内容分发

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
分享 留言