在覆盖网络中利用压缩和差异化引擎的基于主机/路径的数据差异化装置和系统的制作方法

文档序号:13841765阅读:122来源:国知局
在覆盖网络中利用压缩和差异化引擎的基于主机/路径的数据差异化装置和系统的制作方法

技术领域

本申请一般涉及通过网络的数据通信。



背景技术:

分布式计算机系统在现有技术中是公知的。一个此类分布式计算机系统是由服务提供者操作并管理的“内容传递网络”或CDN。服务提供者通常代表使用服务提供者的共享基础设施的第三方(客户)提供内容传递服务。此类型的分布式系统有时被称为“覆盖网络”并且通常是指由网络或多个网络与软件、系统、协议和技术一起链接的独立计算机的集合,所述技术被设计以便于各种服务,诸如内容传递、网络应用加速、或外包起源站点基础设施的其它支持。CDN服务提供者通常经由数字财产(诸如网站)提供服务传递,数字财产被提供在客户入口中并且然后被布置到网络。

数据差异化是利用资源的共享先前实例的公知的技术和方法,也称为服务器与客户端之间的在压缩术语中的共享字典之内的数据版本;所述进程通过仅仅发送自那些先前实例以来已经发生的差异或变化而工作。数据差异化涉及压缩,但是稍微有区别的概念。具体地,直观地,差异(“diff”)是一种压缩形式。只要接收者具有与发送者相同的初始文件,该发送者就可以给接收者diff而不是整个新文件。 diff实际上说明如何从旧文件创建新文件。它通常远小于整个新文件并且因此是一种压缩形式。文档的第一版本与同一文档的第二版本之间的diff是数据差异;数据差异是利用文档的第一版本作为预设字典的文档的第二版本的压缩的结果。

许多HTTP(超文本传输协议)请求使得检索请求的客户端已经对其具有高速缓存条目的资源的仅仅稍微修改的实例。例如,源服务器可以发布用于列在S&P 500中的每个公司的股票行情的页面。随着时间的推移和行情变化,整个页面仍然非常类似。公司的名称和它们的订单符号、CSS、图像、和一般的HTML格式化可能仍然从版本到版本未改变。但是,当客户端请求更新的页时,它将全面结束下载内容,甚至上述讨论到的没有不同于客户端已经在先前版本中下载的数据的那些项。因为这样的修改更新可以是频繁的并且修改通常远小于实际实体,所以提出用于HTTP的“δ编码”的概念-通过其发送实体将传送变化的最小描述、而不是资源的整个新实例。在互联网请求注解(RFC)3229中描述本构思,其是使得网络带宽的利用更有效的方式。

每个RFC 3229的δ编码并不解决出现在分布式覆盖网络的背景中的所有问题,诸如内容传递网络。最大的关注是该方法基于进行差异化的源服务器。但是,在覆盖网络情况下,服务提供者期望为客户提供服务因此它们不必添加新的软件到它们的源服务器。实际上,许多客户将具有禁止它们添加软件或相反使得添加软件困难的厂家解决方案。因此,覆盖提供者将很可能不得不在位于源服务器前面的另一个服务器中进行差异化,主要因为提供者不具有呈现在盘或存储器内的并且针对其可能需要计算数据差异化的所有新版本数据。在此背景中,覆盖网络提供者通过有线接收数据并且必须等待比盘读取或存储器取装更长的数量级以全部获得它。在符合RFC 3229的解决方案中,没有办法对块开始差异进程并且然后将那些发送到客户端同时从源中读取新的源块。另外,RFC 3229依赖于e标签和“最后一次修改的时间”以参考先前版本文档。

对此问题的另一个方法由叫做Google SDCH的技术提供,其是另一个HTTP数据差异机制。它与RFC 3229之间的主要区别是SDCH 允许字典是除了内容的先前版本的某些东西。它也允许字典在多种资源之间共享。例如,如果存在三个HTML文件,每个包含常见短语的集合,则SDCH方法能够创建然后可以由每个HTML文件参考的单个字典。用户代理分别地下载字典(D);每当它需要HTML文件中的一个时,它指示服务器“给我利用字典D压缩的HTML文件X”。服务器然后发送已压缩文件并且客户端利用共享的字典将它解压缩。虽然此方法是高效的,但是没有容易的方式来计算共享的字典。

虽然这些公知的差异化方法提供有用的优点,但是还需要提供增强的技术以用于覆盖网络的背景中的数据差异化。



技术实现要素:

互联网基础设施传递平台(例如,由服务提供者操作的)提供覆盖网络。覆盖网络包括可能体验延迟的通信支路之间的端点。一个端点(“发送”对等方)通常与源服务器基础设施相关联或接近源服务器基础设施安置。另一个端点(“接收”对等方)通常位于或接近终端用户接入网络。接收对等方通常是边缘服务器。根据此公开的数据差异化技术使得对客户端的请求的来自于服务器的响应(全部或部分)由与服务器和客户端二者均已经高速缓存的请求的资源的先前版本的数据差异组成。为此,并且根据此公开,设置一对数据差异化感知进程,一个在源服务器上或附近(在发送端)并且另一个在最接近于终端用户(在接收端上)的边缘处,并且这些进程维护那两个相对端之间的对象字典。数据差异化感知进程每个都运行压缩和差异化引擎。每当请求的对象流过发送端(从服务器到客户端)时,引擎将对象数据替换为到对象字典中的指针。在连接的另一(接收)端,当数据到达时,那里的引擎利用相同的对象字典重新集合数据。

