当前位置:文档之家› Web缓存技术概述

Web缓存技术概述

Web缓存技术概述[日期:2006-05-31] 来源:作者:[字体:大中小]王世克吴集金士尧摘要WWW是互联网上最受欢迎的应用之一,其快速增长导致网络拥塞和服务器超载,缓存技术被认为是减轻服务器负载、降低网络拥塞,减少客户访问延迟的有效途径之一。

本文首先描述了Web缓存系统的基本要素及理想属性,然后介绍目前围绕Web缓存技术已经开展的研究,最后讨论Web缓存技术需要进一步研究的问题。

关键字WWW 缓存技术代理1 引言WWW是互联网上最受欢迎的应用之一,其快速增长造成网络拥塞和服务器超载,导致客户访问延迟增大,WWW服务质量问题日益显现出来。

缓存技术被认为是减轻服务器负载、降低网络拥塞、增强WWW可扩展性的有效途径之一,其基本思想是利用客户访问的时间局部性(Temporal Locality)原理,将客户访问过的内容在Cache中存放一个副本,当该内容下次被访问时,不必连接到驻留网站,而是由Cache中保留的副本提供。

Web内容可以缓存在客户端、代理服务器以及服务器端。

研究表明,缓存技术可以显著地提高WWW性能[1][2],它可以带来以下好处:(1)减少网络流量,从而减轻网络拥塞;(2)降低客户访问延迟,其主要原因有:①缓存在代理服务器中的内容,客户可以直接从代理获取而不是从远程服务器获取,从而减小了传输延迟;②没有被缓存的内容由于网络拥塞及服务器负载的减轻而可以较快地被客户获取;(3)由于客户的部分请求内容可以从代理处获取,从而减轻了远程服务器负载;(4)如果由于远程服务器故障或网络故障造成远程服务器无法响应客户请求,客户可以从代理中获取缓存的内容副本,使得WWW服务的鲁棒性(Robustness)得到了加强。

Web缓存系统也会带来以下问题:(1)客户通过代理获取的可能是过时的内容;(2)如果发生缓存失效,客户的访问延迟由于额外的代理处理开销而增加。

因此在设计W eb缓存系统时,应力求做到Cache命中率最大化和失效代价最小化;(3)代理可能成为瓶颈。

因此应为一个代理设定一个服务客户数量上限及一个服务效率下限,使得一个代理系统的效率至少同客户直接和远程服务器相连的效率一样。

目前,围绕Web缓存系统及其最优化问题已经开展了广泛而深入的研究,这些研究工作主要是围绕代理的作用展开的。

2 Web缓存系统的理想特性一个理想的Web缓存系统应具有以下特性:(1)快捷性:缓存系统应该能够有效地降低客户的访问延迟;(2)鲁棒性:鲁棒性意味着可用性,客户希望Web服务随时可用;(3)透明性:缓存系统对客户应是透明的,客户得到的结果仅仅是快速的响应和良好的可用性;(4)可扩展性:Web缓存系统应能够随着网络规模和密度的不断增长而很好地进行扩展;(5)高效性:Web缓存系统给网络带来的开销越小越好;(6)适应性:缓存系统能够适应客户请求和网络环境的动态变化,这涉及到缓存管理、缓存路由、代理配置等,对于获得理想的缓存性能至关重要;(7)稳定性:Web缓存系统采用的方案不应给网络带来不稳定;(8)负载均衡:一个理想的缓存方案应能够将负载均匀地分发到整个网络,以避免某一个代理或服务器成为瓶颈或Hot spot点,而造成系统一部分甚至整个系统性能下降;(9)异构处理能力:随着网络规模和覆盖域的不断增大,网络将跨越一系列不同的硬件和软件体系结构。

Web缓存系统应能够适应不同的网络体系结构;(10)简单性:简单的方案容易实现且易被普遍接受,一个理想的Web缓存方案配置起来应简单易行。

