Web Cache 面面观
目前,Internet和Inrtanet几乎已经遍及到我们生活和工作的各个角落,给我们带来了极大的便利,便有时其缓慢的网络访问速度和较大的时间延迟又会令使用者们大伤脑筋,为了缓解这种局面,许多供应商提出了解决方案,那就是使用Cache。
一提Cache,大家自然会想到计算机里面的高速缓存,实际上,Web Cache的功用远不止存储和提供数据这么简单。Cache是作为基于软件的代理服务器的一部分或专门的硬件(容器appliances)出现的,后者可以提供更好的性能。不同的生产商提供的产品在许多方面存在着差异,其中包括配置和设置的难易程度、使用的协议、安全性能、远程管理、能够用于缓存的Web传输的类型以及价格的售后技术支持等。
代理型Cache和容器型Cache
到目前为止,至少有16家生产商推出了他们各自的Web Cache产品,其中有几家把Cache作为代理服务器的一部分进行销售,例如CSM-USA、Deerfield Communication、Microsoft、netscape Communications、Entera 、Eolian、IBM、Infolobria和Inktomi)则把Cache作为容器进行销售。只有Network Appliance和Packetstorm Technologies两家公司同时销售以上两种类型的Cache。是什么把Cache分为这两类呢?那就是速度。Proxy Cache在通用的平台上用软件来实现缓存功能,而典型的容器Cache则包含有运行于专用硬件平台上的缓存软件,只有Inktomi公司的Trafficserver是个例外,它提供了运行于专用高端服务器上的缓存软件。相比较而言,容器型的Cache速度更快,性能也更好。这一点,即使是一些代理服务器的生产商也不得不承认。理论上,使用代理服务器也可以提供像容器Cache那样的性能,不过需要添置极为昂贵的多处理服务器硬件。
影响Cache性能的主要指标
假如某个用户要购买Cache,那么他最关心的莫过于两个问题,一个是性能,一个是价格。而价格显然是受性能影响的,只有弄清楚产品的性能,方才知道其价格合理与否。任何Cache的性能都会受到一系列因素的影响(包括线连接速率和网络的拥挤情况等)。用户怎样才能更快、更准确地了解Cache的性能呢?首先,要从生产商那里了解到Cache能够同时支持多少连接、每秒钟能够供应多少对象(Object)、它的的吞吐量是多少以及平均对象命中率和平均字节命中率是多少等技术指标。获得连接的数目将有助于网络管理员选择适当容量的Cache。举个例了,Cache Networks 和Cacheqube 的Deerfield Communications的Wingate代理服务器可以处理200到300个连接,它们适用于较小的环境。Infolibria公司的Dynacache 和Inktomi公司的Trafficserver支持1万到2万个连接,生产商称它们为“航空母舰级”。另一方面,Cache的Cacheqube每秒钟提供25个对象,Infolibria和Inktomi公司的大容量Cache每秒钟可以提供1000个或更多的对象。
吞吐量是影响性能的另一个重要因素。如果连接到Internet的链路是T3(45Mbps),那么所需的Cache最好能够处理45Mbps的通信量,否则Cache就会变成瓶颈。现有的容器Cache至少都可以处理一个T1(1.54Mbps),有些生产商声称他们的产品可以处理一个T3。代理服务器Cache的生产商通常不会透露产品的吞吐量,因为吞吐量会受到底层硬件的影响。
接下来再看对象命中率和字节命中率。对象命中率是用户从Cache中取到的对象数与所获得的总对象数(包括从Internet上获取的对象数和从Cache中获得的对象数)的比值,字节命中率是用户从Cache中获取对象的平均字节数和从网上获取的全部对象的平均字节数的比值。例如,某个Cache的命中率是50%,就意味着Cache可以满足一半的数据请求,而另外一半数据则需要通过Inernet得到。因此,从另外一个角度看,使用Cache意味关节约了带宽,也因此提高了性能。目前大多数Cache的命中率都在30%左右,容量大一些的Cache通常可以达到60%到65%。如果有生产商说他们的Cache命中率可以达到75%到80%,那就请注意了,这可能是因为他们的命中率计算方法不同。对于容器Cache而言,硬盘空间和内存容量的大小对Cache命中率的影响很大。一般说来,硬盘的空间越大,Cache中保存的对象就越多,用户所需页面能够在Cache找到的可能性就越大。另一方面,RAM用于存储那些访问频率最高的内容,因为RAM的存取速度要比硬盘快得多。现在大多数容器Cache的硬盘空间为4G到9G,内存容量为254M到512M。只有Packetstorm公司的Webspeed 2000和Cacheflow公司的Cacheflow 100例外,前者只有2G硬盘和64MB内存,后者有2GD硬盘和128MB内存。但大容量并不意味着连接数的增加。例如,IBM的Webcache Manager号称有72G的硬盘和2G的RAM,除此之外还有800GB的磁带存储设备,但是它却只能同时维护500个连接。与此形成鲜明对比的是Inktomi和Infolibria公司,他们宣布其产品可以同时支持1万到6.4万个连接,尽管他们的Cache容量要小一些。另外,多个硬盘可以提高Cache的性能。硬盘是Cache系统中速度最慢的部件,一块硬盘在某一时刻只能处理一个输入/输出操作,但如果有多个硬盘并行的话,Cache就会以更快的速度工作。例如,Cache Cacheqube有1到2个硬盘,Infolobria的Dynacache可以配置多达30个同时工作的硬盘。
有些影响速度的因素是不能量化的,例如文件系统的组织。组织紧密的文件系统可以大幅度地提高Cache的性能。许多容器Cache的生产商为了提高它们的产品性能,在操作系统和文件系统上都下了很大的功夫。
被动式Cache和主动式Cache
如何使Cache内容保持最新也是Cache系统要解决的一个问题。被动式的Cache只有当用户提出信息请求时,Cache中的内容才会更新。主动式的Cache在用户请求数据前就会把Web内容预取到Cache中。所有的生产商都提供被动式的Cache,这可能是因为它是HTTP标准的一部分。
被动式Cache通常会在查看内容是否改变的请求提出时,检查服务器。如果Cache中对象的修改日期早于服务器中对象的修改日期,Cache会从服务器中获取对象的新拷贝。如果服务器上的内容没有改变,Cache就会把本地的副本提供给用户。这一方法可以保证用户总是能够得到最新的数据。但由于每个请求都要对数据进行一次检查,所以响应时间就延长了。解决这个问题的一个办法是调整这种被动的Cache机制。
有7家生产商提供主动式Cache,或者是预定方式的(scheduled),或者是自动方式的(automatoed)。如果使用预定方式的预取方案,网络管理员需要事先决定哪些站点是最流行的,然后明确地设定Cache在特定的时间内去获取这些站点中的对象。CM-USA析CSM代理服务器、IBM的Webcache Manager和Webshare、Microsoft的代理服务器、Netscape的代理服务器、Novell的Border Manager和Fastcache都提供了预定预取功能。与此同时,Cacheflow和Eolian公司提供了具有自动预取功能的主动式Cache.Cacheflow使用某一算法来确定哪些数据是最有可能会被再次访问到的,并确定这些数据被更新的可能性。Eolian的Eaglewatch的服务方法与此相似,它根据用户的工作模式计算出哪些内容需要预取。所不同的是,Eaglewatch惧来自所有用户而不是某一用户的统计数据。
代理式Cache和透明式Cache
接下来看一下怎样配置Cache。这里有两种选择:代理模式或透明模式。工作在代理模式的Cache必须对济览器进行设置,使之直接向服务器提出请求,然后由服务器代表用户把请求发送到Internet上。代理方式的优点在于网络管理员可以控制用户的行为,并且能够知道哪个用户在访问哪些站点;缺点是把每个浏览器与代理服务器通过配置联系在一起是一件非常烦琐的工作,特别是对规模较大的网络来说更是如此。在透明方式下,路由器、负载均衡交换机可以把通信数据传递给Cache,这样,就无须对浏览器进行改动,而只要对交换机或路由器进行配置就行了。但这样一种方法是很昂贵的,例如Arrowpoint的交换机大约需要3万美元。Microsoft、Netscape和Novell的产品只能工作在代理方式下,而其他生产商的产品均支持代理和透明两种方式。
Cache的通信类型
能够用于缓存的通信类型是另一个要考虑的问题。由于设计这些产品的本意在于缓存Web舆,所以每种产品都支持HTTP协议。目前,有13家生产商的产品支持FTP协议;随着Intranet的发展,这种能力可以在拥挤的主干网上有效地节约带宽。Cobalt的Cacheqube、Entera的Teranode’IBM的Webcache Manager和Ositis的Winproxy能够为DNS传输提供缓存服务。但是,网络管理员在选择使用这一功能时应该小心一点,最好能亲自测试一下存储NS信息的Cache能否正确地辨别域名和它们的实际位置。因为有的生产商警告说:在物理分散的网络上使用DNS缓存服务有可能把用户引向错误的站点。Entera和Inktomi公司的产品还可以为NNTP(network news transfer protocol)提供缓存服务。
Cache的源代码
有兴趣的网络管理员也许比较关心实现Cache功能的源代码。实际上,有些Cache设备就是Squid免费软件的重新包装,如Cobalt、Eolian和Packetstorm的产品。这些生产商销售的Cache都已经装载到了Unix/Linux的容器平台上。他们还宣布,通过代码的优化和与硬件的紧密集成,他们产品的性能更加优越。所有的Cache都有它的功能极限,但相比较而言,Squid的极限要低一些。这是Squid开发者也不得不承认的事实。
Cache的群集支持
以上讲到了Cache的几个方面。无论Cache怎样设计,它最终都将装满信息,致使效率下降。使用群集技术可以在一定程度上解决这一问题。几乎所有的Cache都能够通过专用或标准的协议实现同一站点Cache间或不同站点设备间的群集。使用标准协议实现群集能够保证不同生产商的Cache协同工作。这里有两个标准协议:ICP(Internet Caching Protocol)和(CARP(Cache Array Routing Protocol)。Cacheflow、Eolian、Infolibria和Netscape对两种协议都支持。CSM-USA和Microsoft只支持CARP。Cobalt Entera Novell和Packetstorm只支持ICP。IBM通过自己专门的方法实现群集。Deerfield则不支持群集协议。群集协议会降低速度。使用ICP协议实现群集时,会遇到下述情况:当某个Cache收到数据请求,而所请求的数据又不在该Cache中时,它会检查与之群集在一起的所有Cache,以便弄清年请求的数据是否存储在其他的Cache中,这样一来就延长了响应的时间。CARP为了解决这一问题,使用一个运行hashe算法的主Cache一决定应该向哪儿发送请求。如果网络管理员想要建立一个更快的群集系统,那么他可以购买负载均衡产品或Layer4交换机,并将其安装在Cache前端,这种方法只适用于透明方式。已经使用路由器或Cisco Layer 3的网络管理员就不必购买负载均衡器或Layer 4交换机来实现群集了,因为这些产品的生产商已经开发出了一种名叫WCCP的协议,这种协议使用路由器或Layer 3等设备可以与Cache通信以转发请求信息;当然,这还需要Cache也支持WCCP协议才行。现在,只有Cisco Cacheflow Infolibria Inktomi和Network Appliance的设备支持WCCP。
Cache的安全性
考虑到Cache处于Internet服务访问点的位置,安全性也是很重要的。CSM、Deerfield Entera Eoliaan Microsoft Novell Ositis和Packetstorm提供了防火墙,Microsoft还提供了×××加密机制。几乎所有的生产商都能提供URL过渡功能来保护某些站点不被用户访问。Inktomi可以说是唯五一定没有在产品中提供安全性能的公司。
Cache对目录服务的支持
 
Cache的价格
最后,让我们关注一下价格的问题。在此,网络管理员除了产品的基本花费之外,还要考虑一系列其他的因素。首先是保证书和技术支持协议。硬件的保修期一般是一年,软件的保修期为三个月。Cisco和Entera为他们的硬件提供90天的保修,Eolian的保修期为两年。其他方面的支持包括通过电子邮件和电话获得技术支持以及免费软件维护和升级等。所购设备或软件类型的不同使最基本的支持协议的价格差别很大。硬盘和内存空间的选配也会影响整体的价格。例如,Cobalt公司10.2G硬盘和256M内存的CacheRAQ价格在3万美元上下,而BM公司的Webcache Manager(配置为72G硬盘,2G内存和800G的磁带存储设备)价格在25万美元左右。通常说来,代理服务器Cache相对于容器Cache而言,价格优势比较明显,这也是他们销售业绩不错的主要原因。