该方法用于相同的主机/路径之内的版本变化。在客户端(接收) 端上的对象字典包括对应于它已经看见的对象的每个版本的指纹。在服务器(发送)端上的对象字典包括对应于它已经传递的对象的每个版本的指纹。在服务器端上的字典可以具有不呈现在客户端字典中的指纹,反之亦然。这里描述的技术在至少一些指纹被共享并且在服务器与客户端之间共用时起作用。当对于新版本的客户端请求被接收时 (并且需要被向服务器端转发以用于处理),与客户端相关联的数据差异化感知进程在转发请求中包括它的每一个指纹(对应于它具有的版本)。然后,当在服务器端上的数据差异化感知进程接收那些指纹时,它检查它的字典以确定被发送的哪一个指纹可能是请求的匹配。通常,“最新”版本将被选择,基于最新的版本可能具有最小数目的变化(与先前版本相比)的假设。但是,最新的版本的使用不是限制。在服务器上的数据差异化感知进程然后从源中取得请求的新版本,执行数据差异化(请求的新版本相对于作为匹配选择的版本)以生成差异(DIFF)。在服务器上的数据差异化感知进程生成用于请求的新版本的指纹并且将它存储在它的字典中(关联数据并且连同数据本身)。在发送端上的数据差异化感知进程返回具有压缩的数据的(DIFF)响应数据流,以及包括被使用(从客户端接收的那些中的初始选择当中) 以进行差异化的版本的指纹的标识的响应报头。在接收端的数据差异化感知进程然后使用指纹以对对应的版本(其已经呈现在客户端上) 应用DIFF以重新创建请求的版本,其然后被返回到请求的客户端。在接收端上的数据差异化感知进程也生成请求的新版本的指纹并且将新的指纹存储在它自己的字典中(与数据关联并且连同与数据本身)以使得字典仍然同步。

上文已经概述了本主题的一些更多相关特征。这些特征应当被解释为仅仅说明性的。可以通过以不同的方式应用公开的主题或通过修改将描述的主题来获得许多其它有利的结果。

附图说明

为了更完全地理解本主题和它的优点,现在结合附图参考以下描述,其中:

图1是示出了配置为内容传递网络(CDN)的公知的分布式计算机系统的方框图;

图2是代表性的CDN边缘机器配置;

图3是用于实施此公开的数据差异化方法的代表性的广域网 (WAN)代表性架构;

图4是在覆盖网络和用户私有网络之内实施的更具体的实施例;

图5是根据此公开的差异协议的diff块的代表性格式;以及

图6是根据该协议的指纹块的代表性格式。

具体实施方式

图1示出了由这里的技术扩展以提供单个基于HTTP的平台的公知的分布式计算机系统(如下面描述)。

在公知的系统中,诸如图1所示,分布式计算机系统100被配置为CDN并且被认为具有102a-n个围绕着互联网分布的机器的集合。通常,大部分机器是接近互联网的边缘设置的服务器,即,在终端用户接入网络处或相邻终端用户接入网络。网络操作命令中心(NOCC) 104管理系统中各个机器的操作。诸如网站106之类的第三方站点将传递内容(例如,HTML、嵌入的页对象、流媒体、软件下载、等等) 卸载到分布式计算机系统100,并且具体地到“边缘”服务器。通常,内容提供者通过(例如,由DNS CNAME)将给定内容提供者域或子域化名为由服务提供者的权威性域名服务管理的域来卸载它们的内容传递。期望内容的终端用户被定向到分布式计算机系统以更可靠并且高效地获得该内容。尽管未详细地示出,但是分布式计算机系统也可以包括其它基础设施,诸如分布式数据收集系统108,其收集从边缘服务器使用和其它数据,跨范围或范围集合聚集数据,并且将数据传递到其它后端系统110、112、114和116以便于监控、记录、提醒、计费、管理和其它操作的和行政功能。分布式网络代理118监控网络以及服务器负荷并提供网络、业务和负荷数据到DNS查询进程机制 115,其对于由CDN管理的内容域是权威性的。分布式数据传输机制 120可以用来将控制信息(例如,管理内容、便于负荷均衡的元数据,等等)分布到边缘服务器。

如图2所示,给定机器200包括运行支持一个或多个应用206a-n 的操作系统内核(诸如Linux或变型)204的商品硬件(例如,Intel 奔腾处理器)202。为了便于内容传递服务,例如,给定机器通常运行应用的集合,诸如HTTP代理207(有时被称为“全球主机”或“克隆”进程)、名称服务器208、本地监控进程210、分布式数据收集进程212,等等。对于流媒体,机器也可以根据支持的媒体格式,包括一个或多个媒体服务器,诸如Windows媒体服务器(WMS)或Flash 服务器。