围绕上述特性,一个Web缓存系统必须解决好以下问题:(1)缓存体系结构:缓存代理在网络中如何组织和配置;(2)代理合作:代理间如何合作,相互合作的代理可以提高命中率而改善缓存系统的性能;(3)缓存路由:当一处缓存代理失效时,如何将请求向其它缓存代理转发;(4)缓存替换算法:当缓存空间不够时,缓存内容如何替换;(5)缓存一致性:即缓存内容的时效性问题,如何防止缓存的内容过时;(6)内容预取:代理如何决定从服务器或其它代理处进行内容预取以减少客户的访问延迟;(7)负载平衡:如何解决网络中的“Hot spot”现象;(8)缓存内容:什么样的内容可以被缓存。

在设计Web缓存系统时,必须涉及上述问题。

3 Web缓存方案概述3.1 Web缓存体系结构一个Web缓存系统的性能取决于其客户群的大小,客户群越大,缓存的内容被再次请求的可能性就越高。

相互合作的Cache组可能会提高命中率而提高缓存系统的性能,因此缓存系统的体系结构应确保代理间能够有效地进行合作。

典型的缓存体系结构有以下几种:层次式、分布式和混合式。

图1 Web缓存系统体系结构图3.1.1 层次式缓存体系结构Harvest项目[3]首先提出了层次式Web缓存体系结构。

在层次式缓存体系结构中,Cache在网络呈多级配置,如图1(a)所示。

为简单起见,假定有四级:底层Cache、局域层C ache、区域层Cache、广域层Cache。

底层是客户/浏览器Cache,当客户端Cache不能满足客户的请求时,该请求被转发到局域层Cache,如果仍然得不到满足,则该请求被转发到区域层Cache直至广域层Cache。

如果该请求在各级Cache中都得不到满足,则请求最终被转发到服务器。

然后服务器对该请求的响应自顶向下地发送给客户,在沿途的每一个中间层Cache中留下一个副本。

请求相同内容的其它请求则自下而上地进行转发,直到在某一级Cache中得到满足。

层次式缓存体系结构带宽效率高,点击率较高的Web内容可以快速高效地分布到网络中。

但该体系结构也存在一些不足[4]:(1)建立层次式缓存体系结构,缓存服务器必须配置在网络中关键的访问点上,缓存服务器间需相互合作;(2)每一级Cache都会带来额外的延迟;(3)高层Cache可能会成为瓶颈并带来较长的排队延迟;(4)同一个内容的多个副本被保存在不同的Cache中,整个系统Cache空间利用率不高。

3.1.2 分布式缓存体系结构针对层次式缓存结构的上述缺陷,一些研究者提出了分布式缓存体系结构,在这种结构中,只有低层Cache,如图1(b)所示。

文献[5]中的分布式Web缓存结构中,没有超出局域层的中间Cache层,Cache之间相互协作以处理失效。

为了确定将客户请求转发给哪一个局域层Cache来获取失效的内容,每一个局域层Cache保留一份其它局域层Cache中缓存内容的目录信息,以便发生失效时将客户请求准确地转发到相应的局域层Cache。

缓存阵列路由协议CARP[6](Cache Array Routing protocol)是一种分布式缓存方案,它将UR L空间分割成不同的部分,将每一部分指定给一组松散耦合的Cache组,每个Cache只能缓存具有指定给它的URL的Web内容,从而可以根据客户请求内容的URL来确定将请求转发给哪一个Cache。

在分布式缓存结构中,大多数的网络流量都发生在网络底层,不容易产生网络拥塞,Cach e空间利用率高,且可以更好地实现负载共享,容错性更好。

然而,一个大规模的分布式缓存系统的配置可能会遇到几个问题:连接次数较多、带宽要求高、管理困难[4]。

3.1.3 混合式缓存体系结构混合式体系结构如图1(c)所示,同级Cache采用分布式缓存结构,相互合作。

