Win 2008 R2实战之Branch Cache入门

作者:张伟日期:2010-05-28

  这天,Contoso公司的广州办又抱怨工作时间访问总部的文件服务器很慢,经常无法正常打开共享文件。IT部接到抱怨后,开始分析广州办的网络使用情况,结果发现,除了日常互联网应用外,大家访问总部文件服务器的时候,经常需要下载相同的文件,这样重复性的访问,加重了广州办本来就不宽松的网络负载压力。IT经理让大家出谋划策,看如何解决既满足广州办访问互联网的需求,又能加速访问总部文件服务器的速度。小赵沉思几秒,脱口而出:试试Windows Server 2008 R2的Branch Cache吧。

一、 Branch Cache 简介

  也许大家的公司会出现这样一种情况:总部的员工访问总部的文件服务器快速高效,因为他们处于局域网中。但对于远程分支机构办公的员工,访问总部的文件就没那么走运了,在网络应用高峰时期,使用一个稍微大一些的文档,需要花费几分钟甚至几十分钟的时间。即使网络应用负载不高,广域网的稳定性及速率也不尽人意。这样的降低分支机构的员工的工作效率,让人很不爽。

  Branch Cache正是为此而设计的。当在Windows 7和Windows Server 2008 R2上启用了Branch Cache后,总部的web和文件服务器内容在分支机构请求访问时被缓存到分支本地网络,当该分支的另一客户端请求访问相同内容时,经过总部服务器的验证授权后,则可以直接从分支本地网络访问它。

二、 Branch Cache的缓存模式

  Branch Cache的缓存模式分为两种:分布式缓存和托管式缓存。如图1
 

图1

  托管式缓存(Hosted Cache mode)需要Branch Cache功能被部署在分支机构的Windows Server 2008 R2上,当Windows 7客户端第一次从总部服务器中访问数据时,会先通过广域网获取数据,同时也被缓存服务器缓存,当分支机构又有访问相同数据的请求时,总部服务器只返回数据的哈希值,而由缓存服务器来提供数据访问需求。

  分布式缓存适用于分支机构少于50个员工的情况,它不需要单独的服务器提供缓存,而是利用被配置成分布式缓存模式的Windows 7客户端为其他经过验证的Windows 7客户端提供已缓存的请求数据。但是此模式通过组播请求数据的时候,不能跨越子网。另外,当分支机构可以提供内容缓存的Windows 7客户端离线或者不可用时,将无法提供内容给请求客户端。

  注意:一个客户端不能同时使用托管和分布式缓存。如果客户端被配置成托管缓存模式,那将不会维持本地缓存内容。如果客户端被配置成分布式缓存模式,那它不会联系本地托管模式的Branch Cache的服务器。

三、 托管缓存是如何工作的

  图2描述了托管缓存模式,并提供了文件缓存和检索过程的简要说明。
 

图2

  具体工作过程如下:

  1. 分支机构的Windows 7客户端连接到运行Windows Server 2008 R2的总部数据中心,请求所需内容,这个过程与不使用Branch Cache获取内容时一样。

  2. 数据中心服务器对客户端进行验证,并验证其是否有权访问数据。如果验证成功,数据中心服务器将使用原来的通信通道返回一个内容元数据,而不是内容本身。

  3. 客户端A使用元数据中的标识符(哈希值)搜索本地托管模式的Branch Cache的服务器。由于还没有客户端检索过该内容,它还没有被缓存到分支本地网络。因此,客户端A会直接从总部数据中心检索内容。

  4. 客户端A从总部数据中心下载到内容后,与托管缓存服务器建立SSL连接,并发送内容标识符。

  5. 缓存服务器连接到客户端A,检索缓存,下载内容并存储在缓存池中。

  6. 客户端B在总部数据中心请求相同的内容时,数据中心验证用户并返回内容标识符。

  7. 客户端B就使用这些标识符向托管缓存服务器请求内容。托管缓存服务器加密数据并发送给客户端B。

  8. 客户端B解密数据,并校验收到的缓存内容的哈希值,与总部数据中心提供的值进行比较。确保获得的内容没有被修改。

四、 分布缓存是如何工作的

  图3描述了分布缓存模式,并提供了文件缓存和检索过程的简要说明。
 

图3

  分布缓存请求数据的过程与托管缓存类似,除了被请求的数据发送到内部网络的客户端中,并且不需要缓存服务器。

  1. 分支机构的Windows 7客户端连接到运行Windows Server 2008 R2的总部数据中心,请求所需内容,这个过程与不使用Branch Cache获取内容时一样。

  2. 数据中心服务器对客户端进行验证,并验证其是否有权访问数据。如果验证成功,数据中心服务器将使用原来的通信通道返回一个内容元数据,而不是内容本身。

  3. 客户端使用内容元数据中的标识符在分支本地网络搜索。由于还没有客户端检索过该内容,它还没有被缓存到分支本地网络。因此,客户端A会直接从总部数据中心检索内容并缓存到客户端本地。

  4. 客户端B也从总部数据中心请求相同的内容。数据中心也对客户端进行验证和授权,像没有启用Branch Cache一样。如果验证成功,也会返回一个请求内容的元数据。

  5. 客户端B在分支本地网络使用WS-Discover组播协议请求数据内容。

  6. 客户端A使用SSL加密通道将已缓存的内容数据发送给客户端B。

  7. 客户端B解密数据,并校验收到的缓存内容的哈希值,与总部数据中心提供的值进行比较。确保获得的内容没有被修改。

  关于Branch Cache的元数据:为了能确保传递正确的内容给发出请求的客户端,启用了Branch Cache的服务器会使用哈希值来确定内容。当用户访问启用了Branch Cache的文件或web服务器时,会返回给用户一个SHA-256的哈希值,而不是内容本身的哈希值。由于这个元数据值小于真实内容的数千倍,所以大大降低了通过广域网链路的数据量。

  总结:通过上面的描述,想必大家对Branch Cache已经有一定了解了。下一篇,将开始在Contoso公司的广州办部署Branch Cache,看看它到底是如何解决广州办员工的烦恼的。