CDN边缘服务器被配置为提供一个或多个扩展的内容传递特征,优选在域特定、客户特定的基础上,优选利用使用配置系统分布给边缘服务器的配置文件。给定配置文件优选是基于XML的并且包括一组便于一个或多个高级内容进程特征的内容进程规则和指令。配置文件可以经由数据传送机制被传递到CDN边缘服务器。美国专利 No.7,111,057示出了用于传递并管理边缘服务器内容控制信息的有用基础设施,并且这个和其它边缘服务器控制信息可以由CDN服务提供者本身、或(经由外联网等)操作源服务器的内容提供者客户提供。

元数据可配置的覆盖网网络代理(诸如图2中的代理207)这里有时被称为全局主机或Ghost进程。

CDN可以包括存储子系统,诸如在美国专利No.7,472,178中描述的,其公开通过引用合并于此。

CDN也可以操作服务器高速缓存分层结构以提供客户内容的中间高速缓存;在美国专利No.7,376,716中描述了一个这样的高速缓存分层结构子系统,其公开被通过引用合并于此。

CDN可以在客户端浏览器、边缘服务器和用户源服务器当中以在美国公开No.20040093419中描述的方式提供安全的内容传递。在其中描述的安全的内容传递一方面在客户端与边缘服务器进程之间、另一方面在边缘服务器进程与源服务器进程之间实施基于SSL的链路。这使得SSL保护的网页和/或它的组件被经由边缘服务器传递。

作为覆盖,CDN资源可以用来便于企业数据中心(其可以被秘密地管理)与第三方软件作为服务(SaaS)提供者之间的广域网 (WAN)加速服务。

在典型操作中,内容提供者识别内容提供者域或它期望由CDN 服务的子域。CDN服务提供者关联(例如,经由规范名称、或CNAME) 内容提供者域与边缘网络(CDN)主机名,并且CDN提供者然后向内容提供者提供该边缘网络主机名。当向内容提供者域或子域的DNS 查询在内容提供者的域名服务器处被接收时,那些服务器通过返回边缘网络主机名进行响应。边缘网络主机名指向CDN,并且边缘网络主机名然后经由CDN名服务被解析。所以,CDN名称服务返回一个或多个IP地址。进行请求的客户端浏览器然后对与IP地址相关联的边缘服务器做出内容请求(例如,经由HTTP或HTTPS)。请求包括具有源内容提供者域或子域的主机报头。在接收到具有主机报头的请求时,边缘服务器检查它的配置文件以确定请求的内容域或子域是否实际上由CDN进程。如果是的话,边缘服务器将它的内容进程规则和指令应用于在配置中指定的域或子域。该条内容进程规则和指令可以位于基于XML的“元数据”配置文件内。

作为附加背景,在美国专利No.6,820,133和7,660,296中描述的技术可以用来便于诸如图1所示的覆盖网络中的边缘与转发代理之间的分组传递。

利用恢复压缩和差异化引擎的基于主机/路径的重复数据删除

现在图3显示用于实施此公开的方法的代表性结构。为简单起见,客户端300被显示为与边缘Ghost进程302交互,其随后与接近租用源306安置的转发Ghost进程304进行通信(通常通过广域网 (WAN))。如将描述的,每个Ghost进程具有与其关联的重复数据删除引擎308、用于字典的关联的数据存储器、和其它有关的进程。总体来说,这些元素有时被称为重复数据删除(或“重复数据删除”) 模块。Ghost http代理通过接口与重复数据删除模块进行通信。在可替换实施例中,重复数据删除功能被自然地实施在GHost中。一般地说,GHost可以是任何可配置的http代理。

图4示出更具体的实施例。在此情况中,终端用户400已经经由覆盖网络DNS以常见的方式与边缘服务器机器402相关联。“终端用户”是运行在客户端机器(例如,桌上型计算机、膝上型、移动设备、平板计算机、等)上的网络浏览器用户代理或运行在此类设备上的移动式应用(应用)。“终端用户”经由HTTP或HTTPS与边缘服务器机器通信,并且此类通信可以遍历其它网络、系统、和设备。边缘服务器机器运行由覆盖网络提供者管理的元数据可配置的网络代理进程(GHost)404,和被称为Arcade 406(用于“恢复压缩和差异化引擎”)的关联的重复数据删除进程。如将描述的,Arcade进程执行用于相同的主机与路径(URI)内的类似文件(版本变化)的数据压缩。边缘服务器机器402可以是对一个或多个“父”节点的“子”,诸如运行在另一个覆盖服务器设备(未示出)上的父Ghost进程408。在此示例中,Ghost进程408是“穿越”并且不提供差异化功能;它可以被省略。

这里使用“Arcade”简称仅仅用于示范性目的,并且不应该被理解为指代(或限制于)任何特定产品或服务。

