发新话题
打印

Web Cache服务器

Web Cache服务器
目前,Internet和Intranet几乎已经遍及到我们生活和工作的各个角落,给我们带来了极大的便利,但有时其缓慢的网络访问速度和较大的时间延迟又会令使用者们大伤脑筋,为了缓解这种局面,许多供应商提出了解决方案,那就是使用Cache技术。
应用Cache技术可以减少访问Internet骨干网的流量,减少重复内容的下载,从而节省宝贵的广域网链路带宽,不仅能够降低企业的成本,甚至也能减少ISP的成本;同时应用Cache技术还能加速用户访问WWW和FTP等资源的时间,增加用户对上网的兴趣。
提到Cache,大家自然会想到计算机里面的高速缓存,实际上,Web Cache的功用远不止存储和提供数据这么简单。Cache是作为基于软件的代理服务器的一部分或专门的硬件(容器appliances)出现的,后者可以提供更好的性能。不同的生产商提供的产品在许多方面存在着差异,其中包括配置和设置的难易程度、使用的协议、安全性能、远程管理、能够用于缓存的Web传输的类型以及价格和售后技术支持等。
以下,我们对目前业界可提供的Cache产品和Cache技术作简单的介绍。
代理型Cache和容器型Cache
到目前为止,至少有16家生产商推出了他们各自的Web Cache产品,其中有几家把Cache作为代理服务器的一部分进行销售,例如CSM-USA、Deerfield Communication、Microsoft、Netscape Communications、Novell和Ositis,另外几家(如Cacheflow、Cisco Systems、Cobalt Networks、Entera、Eolian、IBM、Infolobria和Intel)则把Cache作为容器进行销售。
是什么把Cache分为这两类呢?那就是速度。Proxy Cache在通用的平台上用软件来实现缓存功能,而典型的容器Cache则包含有运行于专用硬件平台上的缓存软件,如Intel公司的Monet系列。相比较而言,容器型的Cache速度更快,性能也更好。这一点,即使是一些代理服务器的生产商也不得不承认。

影响Cache性能的主要指标
假如某个用户要购买Cache,那么他最关心的莫过于两个问题,一个是性能,一个是价格。而价格显然是受性能影响的,只有弄清楚产品的性能,方才知道其价格合理与否。任何Cache的性能都会受到一系列因素的影响(包括线连接速率和网络的拥挤情况等)。用户怎样才能更快、更准确地了解Cache的性能呢?首先,要从生产商那里了解到Cache能够同时支持多少连接、每秒钟能够供应多少对象(object)、它的吞吐量是多少以及平均对象命中率和平均字节命中率是多少等技术指标。获得连接的数目将有助于网络管理员选择适当容量的Cache。
吞吐量是影响性能的另一个重要因素。如果连接到Internet的链路是T3(45Mbps),那么所需的Cache最好能够处理45Mbps的通信量,否则Cache 就会变成瓶颈。现有的容器Cache至少都可以处理一个T1(1.544Mbps),有些生产商声称他们的产品可以处理一个T3。代理服务器Cache的生产商通常不会透露产品的吞吐量,因为吞吐量会受到底层硬件的影响。
  接下来再看对象命中率和字节命中率。对象命中率是用户从Cache中取到的对象数与所获得的总对象数(包括从Internet上获取的对象数和从Cache中获得的对象数)的比值,字节命中率是用户从Cache中获取对象的平均字节数和从网上获取的全部对象的平均字节数的比值。例如,某个Cache的命中率是50%,就意味着Cache可以满足一半的数据请求,而另外一半数据则需要通过Internet得到。因此,从另外一个角度看,使用Cache意味着节约了带宽,也因此提高了性能。目前大多数Cache的命中率都在30%左右,容量大一些的Cache通常可以达到60%到65%。对于容器Cache而言,硬盘空间和内存容量的大小对Cache命中率的影响很大。一般说来,硬盘的空间越大,Cache中保存的对象就越多,用户所需页面能够在Cache找到的可能性就越大。另一方面,RAM用于存储那些访问频率最高的内容,因为RAM的存取速度要比硬盘快得多。多个硬盘可以提高Cache的性能。硬盘是Cache系统中速度最慢的部件,一块硬盘在某一时刻只能处理一个输入/输出操作,但如果有多个硬盘并行的话,Cache就会以更快的速度工作。
