Chinaunix首页 | 论坛 | 博客
  • 博客访问: 521912
  • 博文数量: 213
  • 博客积分: 7027
  • 博客等级: 少将
  • 技术积分: 1974
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-24 08:51
文章分类

全部博文(213)

文章存档

2007年(213)

我的朋友

分类: LINUX

2007-09-07 17:17:32

             WEB Cache 技术浅谈
    计算机网络技术的成熟和不断发展使之成功地应用在了许多领域当中。其中,Internet可以说是大家最为熟悉,同时也是最为成功的一个范例,因为它已经渗透到了人们工作、生活、学习和娱乐的方方面面。Internet上的信息量和用户数正以惊人的速度不断增长,这对众多企业和ISP来说是一个挑战。因为他们要解决WAN网络带宽拥挤和传输费用高的问题,要提高网络服务质量,要提高Internet/Intranet上内容的可用性,只有这样才能使Internet不会成为一块“食之无味,弃之可惜”的鸡肋。WEB Cache技术正是在这样一种环境下发展起来的。
WEB Cache技术在现有网络架构的基础之上,利用传输本地化的方法达到了优化使用网络带宽、提高网络服务质量、增强网络信息可用性以及提高网络灵活性的目的。WEB Cache为什么能实现上述功能呢?通过下面的介绍,大家就会清楚了。
一、Web浏览器中的Cache功能
提起WEB Cache,有些人可能会感到比较陌生,但是如果提起IE和Netscape Navigator来的话,恐怕可以说是无人不知、无人不晓了。用过这两种浏览器的人可能会遇到过下面的情况:假如你是一位通过拨号上网的用户,你在未拨号或号码未拨通之前就启动浏览器访问某个网站,该网站的WEB页面仍然会显示在你的面前,而且速度比往常还要快,这是为什么呢?聪明的用户马上就会联想到,一定是浏览器将以前访问过的页面存放在本地的硬盘上了。没错!这正是浏览器提供的一项功能。拿IE来说吧,你可以在IE中通过“Internet选项”对Internet临时文件进行设置,将已查看过的Internet页存放在本地硬盘特定的文件夹中,以便提高以后的浏览速度。这和WEB Cache的工作原理是一致的。用户可以通过这种方法来加快自己的浏览速度。
接下来让我们看一个例子,假设在一个局域网中有A、B、C三台机器,它们都会经常访问同一些网站,那么用上面讲到的方法可以将这些被访问网站的某些信息分别存储在A、B、C三台机器的硬盘上,以提高它们各自的浏览速度。有人会问,既然是同样的信息,为什么不能存储在一台机器上,而让另外两台需要这些信息的机器到这台机器上来存取呢?这样既可以提高浏览速度,又可以节省空间,特别是当局域网中机器数量众多时,这样做就显得更为有必要了。遗憾的是,仅仅使用WEB浏览器(如IE)中提供的Cache功能尚不能做到这一点,但这恰恰是WEB Cache要解决的问题。



二、代理服务器Cache
Web Cache基本可以分为两类,一类叫做代理服务器Cache,另一类叫做容器Cache。




代理服务器Cache作为代理服务器的一部分来完成Web信息缓存任务,它一般是运行于通用硬件平台和操作系统上的缓存软件,例如Microsoft的Microsoft Proxy Server 2.0软件中就设置了Cache功能。如图2所示,代理服务器一般位于Web客户端和Internet Web服务器之间,它就象一个收发员,收到客户端发往Web服务器的请求之后,先要检查一下自己是否能满足该请求,如果能的话,就将存储在本地的Web信息提供给用户,而不必从WAN上去获取;如果用户请求的内容没有存储在Cache中,代理服务器就将用户的请求转发给到相应的Web服务器上,Web服务器响应用户请求传送给用户的页面会先到达代理服务器。代理服务器会将页面存放在本地的Cache中,然后再把它转发给相应的Web客户端。
除此之外,代理服务器还具有过滤用户请求的功能,例如可以防止用户访问某些特定的站点。
代理服务器Cache的缺陷主要包括以下几方面:
* 代理服务器的主要目的是使若干个用户通过代理服务器连接Internet,虽然其中设置有Cache功能,但由于是用软件实现Cache功能,所以其Cache功能往往受到硬件和操作系统的限制,不能达到优化;
* 代理服务器易受网络负载过重的影响;
* 由于代理服务器是所有用户访问Internet的必经之路,本地Web客户端和Internet上Web服务器之间传输的所有数据包都要经过代理服务器的检查,这一方面有可能使代理服务器成为数据传输的瓶颈,另外一方面如果代理服务器出现故障,所有通过代理服务器访问Internet的用户都将无法连接Internet了。
* 如果某个用户想要通过代理服务器接入Internet的话,他必须在自己本地的浏览器中进行设置,使之指向代理服务器。例如,在IE 4.0中,通过“Internet选项”->“连接”中的代理服务器设置就可以使浏览器通过某个代理服务器访问Internet。
下面让我们来看一个具体的例子。
Microsoft Proxy Server 2.0是一个集代理服务器、Cache功能和防火墙功能于一身的软件,Microsoft声称使用该软件中的Cache功能平均可以节省50%的响应时间。Microsoft Proxy Server 2.0还可以实现分布式Web Cache,这种分布式Web Cache能够提高整个系统的容错能力、升级能力和负载均衡能力,因此可以用于要求较高的企业和ISP。另外,Microsoft Proxy Server 2.0可以支持几种不同的Internet协议和服务(如HTTP、FTP)。下面我们就该产品中Cache内容的刷新算法和分布式Cache的实现做简单的描述。
Microsoft Proxy Server 2.0提供主动的Cache预取功能,它能够自动地测定用户访问最频繁的Web站点以及这些站点中Web信息的更新频率。然后网络管理员可以在软件中为存储在Cache中的Web内容设置一个生存时间(TTL-Time To Live),一旦存储在Cache中的Web内容超过了这一生存时间,Cache就会自动的到Internet上去获取这些内容的最新拷贝,并将之存放在Cache中。这些功能选项和参数在系统中设定以后,Cache就会自动地按照设定去执行预取操作,不需要网络管理员的干预。另外,Microsoft Proxy Server 2.0还会检测CPU的占用情况,并根据CPU的使用情况决定何时进行预取,这样做的目的是尽量在CPU空闲的时候执行预取操作以避免与CPU工作高峰期的其他网络传输产生冲突,尽可能地提高整个系统的效能。
接下来看一下Microsoft Proxy Server 2.0中分布式Cache的实现,这也是Microsoft Proxy Server 2.0的一个特点。分布式Cache的优点在于可以减轻每一个代理服务器的负担、具有较强的容错能力、能够更好地利用Cache中的数据为Web客户服务。Microsoft Proxy Server 2.0提供了三种实现分布式Cache的手段:代理服务器阵列(图3)、代理服务器链(图4)以及这两种方法的结合(图5),其工作过程与下面将要讲到的容器Cache的分层配置基本相同。关于如何用Microsoft Proxy Server 2.0实现Cache阵列和Cache链,这里就不多说了。