如还在图4中看到的,来自于客户端的请求定向到“源”服务器 412。源(或目标)服务器412是通常在覆盖网络用户基础设施(或也许一些其它托管的环境,诸如第三方基于云的基础设施)中执行的服务器。通常,源服务器412向网站提供基于网络的前端或期望利用覆盖网络基础设施被加速的网络可访问的客户应用。在此示例情况中,源服务器412在客户自己的私有网络414中运行。客户私有网络 414包括物理机器415。该机器(或客户网络中的一些其它机器)支持另一个网络代理进程418,和关联的Arcade进程420。网络代理418 不需要是元数据可配置的,它也不需要被覆盖网络主动地管理。

以下是端到端流程的描述。在此情况中,如上所述,“GHost”是指运行在覆盖网络中边缘设备上的元数据可配置的网络代理进程,“ATS”是指运行在客户网络或基础设施但是不同于覆盖网络内的设备上的覆盖网络网络代理进程,以及“Arcade”是指执行用于相同主机和路径内的类似文件(版本变化)的数据压缩的压缩和差异化引擎进程。在此实施例中,GHost(或ATS)进程看情况可以与关联的 Arcade进程经由接口(例如,localhost)进行通信。

如将描述的,Arcade是处理网络重复数据删除的进程。它运行在源处或附近以及在最接近于最终用户的边缘初并且维护那两个相对端之间的对象字典。每当请求的对象流过一端,Arcade将对象数据替换为指向对象字典的指针。在连接的另一端,当数据到达时,Arcade 进程利用相同的对象字典重新集合数据。因为对象字典参考远少于它们替换的数据,所以对象最终被大大减少(或压缩)。Arcade可以处理所有类型和大小的对象。如同示出的,以及为了Arcade以提供最大性能益处,期望接近客户的源基础设施。在如图4所示的代表性实施方式中,覆盖网络提供者提供在客户的基础设施(私有网络)之内运行的软件,例如,作为虚拟机(VM)或“边缘设备”。边缘设备 410优选地位于或者DMZ中或者在企业防火墙后面并且它可以运行在由覆盖网络用户支持并管理的超控制器(例如,VMware ESXi(v. 4.0+))416上。在一个优选实施例中,边缘设备被分布为经由覆盖网络客户入口(外联网)下载的64位虚拟设备。每个边缘设备需要至少一个可公开路由的IP地址并且可以被覆盖网络优选地通过安全连接配置。

作为附加背景,以下描述字典高速缓存的构思。术语“字典”用于描述的目的。在HTTP中,响应一般符合两个类别:那些可以被高速缓存并且用作对后续请求的响应的类别,和那些不能被高速缓存的类别。如下面将描述的,这些高速缓存的项目被存储在“对象高速缓存”中。换句话说,对象高速缓存包含可以响应于请求(给定正确的条件:适当的URL、匹配的元数据(例如,边缘服务器内容处理指示)、来自于客户端的非超越的非存储请求,等等)被直接服务。根据此公开,也使用叫做“字典高速缓存”的单独(有差别的并独立的)高速缓存。此高速缓存包括什么一般应当被视为简单地用于帮助压缩其它数据的不透明数据。此高速缓存中的数据不被响应于请求直接提供。它仅仅是“助手数据”。优选地,完全响应对象被存储在此高速缓存中;但是,只要响应被放在此高速缓存中,它就被当作是不宜在响应中直接发送回的不透明数据。此外,此高速缓存不局限于文档的先前版本。此方法允许标记为“非存储”的动态内容的存储。优选地,此内容不被响应于请求传递但是仅仅用于帮助压缩真实、有效的非高速缓存的响应。这允许系统加速动态内容而不必冒充返回高速缓存的版本的风险。

在本公开的方法中,字典中的对象是文件粒度的,并且具体地是在主机/路径处可恢复的文件。具体地,并如将描述的,该方法用于在相同主机/路径之内的版本变化。在客户端(接收端)上的字典高速缓存包括对应于它已经看见的对象的每个版本的指纹和相关数据。在服务器(发送端)上的字典高速缓存包括对应于它已经传递的对象的每个版本的指纹和相关数据。虽然在服务器端上的字典高速缓存可以具有不存在于客户端的字典高速缓存中的指纹,反之亦然,但是客户端字典高速缓存中的至少一个指纹必须存在于服务器端字典高速缓存中,以便让该技术有效;到在字典高速缓存中存在一个或多个公共指纹的程度上,所述字典被称为“共享的”或同步的。