Harvest 集团设计的互联网缓存协议ICP(the Internet Cache Protocol)支持从RTT最小的父Ca che或邻居Cache中获取相应的内容。

3.1.4 缓存体系结构的优化研究表明[4]层次式缓存体系结构和分布式缓存结构相比,层次式缓存体系结构具有较短的连接时间,因此将较小的文档缓存在中间层Cache中可以减少访问延迟;分布缓存结构具有较短的传输时间和较高的带宽利用率。

理想的方案就是将二者结合起来,充分发挥各自的长处,同时减少连接时间和传输时间。

3.2 缓存路由出于对Web缓存系统扩展性的考虑,大多数缓存系统将大量的Cache分散在互联网上,这样带来的最大问题是如何快速地定位缓存有所需内容的Cache,这就是缓存路由问题。

该问题有点类似于网络路由,但却不能用同样的方式解决。

传统的网络路由可依地址聚类(层次式的地址表示使得地址聚类成为可能)而进行,但是在WWW中,具有相同URL前缀或服务器地址前缀的文档未必发送给相同的客户,难以对路由地址进行聚类,这样缓存路由表将大得难以管理。

此外,缓存内容不断更新,过时的缓存路由信息将导致缓存失效。

为降低Cache失效的代价,理想的缓存路由算法应该将客户的请求路由到下一个代理,该代理具有较高的命中可能性且位于或接近于客户到服务器的网络路径上。

3.2.1 缓存路由表法Malpani等人[7]将一组Cache组合起来,当客户的请求被转发到指定的Cache时,如果该Cache缓存有请求的内容,则将其发送给客户,否则通过IP组播将请求转发给同组的其它Cache,由缓存有相应内容的Cache对客户的请求进行响应,如果所有Cache中都没有缓存请求的内容,则该请求被转发到源服务器。

Harvest[3]缓存系统将Cache组织成层次式结构并使用Cache解析协议ICP(Internet Cache Protocol),当发生Cache失效时,低层Cache在将客户请求转发到上一层Cache前,首先查询兄弟节点Cache是否缓存有相应的内容,以避免顶层Cache超载。

自适应Web缓存系统[8]为每一个服务器建立Cache树,树中的Cache被组织成相互重叠的多点传送组,一个请求通过这些传送组来获取相应的缓存内容。

该方法对每一个服务器构造不同的Cache树,因此没有根结点的超载问题,自配置性和鲁棒性都比较好。

但是对点击率较低的内容请求可能会经过较多的Cache,产生较大的Cache通信开销,作者建议通过限制请求经过的Cache数来解决该问题。

3.2.2 哈希函数法Cache阵列路由协议CARP[6]使用一个基于阵列成员列表和URL的哈希函数来确定一个W eb对象确切的缓存地址或一个Web对象应缓存在什么地方。

在Summary Cache[9]中,每个代理保存一个同组中其它代理所缓存内容的URL摘要信息,该代理在转发客户请求时检查这些摘要信息以确定将请求转发给哪一个代理。

为减小开销,这些摘要信息定期进行更新。

试验表明该系统可以显著地减少Cache间的信息数量、带宽消耗以及协议带来的CPU开销,而保持和ICP几乎一样的缓存命中率。

3.3 Cache替换算法Cache替换算法是影响代理缓存系统性能的一个重要因素,一个好的Cache替换算法可以产生较高的命中率。

目前已经提出的算法可以划分为以下三类:(1)传统替换算法及其直接演化,其代表算法有:①LRU(Least Recently Used)算法:将最近最少使用的内容替换出Cache;②LFU(Lease Frequently Used)算法:将访问次数最少的内容替换出Cache;③Pitkow/Recker[10]提出了一种替换算法:如果Cache中所有内容都是同一天被缓存的,则将最大的文档替换出Cache,否则按LRU算法进行替换。

相关主题