三、容器Cache
容器Cache一般是指专门的硬件平台以及运行于其上的缓存软件,它的性能往往比代理服务器Cache要好。有些生产商习惯于把自己的容器Cache产品称为Cache引擎,如Cisco的Cisco Cache Engine 500系列。下面我们通过图6来看一下容器Cache的工作原理。


首先,Web客户端只有通过路由器才能访问到Internet;其次,通过路由器设置使之将来自Web客户端的Web请求路由到Cache引擎。这样一来,客户端发出Web请求后,Web请求首先到达路由器,路由器将Web请求路由到Cache引擎,Cache引擎检查自己存储的Web信息是否能满足用户的Web请求,如果能的话,就从本地将相应于请求的Web信息通过路由器传送给用户,如果不能的话,就将Web请求转发到Internet上相应的服务器上,当服务器返回信息时,Cache引擎将信息存储在本地后再发送给用户。在整个工作过程中,路由器和Cache引擎所做的工作对Web客户端来说是完全透明的,不需要在Web客户端做任何的变动。这一点对大企业和ISP来说非常重要,因为这样既便于他们集中管理,又为他们省去了许多不必要的麻烦,更重要的是便于整个Cache系统以后的增容和扩充。
容器Cache对用户和网络操作的透明性使得网络管理员可以在几个不同的网络中同时放置几个容器Cache,并使它们具有某种层次,以尽可能地提高网络系统的性能和服务质量,而且这种层次结构往往与实际应用环境中企业的分支机构相对应。下面分别简单介绍以下在ISP和企业用户中如何分层次地配置容器Cache。
首先看一下在ISP中容器Cache的层次应用(图7)。如图所示,ISP将大容量的Cache仓库放在其Internet主访问点附近,这样一来,ISP所有的POP(Points Of Presence)都可以从Cache仓库中受益。假设client A有WEB请求,那么这一请求首先会传送到Cache3,如果Cache3能够满足请求,Client A就会马上得到它所请求的信息;如果Cache3不能满足Client A的请求,它会将Client A的请求上传到ISP区域站点的路由器,位于ISP区域站点的路由器会将Client A的Web请求传送给Cache1,如果Cache1可以满足请求,它会将Web信息传输给Cache3,然后再由Cache3传送给Client A;依此类推,下一级Cache不能满足的Web请求会上传给上一级的Cache,直至将Web请求通过Internet传送给相应的服务器为止。



下面再让我们看一下在企业中怎样实现容器Cache的多层次应用,如图8所示,其工作过程同上面所讲大致一样,只是网络的结构有所不同而已。很明显,无论对ISP还是企业,这种多层次的应用既可以有效地减轻Cache的负担,又可以加快网络的响应速度。


容器Cache是为实现Web缓存任务而设计的专用产品,其中一般使用专门为实现其Cache功能而设计的内嵌操作系统、面向线程的实时文件管理系统。容器Cache中安全、实时的内嵌操作系统没有Unix和Windows NT中导致文件存取速度减慢和加重网络通讯负担的进程上下文;特殊的文件管理系统可以消除文件碎片,避免通用文件系统中的长目录查找,因此容器Cache的效率较传统的代理服务器而言,性能得到了大大的提高。

四、总结
通过以上对代理服务器Cache和容器Cache的介绍,不难看出,Cache用本地化存储和传输的方法减少了WAN上的数据流量,不但节省了WAN带宽,而且减少了响应时间、增强了信息的复用性。前面提到Cache阵列和Cache仓库时,没有具体介绍其实现方法和所用的协议,有兴趣的朋友可以看一看有关ICP、CARP和WCCP方面的资料。

                                作者 ::中国建设银行营业部 刘刚






阅读(12297) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~