通常,指纹是版本的散列。版本的散列是将散列函数(例如 SHA-1,MD-5,等)应用到版本内容的结果。当用于新版本的客户端请求被接收(并且需要被转发到服务器端以用于处理)时,与客户端相关联的Arcade进程在每一个它的指纹(对应于它具有的版本)中包括转发请求。然后,当在服务器端的Arcade进程接收那些指纹时,它检查它的字典高速缓存以确定被发送的哪一个指纹可能是对于请求的匹配。通常,“最新”版本将被选择,基于最新的版本可能具有最小数目的变化(与先前版本相比)的假设。但是,最新的版本的使用不被限制。在服务器上的Arcade进程然后从源中取得请求的新版本,执行数据差异化(相对于作为匹配选择的版本的请求的新版本) 以生成差异(DIFF)。在服务器上的Arcade进程生成用于请求的新版本的指纹并且将它存储在它的字典高速缓存中(与数据关联并且连同数据本身)。在发送端上的Arcade进程返回具有压缩数据的(DIFF) 响应数据流,以及包括被使用(从客户端接收到的那些中的初始选择当中)以进行差异化的版本的指纹的标识的响应报头。在接收端上的 Arcade进程然后使用指纹以对对应的版本(其已经存在于客户端上) 应用DIFF以重新创建请求的版本,其然后被返回到请求的客户端。在接收端上的Arcade进程也生成请求的新版本的指纹并且将新的指纹存储在它自己的字典高速缓存中(与数据关联并且连同数据本身) 以使得字典保持同步。

利用以上作为背景,现在描述在其中终端用户(已利用DNS以常见的方式被关联到Ghost进程,如上所述)做出对资源,即然后没有存在于边缘端GHost代理中的版本,的请求的使用情况中的端到端处理流程。

当客户端通过GHost请求用于特定主机的URL时,该处理从步骤(1)开始。URL对应于系统可以对其具有存储在字典高速缓存中的一个或多个版本的资源;这一个或多个版本被认为已先前在客户端处被接收(并且有时被称为“先前版本”)。在步骤(2)处,GHost 检查它的元数据配置。元数据指示ghost去到Arcade。为此,GHost 建立到配置的Arcade端口上的localhost的连接并且发送请求直到 Arcade(利用标准的HTTP)。GHost也内部添加某些报头,报头在步骤(3)之后将被删除。这些报头包括:第一报头,其识别请求是否在SSL上进来,以及第二报头,其识别当请求进来时接触的端口。在步骤(3)处,Arcade添加它自己的特殊报头,这里称为第三报头,其包含Arcade“指纹”,其是用在执行数据差异化的数据。Arcade 然后建立新的连接回到端口80上的localhost上的GHost并且继续转发请求。在步骤(4)处,GHost删除在步骤(2)中添加的第一和第二报头并且将请求转发到或者上游层(如图所示)上或者直接转发到源,优选地利用HTTPS。如果直接到源,则步骤(4)被省略并且该处理继续在连接到ATS(步骤(5))。

在步骤(5)处,(一个或可能更多)父Ghost继续传递请求,但是优选地不试图将请求重新发送到它们自己的localhost Arcade中。它们将请求转发到指定的转发源服务器,其在此示例情况中位于其中另一个网络代理(ATS)等待的客户私有网络之内。在步骤(6), ATS网络代理通过HTTPS接收请求并且经由到配置的Arcade端口上的本地主机的新的TCP连接将它转发到它的本地Arcade进程,完全类似GHost在步骤(2)利用HTTP进行的。在步骤(7)处,Arcade 检查是否它具有在步骤(3)中添加回的报头中指示的指纹。这使得注意它具有什么指纹(或如果没有可用则没有),并且它删除第三报头。然后它连接回到端口80上的localhost上的ATS并且经由HTTP 转发请求。在步骤(8),ATS接收请求、利用HTTP或HTTPS(源被配置使用的无论哪一个)连接到源、并且继续转发请求。该处理然后在步骤(9)处继续,其中源用数据作出响应。在步骤(10)处, ATS用数据响应回Arcade。

在步骤(11)处,Arcade对数据执行差异化,优选地把它压缩成除了用户/边缘GHost端上的对等Arcade之外的不适用于任何其它进程的形式。它然后用此压缩的差异数据连同指示它使用的指纹出自为了进行差异化进行的初始选择的新响应(第三)报头响应回ATS。在步骤(12)处,如果有的话,ATS响应返回父GHost。优选地,父 GHost并不高速缓存此数据。流程然后在步骤(13)继续,父GHost 利用该数据响应回边缘GHost。优选地,边缘GHost也并不高速缓存此数据。在步骤(14)处,边缘GHost利用此数据响应回Arcade。在步骤(15)处,Arcade进程使用在响应(第三)报头中指示的指纹然后执行它接收的差异数据的解压缩。具体地,它删除响应(第三) 报头并且利用现在未压缩的数据响应回GHost。在步骤(16)处,GHost 接收此响应,高速缓存它(如果被配置为这样做),并且将它返回到用户以完成该处理。

以下元数据配置便于以上描述的操作。参考步骤(1)到(2), Arcade被启用用于不是常见的压缩格式的任何文件类型。HTTP范围请求应当被禁止并且不进行。在步骤(3)到(4)处,应当运行的唯一元数据是那些启用或控制什么服务器或分层父应当在下一个跳处。如描述的,响应将不会被在这里高速缓存,并且连接应当出现在 HTTPS上。在步骤(4)-(5)处,任何正常的元数据除高速缓存之外应当在此阶段照常运行;响应将不会在这里被高速缓存。在步骤 (12)到(13)处,像步骤(4)到(5)一样,响应元数据除高速缓存之外自由地运行在这里,其应当被覆写以进行旁路而不是任何类型的存储。在步骤(13)到(14)处,响应元数据将不会运行并且高速缓存应当被覆写以进行旁路而不是任何类型的存储。同样,如任何一个GZIP的内容编码的数据的解压缩应当在这里发生。在步骤(15) 到(16)处,响应元数据自由地正常运行没有修改;高速缓存应当如被配置的那样被执行并且数据的压缩应当如正常的那样被执行。