有些影响速度的因素是不能量化的,例如文件系统的组织。组织紧密的文件系统可以大幅度地提高Cache的性能。许多容器Cache的生产商为了提高它们的产品性能,在操作系统和文件系统上都下了很大的功夫。
被动式Cache和主动式Cache
  如何使Cache内容保持最新也是Cache系统要解决的一个问题。被动式的Cache只有当用户提出信息请求时,Cache中的内容才会更新。主动式的Cache在用户请求数据前就会把Web内容预取到Cache中。所有的生产商都提供被动式的Cache,这可能是因为它是HTTP标准的一部分。
被动式Cache通常会在查看内容是否改变的请求提出时,检查服务器。如果Cache中对象的修改日期早于服务器中对象的修改日期,Cache会从服务器中获取对象的新拷贝。如果服务器上的内容没有改变,Cache就会把本地的副本提供给用户。这一方法可以保证用户总是能够得到最新的数据。但由于每个请求都要对数据进行一次检查,所以响应时间就延长了。解决这个问题的一个办法是调整这种被动的Cache机制。或者是预定方式的(scheduled),或者是自动方式的(automated)。如果使用预定方式的预取方案,网络管理员需要事先决定哪些站点是最流行的,然后明确地设定Cache在特定的时间内去获取这些站点中的对象。
代理式Cache和透明式Cache
  接下来看一下怎样配置Cache。这里有两种选择:代理模式或透明模式。工作在代理模式的Cache必须对浏览器进行设置,使之直接向服务器提出请求,然后由服务器代表用户把请求发送到Internet上。代理方式的优点在于网络管理员可以控制用户的行为,并且能够知道哪个用户在访问哪些站点;缺点是把每个浏览器与代理服务器通过配置联系在一起是一件非常烦琐的工作,特别是对规模较大的网络来说更是如此。在透明方式下,路由器、负载均衡器和负载均衡交换机可以把通信数据传递给Cache,这样,就无须对浏览器进行改动,而只要对交换机或路由器进行配置就行了。
Cache 的 通 信 类 型
  能够用于缓存的通信类型是另一个要考虑的问题。由于设计这些产品的本意在于缓存Web传输,所以每种产品都支持HTTP协议。随着Intranet的发展,这种能力可以在拥挤的主干网上有效地节约带宽。Intel公司的产品还可以为NNTP(network news transfer protocol)提供缓存服务。
Cache的群集支持
  以上讲到了Cache的几个方面。无论Cache怎样设计,它最终都将装满信息,致使效率下降。使用群集技术可以在一定程度上解决这一问题。几乎所有的Cache都能够通过专用或标准的协议实现同一站点Cache 间或不同站点设备间的群集。使用标准协议实现群集能够保证不同生产商的Cache协同工作。这里有两个标准协议:ICP(Internet Caching Protocol)和CARP(Cache Array Routing Protocol)。使用ICP协议实现群集时,会遇到下述情况:当某个Cache收到数据请求,而所请求的数据又不在该Cache中时,它会检查与之群集在一起的所有Cache,以便弄清所请求的数据是否存储在其他的Cache中,这样一来就延长了响应的时间。CARP为了解决这一问题,使用一个运行hash算法的主Cache来决定应该向哪儿发送请求。
如果网络管理员想要建立一个更快的群集系统,那么他可以购买负载均衡产品或Layer 4交换机,并将其安装在Cache前端,这种方法只适用于透明方式。在这种方式下,采用了一种WCCP的协议,这种协议使路由器或Layer3等设备可以与Cache通信以转发请求信息;当然,这还需要Cache也支持WCCP协议才行。这种方案是Cache服务器与相应的路由器或交换机相配合。这里要求与Cache服务器相连的路由器或交换机具有应用层清醒的特性(Application Aware),它能对经过它的所有数据包进行分析,检查数据包的TCP端口号,如果是配置中制订的端口,它就会重定向(Redirect)到后台与它相连的Cache服务器,这一切对客户端都是透明的。它的好处是这个检查数据包并且重定向的过程一般是用专用的芯片来实现,已近乎第二层的线速完成;另外减轻了Cache服务器的负载,因为并不是所有的数据包都要经过Cache服务器。
我们建议的Intel解决方案是ES550交换机加四个专用Cache服务器:Monet1000。
ES550交换机新的固件Cork7(Firmware2.61)支持上述功能,并且能做到Cache服务器的负载平衡(Cache Server Load Balancing),它会根据HTTP、FTP等请求数据包的目的IP地址来决定将HTTP、FTP等请求重定向到哪一台Cache服务器上,甚至它还支持用户设定DNS域名或IP地址来人工调整Cache服务器的负载。

TOP

发新话题