差异化技术使得客户端向服务器通信它支持数据差异化以及识别它当前具有哪些字典。此通信并没有使得不支持数据差异化的服务器失败。服务器也能够在响应中指示它已经应用了数据差异化(包括它这样做使用的什么方法),并且指示它已经使用哪一个字典。优选地,当在一个块中发送整个输出不能实行时,客户端和服务器二者都支持数据差异化块的流化。协议利用当前HTTP 1.1语义无缝地工作。此外,两个数据差异化感知端点中间的透明代理(但是其本身不是数据差异化感知的)不打断或高速缓存不正确的项。而且,范围请求继续正确地工作,甚至当数据差异化应用于它们时。

优选地,数据差异化仅仅被应用于类似内容编码。如果高速缓存的资源的两个版本存在但是具有不同的内容编码,则它们不被差异化。优选地,并且当给定选择时,数据差异化不对已经被压缩(例如,经由GZIP等)或没有把它们自身适于数据差异化(例如,JPEG、 MPEG,等)的文件使用,而是仅仅对“身份”内容编码使用。此外,小文件可以不受益于该处理,因为需要额外CPU资源。为了同步用于操作的共享的字典文件状态,优选地节点解码给定内容编码但是不编码一个。换句话说,假定客户端机器在“身份”内容编码中具有文件的版本0,并且服务器具有以相同格式的相同字典。这两个字典在它们的当前状态中被完全同步(换句话说,所有八位字节在它们之间相等;它们是精确副本)。现在,假定客户端试图下载源服务器以“gzip”内容编码传递的文件的后续版本1。在此情况中,中间阶段应当将内容编码解码回“身份”。

根据这里描述的技术,覆盖服务提供者删除它在网络上的对等方之间发送的冗余数据,代替发送小得多的指纹。Arcade引擎要求请求的(通常下游)对等方跟踪在它的内部高速缓存中的内容的许多版本,由主机和路径锁上它们,并且然后告诉上游对等方对于每个请求上的那些版本指纹是什么。上游对等方然后从提供的选择中选择它也在它的高速缓存中分享的最佳版本,利用它对新数据执行二元差异化(二元δ)。因此,这里的方法使得压缩对于相同主机和路径内的类似文件(版本变化)发生。

以下提供关于由压缩和差异化引擎实施的协议的补充细节。为了方便起见,此协议有时被称为Arcade HTTP协议。

优选地,当客户端请求来自于差异化服务器的它对其不具有先前高速缓存的版本的资源时,客户端通过发送诸如:(第三报头):willing 的之类的单个HTTP报头指示它参与Arcade HTTP协议的意愿。此报头向上游服务器指示客户端愿意接受用于特定主机/URI组合的字典高速缓存条目,但是它还没有它自己的任何共享的字典。如果客户端具有它希望利用特定方法或方法让服务器应用压缩的资源的先前版本,则它发送以下报头:(第三报头):m1,m2,...m;fp1,fp2, fpm,其中m*是METHOD_STRING类型的并且fp*并且fp*是 FINGERPRINT_S TRING类型的。各个方法列出此客户端支持的差异化方法。各个指纹表示此客户端已经存储的预设字典(先前内容) 的指纹。另外,如果第三报头呈现有指纹,则正常HTTP Accept-encoding报头的意思变为意味着客户端从(识别的列表)接受内容编码以及那些编码的数据差异。因此,考虑HTTP GET请求诸如:GET/foo.html HTTP 1.1,Host:www.bar.com,Accept-encoding: gzip,baz(第三报头);m,(HAS H_S TRING)。此请求说明客户端支持请求的资源(foo.html)以下面“格式”返回:没有数据差异化的gzip格式,没有数据差异化的baz格式,没有数据差异化的身份格式(身份隐含在Accept-encoding中),具有在压缩之后执行数据差异化的gzip格式,具有在压缩之后执行数据差异化的baz格式,以及具有数据差异化的特性格式。

响应于任何差异化请求从服务器返回的响应报头优选地采取形式:第三报头);m;store_mode;hash;fpl,fp2,...fpn,其中m 是METHOD_S TRING并且指示用于执行差异化的方法。如果没有执行差异化,则方法是“nop”。如果执行差异化,则方法必须匹配在请求中给出的方法中的一个。store_mode是BOOL_STRING并且指示客户端是否可以使用扩展数据作为字典。假定服务器将允许客户端使用大部分项作为字典;此允许在其中它不会允许的那些实例(其可以可用于部分响应,诸如范围请求和真的非存储)中的控制。hash 是HASH_STRING并且如果方法不是“nop”则存在。它指示用于计算源块的散列的散列算法,如下面描述。示例散列是SHA-1。fp*是 FINGERPRINT_S TRING类型的并且指示预设字典或实际上用在差异化中的字典(先前内容)组合。优选地,如果存在列在响应中的多种指纹,则客户端组合由给定指纹以列表的次序表示的字典并且使用结果数据作为预设字典。优选地,组合方法是通过简单的链接。在响应中,如果有的话,“Content-Encoding”报头指示由对数据差异求逆产生的编码。

优选地,数据差异的数据部分被编码以支持块化。块意味着目标文件的块。根据使用的差异化算法,每个块可以具有报头。因此,优选地,块是被传递通过差异化重组合算法的原子单位,好像它是独立的文件一样。图5示出了代表性的块格式。在此格式中,DIFF块长度是LENGTH_TYPE并且指定Diff块数据部分的大小。块散列是块的数据的散列,只要数据差异化已被求逆。这用于验证完整性,尤其字典的完整性。如果在字典或字典组合的指纹中存在冲突,或如果字典数据损坏,则此散列将计算它在服务器上进行的客户端上的不同值。因而,客户端应当立即切断连接,清除它的匹配字典条目,发出记录或提醒,并且重试下载。利用第三报头的散列字段中的 HASH_STRING计算散列。在块散列之后是块数据本身。优选地,不使用填充物来减少在线的字节数目。为了指示块流完成,零的Diff块长度被发送以标记“流结束”,后面没有块散列或Diff块数据。如果 X-Arcade报头协议报头指示这可以被存储为客户端上的字典,则接着是单个指纹记录,诸如图6所示。客户端在引用字典时必须使用标记的指纹。

在标准的HTTP 1.1中,范围请求和响应被连接到特定的 Content-Encoding。因此,例如,如果响应是具有103到507的范围的内容编码“gzip”,则那些字节表示*以gzip数据*的103到507,不是原始变型。根据此公开的协议,如果差异化服务器接收范围请求,则它将Accept-encoding向前传递到未触及的上游源服务器。结果,当差异化服务器获得返回的范围数据时,它如果已经不在那里则不能将它解码回到“身份”内容编码。因此,为了保证数据差异化仅仅被应用于类似内容编码,请求的字典必须具有与范围响应相同的 Content-Encoding,或范围响应必须是内容编码“身份”的并且字典必须也是可解码回到“身份”的。为了阻止不知道Arcade HTTP协议扩展(如这里描述的)的透明代理高速缓存数据差异化响应,使用在RFC 3229中定义的方法。因此,当服务器对响应成功地执行数据差异化时,它设置状态码为具有适当原因码的未注册的值。另外,处于在RFC 3229中指定的原因,可以使用高速缓存控制令牌(例如叫做“arc”)。对于除了那些具有“no-store”的“Cache-Control”报头的所有响应,“no-store,arc”被前置到“Cache-Control”报头(或如果报头不存在,则它被创建)。这使得不理解这里描述的协议扩展的所有透明代理由于no-store拒绝高速缓存项。但是,当存在“arc”时,理解协议的代理将忽略“no-store”。最后,如果“arc”存在于“Cache-Control”报头中,则对数据差异化求逆的客户端负责删除“no-store”和“arc”高速缓存控制修改符。

Arcade功能可以被实施在守护进程中,即作为由硬件处理器运行的计算机程序指令。守护进程可以用作上面描述的Arcade HTTP 协议中的客户端和服务器。优选地,它被分路到在覆盖网络内的通信的高延迟支路的末端处的服务器(例如,GHost)中或服务器上。如上所述,优选地元数据配置数据确定特定请求(在连接的发送端上) 是否应当被认为是应当利用协议加速的请求。如果是的话,并且如因已被描述的,Arcade守护进程(在发送端上)接收请求并且查找它具有什么字典(如果有的话)可以用于主机+URI组合。它在适当的报头中添加并且然后连接回到GHost(在发送端)以发出请求。优选(而不是必然需要)通过GHost连接回(而不是直接向前)以利用可以在工作的(例如,持久连接等)的GHost-到-GHost(G2G)性能优化。在图4中示例情况中,GHost然后通过有线将请求转发到上游机器,其前面是提供用于SSL连接的正确证书的ATS进程。无限制地,ATS 是指业务服务器HTTP代理,其作为开源可用。运行在转发端上的 Arcade进程使得注意支持的字典并且在删除Arcade HTTP协议扩展之后将请求(如果在相同的机器上)内部转发到ATS代理。这样做而不是直接到源,因为ATS可以已经具有高速缓存的数据并且可以本地返回它,因此提供来自于源服务器的附加卸载。ATS察看它是否已经高速缓存匹配请求的数据,并且如果是的话,将它发送回到 Arcade守护进程。如果不,它将请求转发到源,接收数据,并且然后将它发送回到Arcade守护进程。Arcade守护进程差异化数据与请求的字典并且将响应发送回到ATS中的发起的请求。ATS然后将数据 (例如,通过TCP优化的连接)发送回到发送它的Ghost进程。在发送端上的Arcade守护进程解码数据并且将它返回到GHost。对于发送GHost,这实际上看来像响应直接来自于源服务器一样,因为它被完全解码。GHost根据需要高速缓存并且将响应传递回客户端。

变型

这里的技术可以用来支持SDCH样式的共享的字典。为此,另一个报头在响应中被添加。格式使得下游代理对于不工作的不同URI 将项目强制地存储到LRU高速缓存中。用于请求和响应的协议否则将保持未改变(客户端向服务器发出具有现在也包括共享字典的支持的字典指纹的请求,并且服务器用它使用的字典做出响应)。

字典可以被预加载。如果用于给定请求的先前对象不存在,则可以使用基于文件类型的预加载的字典。例如,如果客户端试图下载.PPT幻灯片展示并且Arcade守护进程当前不具有数据的先前版本,则它可以代之以使用一般的预加载的.PPT文件以试图在它的第一次访问上获得尽力而为的压缩。后续的下载于是将使用先前版本作为字典而不是基础预加载的文件。

这里的技术可以与强对象驱动的其他协议(像CIFS)一起使用。

另一个扩展是扩展在运行中的图像数据。当今,网络上的大部分图像处于高度压缩格式,其使得执行数据差异化很难。但是,存在站点,其中在像素级的图像之间的差异使得它们是数据差异化的理想候选者。图像、轮廓、和文本的背景颜色通常是等同的。这些图像可以在存储器中被扩展为它们的原本像素格式,因此实现数据的差异化。结果然后被压缩并发送。

如这里使用的,以下术语具有以下意义:

术语“diff”意指用于将源文档转换成目标文档的指令集。

术语“数据差异化”是指利用客户端和服务器之间的共享的字典以增大可以应用于响应的压缩量的动作。

术语“字典”是指可被用于压缩为用于回溯引用的目标的序列的集合。

术语“回溯引用”是指到表示对数据序列的引用的字典中的偏移和长度元组。

“字典高速缓存”是包含必须仅仅用于帮助压缩真实响应的不透明数据集合的高速缓存。如上所述,此数据不被在响应中直接从字典高速缓存发送;它仅仅用于帮助压缩/差异化。

“差异化服务器”是执行数据差异化操作的服务器。

“预设字典”是除了由滑动窗口或发现的发现而指定的字典。在此公开中,共享的字典是预设字典的类型。此类型的字典在通过源数据运行之前被馈送给差异化算法。

术语“压缩”是指收缩数据的动作。

“指纹”是诸如文件的数据串的二元压缩的表示。通常,指纹是具有良好加密属性的散列,诸如SHA-1。

这里描述的方法使得覆盖服务器删除它在网络对等方之间发送的冗余数据,代替发送小得多的指纹。对于具有大量重复数据的事务,这大大减小了线上数据的总大小,因此减小了用于传递到终端用户的时间量。此外,减小的数据导致在网络上降低的操作成本,因为传输的信息量和带宽需要减少。

一般地说,利用一个或多个计算有关的实体(系统、机器、进程、程序、库、功能、等)的集合提供这里描述的技术,它们一起便于或提供上面描述的功能。在典型的实施方式中,软件在其上运行的代表性的机器包括商品硬件、操作系统、应用运行时环境、和应用或进程和关联数据的集合,其提供给定系统或子系统的功能。如描述的,功能可以在独立的机器中、或跨分布式的机器集合实施。功能可以被提供为服务,例如,作为SaaS解决方案。

虽然以上描述由本发明的某些实施例执行的操作的特定顺序,但是应当理解这样的顺序是示范性,作为可替换实施例可以以不同的顺序执行操作、组合某些操作、重叠某些操作,等。说明书中的参考给出实施例指示描述的实施例可以包括特定特征、结构、或特性,但是每个实施例可以不必然包括所述特定特征、结构、或特性。

虽然在方法或进程的上下文中已经描述公开的主题,但是本公开也涉及用于执行这里操作的装置。此装置可以被专门地构成以用于需要的目的,或它可以包括由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可以被存储在计算机可读存储介质中,诸如但是不局限于任何类型盘,包括光盘、CD-ROM、和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、磁或光卡、或适合于存储电子指令的任何类型的媒体、并且每个耦接到计算机系统总线。

虽然已经单独地描述给出系统的组件,但是普通的技术人员将理解,一些功能可以被组合或分享在给定指令、程序序列、代码部分,等等中。

优选地,在应用层解决方案中实施功能,尽管这不是局限性,但是作为识别的功能的部分可以被建立在操作系统等中。

功能可以被利用除HTTPS之外的其它应用层协议实施,诸如 SSL VPN、或具有类似操作特性的任何其它协议。

对计算实体的类型没有局限性,其可以实施连接的客户端侧或服务器侧。任何计算实体(系统、机器、设备、程序、进程、工具、等) 可以充当客户端或服务器。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1