CN105074688A - 使用对等节点图的基于流的数据去重复 - Google Patents
使用对等节点图的基于流的数据去重复 Download PDFInfo
- Publication number
- CN105074688A CN105074688A CN201380073750.5A CN201380073750A CN105074688A CN 105074688 A CN105074688 A CN 105074688A CN 201380073750 A CN201380073750 A CN 201380073750A CN 105074688 A CN105074688 A CN 105074688A
- Authority
- CN
- China
- Prior art keywords
- peer
- data
- block
- node
- deduplication
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/04—Protocols for data compression, e.g. ROHC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/289—Intermediate processing functionally located close to the data consumer application, e.g. in same machine, in same home or in same sub-network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
基于流的数据去重复在多租户共享基础设施中被提供,但是不需要具有同步的数据字典的“配对”端点。由去重复功能处理的数据对象被看作可以按需取回的对象。因此,解码对等体无需保持源的对称库。而是,如果对等体在高速缓存中没有它需要的块,则它遵循传统的内容分发网络过程来取回它们。这样,如果多对发送对等体和接收对等体之间的字典失去同步,则相关部分随后被按需重新同步。该方法不需要在特定对的发送者和接收对等体处保持的库是相同的。而是,该技术使得对等体实际上能够在过程进行中“回填”其字典。提供线上压缩技术以减少在对等体之间传输的数据量。
Description
技术领域
本申请一般涉及在网络上的数据通信。
背景技术
分布式计算机系统在本领域是众所周知的。一个这种分布式计算机系统是通常由服务提供者操作和管理的“内容分发网络”或者说“CDN”。服务提供者通常代表使用服务提供者的共享基础设施的第三方(用户)来提供内容分发服务。该类型的分布式系统有时被称作“覆盖网络”,并且通常指的是一群通过一个或多个网络链接的自治计算机,连同设计为便于诸如内容分发、应用加速或者对外包源站点基础设施的其他支持之类的各种服务的软件、系统、协议和技术。CDN服务提供者通常通过设置在用户门户中并且随后被部署到网络的数字资产(诸如网站)来提供服务分发。
数据区分是用来在服务器和客户端之间利用资源的共享先前实例(在压缩术语中也被称为共享字典内的数据版本)的已知技术和方法;该处理通过仅发送自那一个或多个先前实例起已经发生的差异或者变化来工作。数据区分与压缩有关,但却是略微不同的概念。具体而言,直观上,差异(“diff”)是一种形式的压缩。只要接收者具有与发送者相同的原始文件,那个发送者就可以给予接收者diff而非整个新文件。Diff实际上解释了如何从旧文件创建新文件。差异通常比整个新文件小得多,因而是一种形式的压缩。文档的第一版和该同一文档的第二版之间的diff是数据差异;数据差异是使用文档的第一版作为预设字典来压缩文档的第二版的结果。
基于流的数据去重复(“dedupe”)系统在本领域也是已知的。一般而言,基于流的数据去重复系统通过检查流经连接的发送对等体的数据并且用指向每一个对等体已经围绕给定块进行了同步的共享字典的引用来替换该数据的块而工作。引用本身比数据小得多,并且经常是其散列或者指纹。当接收对等体接收到修改后的流时,其用原始数据来替换引用以使流重新变得完整。例如,考虑其中指纹是用单个字母变量表示的唯一散列的系统。发送对等体的字典然后可能看起来像图3中所示一样。接收对等体的字典可能看起来像图4中所示一样。然后,例如,如果发送对等体假设要发送诸如“Hello,howareyou?AkamaiisAwesome!”之类的字符串,则去重复系统将代替地处理该数据并且发送以下消息:“He[X]reyou?[T][M]ome!”。接收对等体使用其字典来解码该消息。注意到,在该示例中,发送对等体未用引用[O]来替换“ome!”。这是因为,尽管发送对等体将指纹和块存储在其高速缓存中,但是那个发送对等体(通过一种机制)知道接收对等体没有将指纹和块存储在其高速缓存中。因此,发送对等体在发送消息之前未在消息中插入该引用。这种类型的系统通常以若干已知方法中的一种来填充对称的字典。在一种方法中,在数据流流经数据处理器时以固定长度块(例如,每一个块在长度上是15个字符)填充字典数据。数据首次通过发送对等体和接收对等体两者时,并且假定它们两者都以相同方式构造字典,则两个对等体最后具有包含相同条目的字典。然而该方法不是最佳的,因为其经受称为“移位”问题的问题,该问题会不利地影响所生成的指纹并且破坏整个方案。
替代方法利用使用以滚动方式计算的散列的可变长度块。在基于称为Rabin指纹计算的技术的公知解决方案中,系统在指纹计算过程期间跨数据流滑动具有特定尺寸(例如,48字节)的窗口。该技术的一种实现方式在Muthitacharoen等人的题为“ALow-BandwidthNetworkFileSystem”(LBFS)的论文中进行了描述,并且该结果实现了可变尺寸的抗移位块。
提供基于流的数据去重复产品和服务的当前供应商通过配对设备解决了字典发现(知道什么信息在对等体的字典中)的问题。因此,例如,设备/盒供应商依赖于一对设备或每一端上的进程来相互通信以保持让每一侧知道在配对的对等体中存在什么引用的表格。然而,这种类型的解决方案仅在处理代表“路径内”的对的个体盒和单元时起作用。
然而,路径内配对解决方案在节点的分布更类似树的诸如CDN之类的覆盖网络的情况下是不实用的。因此,例如,在代表性实现方式中,并且关于特定源服务器(或者,更一般而言,位于“根”处的“租户”),该覆盖可以具有更接近根的父层服务器,以及更接近叶节点的客户端边缘服务器。换言之,代替需要知道一个或多个对等体盒的一个小集合的盒(诸如在已知的盒供应商解决方案中),父层服务器可能需要与各自潜在包含许多服务器的数十、数百乃至数千个边缘区域接触。在这种情况下,每个机器的表格无法进行扩展。
因此,在覆盖网络的情况下仍然需要提供用于数据去重复的增强技术。
发明内容
因特网基础设施分发平台(例如,由服务提供者运营的)提供覆盖网络(“多租户共享基础设施”)。特定租户具有相关联的源。靠近租户源的一个或多个覆盖网络服务器配备有提供数据去重复的去重复引擎。这些服务器是该源的去重复父高速缓存,因为它们接收来自通常是位于最终用户接入网附近的边缘服务器的覆盖网络子高速缓存的请求。边缘服务器也包括去重复引擎。当对源内容的请求从覆盖网络边缘服务器到达时,该请求被路由通过该源的去重复父高速缓存。父高速缓存(可能从源)取回内容,并随后执行传统的去重复操作。具体而言,父高速缓存首先在其“库”(或者说“字典”)中查找该源,并且看看其能否通过用已经被指派用于父高速缓存已经见到的字节块的名称替换那些块来压缩对象。该操作以已知方式“压缩”对象。父高速缓存然后将经压缩的对象发送到覆盖网络边缘服务器,在那里经压缩的对象被边缘服务器去重复引擎处理。然而,在该分发环外面,去重复父高速缓存也处理对象以存储新见到的字节块,并且将新块输入到其保持的库(或者“字典”)中。当在覆盖网络边缘服务器处接收到压缩流时,边缘服务器通过寻找曾被名称(或者“指纹”)替换的块并且随后使用指纹作为其自己的字典的键取回原始块来处理压缩流。
如果边缘服务器在高速缓存中没有其需要的块,则其遵循传统的CDN方法来取回它们(例如,通过高速缓存层次等),最终在必要时从去重复父高速缓存取回它们。因此,如果多对发送对等体和接收对等体之间的字典失去同步,则相关部分随后被按需重新同步。该方法不需要(或者需要保证)在特定对的发送者和接收对等体处保持的库是相同的(即,同步的)。而是,该技术使得对等体实际上能够与实际业务相关联地在进行过程中“回填”其字典。该方法是高度可扩展的,并且其对于任何类型的内容并且在任何类型的网络上起作用。
通过在连接的每一侧上保持唯一形式的数据结构来提供一对去重复引擎之间的附加线上(on-the-wire)压缩。优选地,数据结构是“有向有环图”(DCG),其中给定DCG表示对等体在数据流中已经见到的数据块之间(和之中)的时间和有序关系。具体而言,DCG包括一个或多个节点(其中的每一个表示数据块)、表示指纹或者作为指纹的标签,以及表示对等体在数据流中已经见到的关于该块的转变的边缘(例如,箭头)。节点具有一组允许的状态转变。例如,有且只有一个(1)“出”(离开节点的箭头)的节点是中间节点,并且各自具有度数1的“出”并且连通在一起的一段节点被称作串。串记录定义了构成串的具体节点(及其指纹)。当穿过对等体的内容具有不改变的大字符串的数据(例如,在文件报头中)时,在由此得到的包括串的DCG中很可能将有大量节点。因此,协作的去重复引擎之间的串记录的传输可以显著地减少在去重复处理期间在线上传输的信息的量。具体而言,一旦DCG在两个对等体上都就位,随后在适当的情况下(即,其中DCG包括串的情况下)使用串记录来执行编码方案,以使得(通过发送串记录以代替组成串的实际节点和指纹数据)放在线上的数据的量被大幅减少。然后,当高速缓存之间存在失配时,解码对等体可以向编码对等体反向做出请求(缺失串请求),并且请求由提到的串表示的原始数据。
根据附加的方面,在一组协作对等节点中的每一个处保持的有向有环图被用元信息进一步注释以提供“有注释”(或者所谓的“预测性”)DCG。元信息包括各自表示特定块源自哪里(通常为它们的URI主机和路径)的一个或多个页面节点,以及例如标识构成由页面节点标识的页面的块的一个或多个附加边缘类型。元信息还包括标识(担当引用者(referrer)的)对等体已经导致内容被识别的次数的指示符(或者所谓的“热度指数”)。在每一个协作对等体上保持的DCG中的新边缘类型中使用热度指数提供了预测结构,该预测结构使得对等节点能够在它们自己之间发送和接收帮助实现内容预热的“提示”请求和响应。具体而言,通常在边缘服务器处接收到来自客户端的请求时,提示请求在子去重复进程上被发起(并且被引导向父去重复进程)。在该提示请求阶段,子去重复进程查询子去重复进程(在其有注释DCG中)是否具有所请求的URI的页面节点。如果是的话,则子去重复进程使用其有注释DCG中的元信息来将提示请求引导向其父去重复进程,该提示请求包括子去重复进程所具有、并且子去重复进程相信父去重复进程利用的似然性很高的(优选仅通过指纹标识)块的清单(manifest)。以这种方式,子去重复进程将预测到父去重复进程能够利用子去重复进程已经见过的块。当父去重复进程接收到提示请求(清单)并且需要前进到源时,父去重复进程(在其前进到源时)也开始以提示响应的形式将数据提示发送回子去重复进程。提示响应向子去重复进程提供关于什么是父去重复进程相信页面将很可能由之构成而子去重复进程尚未具有的信息,优选地关于连同未来页面可能包含什么的信息一起。
在子去重复对等体和父去重复对等体中的每一个上保持有注释的DCG并且提供提示请求和响应的方法便于“一次往返”操作,其中在从客户端到源的单次往返的时间中整个页面(HTML和对象)被发送到做出请求的用户。在该方法中,从属页面对象甚至在客户端请求它们之前就位于边缘服务器处。这有时在本文中被称作边缘高速缓存的预测性预热。
上文已经概述了本主题的更多相关特征中的一些。这些特征应当被解释为仅仅是说明性的。可以通过以不同的方式应用所公开的主题或通过修改将被描述的主题来获得许多其它有益的结果。
附图说明
为了更加全面地理解本主题及其优点,现在将参照结合附图进行的以下描述,其中:
图1是示出被配置为内容分发网络(CDN)的已知分布式计算机系统的框图;
图2是代表性的CDN边缘机器配置;
图3是数据区分处理中的发送对等体字典;
图4是数据区分处理中的接收对等体字典;
图5是用于实现异步数据字典方法的示例性广域网(WAN)架构;
图6是在覆盖网络和用户专用网内实现的在图5中示出的技术的一个详细实施例;
图7示出了在所述去重复方案中对等体已经见到的一组数据块的代表性有向有环图(DCG);
图8示出了在对等体处接收到另一数据流之后对图7中的DCG的修改;
图9示出了对图8中的DCG的修改以示出一部分流如何可以自己循环;
图10示出了在对等体处保持的代表性DCG;
图11示出了根据本公开被注释为包括页面节点的图10中的DCG;
图12示出了被注释为还包括通向边(leads-to-edge)的注释以及相关联的热度指数的图11中的DCG;
图13示出了被注释为还包括附加的通向边及其相关联的热度指数的图12中的DCG的另一修改;
图14示出了图13中的DCG的另一升级版本;
图15-图18示出了预测性预热处理可被如何实现在图6的覆盖基础设施中;并且
图19示出了在预测性预热期间的父节点预测性DCG。
具体实施方式
图1示出了已知的分布式计算机系统,其(如下面描述的)通过本文的技术而被扩展。
在已知的系统中,诸如图1所示,分布式计算机系统100被配置为CDN,并被假定为具有围绕因特网分布的一组机器102a-n。通常,大部分机器是位于因特网的边缘附近的服务器,即,在最终用户接入网络处或附近。网络操作命令中心(NOCC)104管理系统中各种机器的操作。诸如网站106之类的第三方站点将内容(例如HTML、嵌入式页面对象、流媒体、软件下载等等)的分发卸载到分布式计算机系统100,并且具体地卸载到“边缘”服务器。通常,内容提供者通过(例如,由DNSCNAME)将给定内容提供者域或子域化名为由服务提供者的权威域名服务所管理的域来卸载它们的内容分发。需要内容的最终用户被导向分布式计算机系统以更可靠并且高效地获得该内容。尽管未详细地示出,但是分布式计算机系统也可以包括其它基础设施,诸如分布式数据收集系统108,其收集来自于边缘服务器的使用和其它数据,跨一个或一组区域聚合该数据,并且将该数据传递到其它后端系统110、112、114和116,以便于监控、记录、提醒、计费、管理和其它运营性和管理性功能。分布式网络代理118监控网络以及服务器负荷,并将网络、通信量和负荷数据提供给DNS查询处理机构115,该DNS查询处理机构115对于由CDN管理的内容域是授权的。分布式数据传输机构120可以用来将控制信息(例如,管理内容、便于负荷平衡等的元数据)分发到边缘服务器。
如图2所示,给定机器200包括运行支持一个或多个应用206a-n的操作系统内核(诸如Linux或变体)204的商品硬件(例如,IntelPentium处理器)202。为了便于内容分发服务,例如,给定机器通常运行一组应用,诸如HTTP(网络)代理207、名称服务器208、本地监控进程210、分布式数据收集进程212等等。对于流媒体,机器通常包括由支持的媒体格式所需要的一个或多个媒体服务器,诸如Windows媒体服务器(WMS)或Flash服务器。
CDN边缘服务器被配置为提供一个或多个扩展的内容分发特征,优选地建立在特定于域、特定于用户的基础上,优选地利用使用配置系统而被分布给边缘服务器的配置文件。给定配置文件优选地是基于XML并且包括帮助实现一个或多个高级内容处理特征的一组内容处理规则和指令。配置文件可以经由数据传输机构而被分发到CDN边缘服务器。美国专利NO.7,111,057示出了用于分发并管理边缘服务器内容控制信息的有用基础设施,并且这个边缘服务器内容控制信息和其它边缘服务器控制信息可以由CDN服务提供者本身、或(经由外联网等)操作源服务器的内容提供者用户提供。
因为CDN基础设施被多个第三方共享,其有时在本文被称作多租户共享基础设施。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地址。请求的客户端浏览器然后(例如,经由HTTP或HTTPS)对与IP地址相关联的边缘服务器做出内容请求。该请求包括包含源内容提供者域或子域的主机报头。在接收到具有主机报头的请求时,边缘服务器检查它的配置文件以确定所请求的内容域或子域是否实际上正由CDN处理。如果是的话,边缘服务器应用如在配置中指定的其针对那个域或子域的内容处理规则和指令。这些内容处理规则和指令可以位于基于XML的“元数据”配置文件内。
作为附加背景,在美国专利No.6,820,133和No.7,660,296中描述的技术可被用来帮助实现诸如图1所示的覆盖网络中的边缘和转发代理之间的分组分发。
使用异步数据字典的基于流的数据去重复
在上面内容作为背景的情况下,现在描述本公开的方法。与通过配对来解决字典发现(知道什么信息在对等体的字典中)的问题的已知的基于流的数据去重复产品和服务相比,本文的技术根据不同的范例来操作。
具体而言,并且对于特定尺寸的对象,无论对等节点实际上是否具有与指纹相关联的块,其都被“假定”为具有该块。在本方法中,该技术不要求(或者要求保证)在(任意特定对的发送者和接收对等体中的)任一端处保持的库是相同的。而是,在本方法中,库被创建,并且该库被允许是可访问的(例如,通过网络)。该库可以位于任何地方。如将见到的,该方法使得标准的CDN功能和特征能够被利用,从而向最终用户(包括固定线路和非固定线路网络两者上的那些用户,并且无论应用类型)提供了去重复益处以及由覆盖联网技术所提供的那些益处。在该替代方法中,如果对等体没有与给定指纹相关联的块,则对等体向发送代理反向做出请求以请求该块。在一个实施例中,每一个块具有与之相关联的特定URI,诸如磁力式URI。磁力URI指的是经由其内容的简化形式(例如,内容的加密散列值)的描述可供下载的资源。使用磁力URI的一种替代方式是使用某一商定的协议使解码(接收或者子)对等体向编码(发送或者父)对等体(或者对等区域)反向做出请求并且请求随后不可供解码对等体解码的任何块的原始数据。优选地,解码器侧的数据的处理是极快的,并且因而在某一小处理开销时间内检测到缺失块并将请求发送回编码器。
优选地,特别注意避免为了缺失的块而回到发送对等体的不必要的往返。因此,在一个实施例中,极小的并且能够在一个初始拥塞窗口(CWND)中发送的文件不被去重复,因为块高速缓存缺失的风险比该块在接收对等体处存在时的支出更大。这是因为进入网络I/O卡的串行化延迟显著小于在高速缓存缺失时可能发生的等待时间。因此,优选地应当仅考虑以下情况时的那些响应:(即使面对由缺失块带来的可能额外等待时间)使用去重复存在统计概率上的任何优点。
因此,根据本公开,去重复系统使用按需高速缓存同步协议,其可以涉及对等体显式地相互通信,并且涉及对等体关于另一个对等体可能具有之物做出某些假定,或相反。根据该协议,存在解码对等体在本地编码对等体已经具有给定数据块的情况下具有该数据块的假定,以及解码对等实体在本地编码对等体没有给定数据块的情况下没有该数据块的假定。另外,系统对对等体之间的高速缓存中的失配负责。如果这发生,则失配被解决。为此,每当某一数据(在流中已经见到的对象、块、一组块等)不可用于解码时,解码对等体就向编码对等体(或者对等体的区域)反向做出请求并且请求所需的原始数据。如上面提到的,解码器侧的数据处理是极快的,因而仅仅在小处理开销时间内就检测到缺失数据并且将请求发送回编码器。该方法保证了,无论正在使用什么高速缓存同步协议,总存在后退机制以保证业务可以完成。因而,缺失数据支持处理完全高速缓存缺失的可能性,并且其可以与上述高速缓存同步方法结合使用。
用于实现该类型的去重复方法的代表性架构在图5中被示出。为了简明,客户端500被示出为与边缘GHost进程502相互作用,其继而与位于租户源506附近的转发GHost进程504(通常在WAN上)通信。每一个GHost进程502和504具有与之相关联的去重复引擎508、字典的相关联数据存储以及其他相关进程。总体地,这些元件有时被称作去重复模块。父高速缓存也可以实现其他技术,诸如前端优化(FEO)。GHost通过某一接口与去重复模块通信。在替代实施例中,去重复功能在GHost中被原生地实现。当对源内容的请求从进程502到达时,该请求被路由通过该源的父高速缓存504。父高速缓存504(可能从源)取回该内容,并且随后使用其去重复引擎508执行传统的去重复操作。具体而言,父高速缓存首先浏览其库,并且看看其能否通过用已经指派给父高速缓存已经看到的字节块的名称替换那些块来压缩对象。优选地,库在多个CDN用户之间是共享的;在替代实施例中,库是特定于特定源的。父高速缓存504然后将经压缩的对象发送到边缘服务器进程502,在这里经压缩的对象被边缘服务器去重复引擎508处理。然而,在该分发环外面,去重复父高速缓存504也处理该对象以存储新见到的字节块,从而将新块输入到其库中。当在边缘服务器进程502处接收到压缩流时,边缘服务器通过寻找曾被名称(或者“指纹”)替换的块并随后利用名称取回原始块来处理经压缩的对象。
更具体的实施例在图6中被示出。在该情形中,最终用户600已经以通常方式经由覆盖网络DNS与边缘服务器机器602相关联。“最终用户”是在客户端机器(例如,桌面、膝上、移动设备、平板计算机等等)上执行的网络浏览器用户代理或者在这种设备上执行的移动应用(app)。“最终用户”经由HTTP或者HTTPS与边缘服务器机器通信,并且这种通信可以穿过其他网络、系统和设备。边缘服务器机器执行由覆盖网络提供者管理的元数据可配置的网络代理进程(GHost)604,以及相关联的基于流的数据去重复进程606。如将被描述的,去重复进程理论上对来自所有CDN用户的所有文件的所有块执行数据压缩。在本方法中,来自不同URI的文件片段以及同时来自多个文件的片段可被用来执行去重复。边缘服务器机器602可以是诸如在另一个覆盖服务器设备(未示出)上运行的父GHost进程608之类的一个或多个“父”节点的“子”。在该示例中,GHost进程608是“直通”的并且不提供区分功能;其可被忽略。
如亦在图6中所见,来自客户端侧的请求被引向“源”服务器612。源(或者目标)服务器612是通常在覆盖网络用户基础设施(或者也许是诸如第三方基于云的基础设施之类的一些其他托管环境)中运行的服务器。通常,源服务器612向期望利用覆盖网络基础设施来加速的网站或者可访问网络的用户应用提供基于网络的前端。在并非旨在为限制性的该示例情形中,源服务器612在用户自己的专用网614中运行。用户专用网614包括物理机器615。该机器(或者用户网络中的某一其他机器)可以支持另一网络代理进程618,以及相关联的去重复进程620。网络代理618无需是元数据可配置的,也无需由覆盖网络主动管理。上面示出的架构并非旨在是限制性的,而是仅作为一个示例被提供。
以下是端到端的流的描述。在该情形中,并如上面提到,“GHost”指的是在覆盖网络中的边缘设备上运行的元数据可配置的网络代理进程。“ATS”指的是在与覆盖网络不同的用户网络或基础设施内的设备上运行的覆盖网络网络代理进程,并且去重复进程可以相对于来自(在本示例实施例中)特定用户网络本地的所有文件的所有块执行去重复。如上面提到,并且取决于所采用的网络架构,库也可以是共享的以使得相关联的去重复进程可以相对于来自所有覆盖网络用户(或其一些成员)的所有块执行去重复。在示出的实施例中,GHost(或者ATS)进程可以根据具体情况经由接口(例如,本地主机)与相关联的去重复进程进行通信。
在如图6所示的代表性(但非限制性)实现方式中,覆盖网络提供者提供例如作为虚拟机(VM)或者“边缘设备”在用户的基础设施(专用网)内运行的软件。边缘设备610优选地位于DMZ中或者企业防火墙后面,并且其可以在由覆盖网络用户支持并管理的管理程序(例如,VMwareESXi(v.4.0+))616上运行。在一个优选实施例中,边缘设备作为经由覆盖网络用户门户(外联网)下载的64位虚拟设备而被分发。每一个边缘设备需要至少一个可公开路由的IP地址,并且可以由覆盖网络优选通过安全连接进行配置。
因此,根据上面的方法,与租户源相关联的至少一个服务器配备有去重复引擎(或者与之相关联)。当请求从边缘服务器为内容而来时,该请求被路由通过源的去重复父高速缓存。父高速缓存(可能从源)取回该内容,并然后根据内容尺寸和任何可适用的配置参数来执行去重复。如果去重复发生,则父高速缓存检查其字典;如果父高速缓存可以(通过用已经指派字节块的名称替换给父高速缓存已经见到的那些块来)压缩对象,则它就压缩对象。父高速缓存然后将经压缩的对象发送到边缘服务器。单独地,去重复父高速缓存处理该对象以存储新见到的字节块,从而将它们输入到去重复父高速缓存所保持的库中。当在边缘服务器处接收到经压缩的对象时,如上所述,边缘服务器通过寻找曾被名称替换的块并随后使用该名称取回原始块来处理经压缩的对象,如已经描述的那样。
一般而言,根据本公开,当流通过/穿过父节点时,该父节点将流分为块。对于每一个块,父节点然后关于流正被发送到的子节点是否具有那个块做出实际上的“猜测”。该“猜测”可以以任何方式被通知,例如,它可以是统计性的、概率性的、基于某一启发法、基于执行算法而得到的、基于子节点的相对位置、基于负载、等待时间、分组丢失或者其他数据,或者以某一其它方式确定。如果父节点相信子节点还没有该块,则它发送实际数据。然而如果父节点相信子节点很可能具有该块,则父节点仅发送名称/指纹。当子节点得到编码流并且开始对流进行解码时,对于每一个块引用/名称,子节点然后在其自己的本地库/字典中查找该名称。如果块在那里,则子节点重新扩展它。然而如果块不存在,则子节点执行请求该块的实际数据的按需请求(例如向编码对等体/区域)。
利用该方法,CDN的所有已知益处(例如,负载均衡、高速缓存、WAN加速等等)被利用。重要的是,边缘服务器不需要保持源的对称库。当然,边缘服务器有可能在高速缓存中具有块,但是如果其没有,则它遵循通常的类似CDN的过程来取回它们(例如,通过高速缓存层次等),从而最终在必要时从去重复父高速缓存取回它们。
GHost进程具有确定请求是否要被去重复进程处理的能力。用于做出该确定的一种技术使用特定于租户的元数据和在美国专利No.7,240,100中描述的技术。
去重复模块可以作为相对于GHost的伙伴(buddy)进程或者进程内的库而运行。GHost和该模块之间的通信机制可以是通过共享存储器、本地主机、TCP、UDS等等。在替代实施例中,客户端侧去重复模块自身可被直接放在诸如最终用户客户端(EUC)网络机器、移动设备手持机等之类的客户端设备上。
优选地,可以通过元数据配置来控制去重复是否被开启,优选地基于每一个租户。
如上面提到,针对过小的文件优选地不调用去重复机制。小对象规避支持因而提供了一种智能地避免执行去重复操作的方式,否则对高速缓存未中可能引发额外RTT的该去重复操作是有风险的。在一个方法中,这可以通过使GHost在一定阈值下绕过POST的去重复操作和包括“内容长度”报头的响应来完成。然而,多数动态内容使用分块传送编码,这意味着对象的尺寸是预先不知道的。因此,若没有基于其他标准避免去重复的某一确定,GHost应当通过所述机制传递该请求。
此外,优选地仅当存在另一侧可以具有数据的可靠保证时发送指纹。因此,优选地只有曾在相同或前一流中见过该块,才发送指纹。
某些文件格式(像霍夫曼编码)是重度压缩以及杂乱的。商用去重复系统经常在系统的去重复引擎内提供在执行指纹计算和分块之前将那些文件类型解码为更加去重复友好的格式的系统。这种方法在本文中也可被实现。具体而言,每一侧(无论在GHost中还是在去重复模块自身中)可以实现根据文件格式的解压缩过滤器以更好地保证经高速缓存的块命中。
在本文中描述的GHost/去重复模块也可以与协议终止器互操作。协议终止器是使协议(诸如CIFS或MAPI)终止并且将其转换为例如http或http(s)的软件片段。
去重复模块可以与诸如FEO技术之类的其他CDN机制互操作。
如在图6中示出,如在本文描述的1个去重复模块可以位于企业网络内,诸如在与位于企业DMZ中的覆盖网络相关联的机器中。
如亦在图6中示出,如在本文描述的去重复模块可以位于与使用覆盖网络或者与之互操作的企业相关联的虚拟机(VM)内。然而该架构不是限制,因为转发代理无需被设置在企业(或者其他用户专用网)内。
在本文描述的去重复技术可以与一个或多个其他CDN服务提供物相关联地使用,以帮助实现CDN节点到节点通信(网络内去重复)等等。
GHost和去重复模块以软件实现的,作为专用机器在一个或多个处理器中运行。
对可由所述技术处理的数据的类型没有限制。的确,对于某些数据类型(诸如PII),诸如本文描述的数据去重复与单独高速缓存相比具有显著优点。
去重复功能可以在守护进程中实现,也就是说作为由硬件处理器执行的一组计算机程序指令。守护进程在上述基于HTTP的协议中可以起客户端和服务器两者的作用。优选地,它在覆盖网络内的通信的高等待时间脚的末端处被分流到服务器(例如,GHost)之内或者之上。如上所述,优选地,元数据配置数据确定(连接的发送侧上的)特定请求是否应当被视作应当使用协议来加速的请求。
一般而言,本文描述的方法使得覆盖服务器能够除去它正在网络上的对等体之间发送的冗余数据,取而代之的是发送小得多的指纹。这对于具有大量重复数据的业务极大地减少了线上数据的总大小,从而减少了用于向最终用户分发的时间量。此外,减少的数据导致网络上的操作成本降低,因为所传送的信息量和带宽需求减少。
上述方法是高度可扩展的,并且它对任何类型的内容并且在任何类型的网络上起作用。客户端是运行网络浏览器或者其他呈现引擎(诸如移动app)的传统的桌面、膝上或者其他因特网可访问的机器。客户端也可以是移动设备。如在本文使用的,移动设备是任何无线客户端设备,例如蜂窝电话、寻呼机、个人数字助理(PDA,例如具有GRPSNIC)、具有智能电话客户端的移动计算机等等。其中可以实施该技术的其他移动设备包括能够使用无线协议以无线方式发送和接收数据的任何支持接入协议的设备(例如,基于iOSTM的设备、基于AndroidTM的设备等等)。典型的无线协议是:WiFi、GSM/GPRS、CDMA或者WiMax。这些协议实现了其上建立有传统的联网堆栈的ISO/OSI物理和数据链路层(层1&2),连同IP、TCP、SSL/TLS和HTTP而变得完整。在一个代表性的实施例中,移动设备是通过作为GSM网络的数据技术的GRPS(通用分组无线电业务)来操作的蜂窝电话。本文所使用的移动设备可以是3G(或者下一代)兼容设备,其包括作为携带特定于订户的信息的智能卡的订户身份模块(SIM)、移动装置(例如,无线电和相关联的信号处理设备)、人机接口(MMI)、和到外部设备(例如,计算机、PDA等等)的一个或多个接口。本文公开的技术不限于与使用特定接入协议的移动设备一起使用。该移动设备通常也支持诸如Wi-Fi之类的无线局域网(WLAN)技术。WLAN是基于IEEE802.11标准的。
有向有环图
指纹计算(例如使用SHA-1)提供长度为20个字节的散列,并且在上述技术的一种实现方式中通常替换数据流中具有128个字节的平均大小的块,从而产生20/128=15%的最大理论压缩极限。为了提高这个百分比,优选地使用附加的压缩机制。该机制提供线压缩,并且它被称作有向有环图方法(DCG)。现在对它进行描述。
如在这里使用的,有向有环图(DCG)表示在对等体(其以上述方式运行去重复引擎)之间传递的流中已经见到的数据块之间(和之中)的时间和有序关系。DCG中的每一个节点(例如,环)表示数据块。它的标签优选地表示指纹(实际上指纹大得多,但是该更短标记法是为了描述目的)。DCG中的每一个边(例如,箭头)表示机器已经见到的转变。现在,假定诸如上面在图6中描述的去重复系统第一次加载并且看见数据流;由此得到的指纹是:[A][B][C][D][E][F][G]。该命名法意味着机器已经见到块[A]、后面跟着[B]、再后面跟着[C],并对于块[D][E][F][G]以此类推。然后这些指纹的初始有向有环图将如图7所示出现。
按照惯例,节点A至F是中间节点。中间节点则是具有恰好为一(1)的“出”(向外)度的任何节点。节点G是终端节点。终端节点是具有恰好为零的出度的节点。
现在,假定另一数据流进入对等节点中并且其被用以下指纹处理:[B][C][D][E][X][Y]。该操作将内部地修改图7中的DCG以看起来像图8。在该示例中,新类型的节点已被引入并且被称作溢出节点。溢出节点是具有大于一的出度的节点。在图8中,溢出节点是节点E。
根据本公开的DCG方案,DCG中的节点具有一组状态转变。优选地,压缩DCG方案中的节点的允许状态转变则如下。节点在终端节点状态下开始生命,并且没有节点跟随它们。一旦另一节点跟随所关注的节点,其状态就转变为中间,并且它永远不能再次回到终端状态(因为其出度已被永远改变)。如果(除已经提到的一个节点之外的)任何其他节点曾经直接跟随所关注的节点,则它的状态转变为溢出,并且同样该状态无法转变回中间或者终端(因为它的出度已被永远更改)。
一旦有向有环图在两个对等体上都就位,则执行行程长度编码的变体,如现在将被描述的。假定看起来像以下的另一数据流被见到:[A][B][C][D][E][X]。当向解码对等体发送指纹时,编码器可以然后指示如下:在节点A(图8)处开始并且“向下走四步”(如果每一个对等体上的DCG是同步的则在此没有歧义)。因为每一个节点具有恰好为一的出度,因此该指令指哪些节点是清楚的。然后,在节点E处,必须做出判定,因为这是溢出节点。换言之,编码器必须指示解码对等体要穿过哪一个分支。它通过简单地发送X的新记录来实现该操作。
根据该方案,被连通在一起的具有为一的出度的节点的这些段被称为串。当与对等体通信时,发送对等体发送表示线数据的串记录。有可能一个对等体上的DCG可以与另一个对等体上的图失去同步。在那种情况下,有可能编码对等体将指示解码对等体在特定节点处开始并且向下走一定数目的步骤,并且有可能解码对等体能够这样做,但是数据是不同的。根据DCG方案的一个方面,通过提供要被穿过的指纹的散列而防止了这种情况。因此,串记录优选地由以下元组构成:
[起始指纹][节点数目][起始指纹下面的节点的散列]
如果解码对等体无法验证串记录的签名,则优选地,解码对等体向编码对等体发送缺失串请求,如在下面更详细描述的。
回到DCG术语,图的“环”部分的目的可以通过示例而被看到。经常,可能存在串环回到自身上的情况。例如,使用上面的示例,对等体可能看见看起来像以下的流:[A][B][C][D][A][B][C][D][A][B][C][D][A][B][C][D][E][X][Y][G]。这将生成诸如图9所示的DCG。然后,如果在晚些时候如果以下数据流被发送:[A][B][C][D])×100[E][X][Y][G],则以下将被输出:
[A:3:HASH(B·C·D)][A:3:H(B·C·D)]...[E:3:HASH(X·Y·G)],其中[A:3:HASH(B·C·D)]序列出现100次。为了避免该重复问题,并且根据本公开,DCG的输出可被传递通过紧缩算法。使用Lempel-Ziv-77(或者等同物)来除去流中的重复的算法可被用于该目的。此外,诸如霍夫曼编码之类的编码也可被用来使输出令牌的尺寸最小化。该方法可以将(在该示例情形中的)100个A串记录压缩为单个令牌序列。
如上所述的DCG方法帮助实现显著的线上压缩。的确,许多文件格式在文件报头中具有完全不改变的大数据串。此外,许多文件类型(例如,微软PowerPoint文件、微软Word文件等等)常规地具有出度为一的数千个指纹的段。这在直观上是正确的,因为低熵文件从一个版本到下一个版本通常不变化太多。不变化的段由出度为一的节点的长串表示。该内容然后被处理为串记录,该串记录继而可按如上所述进行处理以使得线上信息被极大地减少。实际上,DCG方法比GZIP和其他已知技术压缩得显著更紧。
总而言之,通过在通信的每一侧处实例化并且保持有向有环图,帮助实现了线上数据压缩。具体而言,DCG提供了一种基于类似先前见到的数据内的有序块的(在相应对等体处的)时间局部性来压缩数据的方式。
使用缺失串请求的高速缓存同步
如上面在关于图6的讨论中所提到的,优选地去重复系统使用高速缓存同步协议,该协议涉及对等体显式地相互通信,例如通过一对等体就另一个对等体可能具有之物等做出某些假定,反之亦然。无论存在何种高速缓存同步协议,系统应当考虑到某些事情可能发生以造成对等体之间的高速缓存失配的事实。如果这种情况发生,则必须有可能解决该失配并且做出向前的进展。因此,根据本公开的另一特征,缺失串请求的概念解决了该问题。具体而言,每当串不可用于子高速缓存上的解码时,解码对等体(子高速缓存)就向编码对等体(或者对等体的区域)反向做出请求,并且请求所提到的串的原始数据。解码器侧的数据处理是极快的,因而仅仅在小处理开销时间内就应当检测到缺失串并且将请求发送回编码器。该方法保证了,无论正使用何种高速缓存同步协议,总存在保证业务可以完成的后退机制。因而,缺失串支持处理完全高速缓存缺失的可能性,并且其可以与上面描述的高速缓存同步方法结合使用(即,假定解码对等体在本地编码对等体已经具有给定数据块的情况下具有该数据块,并且假定解码对等体在本地编码对等体不具有给定数据块的情况下没有该数据块)。
缺失串请求是一种机制,通过该机制下游对等体可以(向上游对等体)请求DCG的特定部分以及其相关联原始数据,以使得下游对等体具有足够的数据来使得它能够再现并存储其侧上的图和块。它提供了一种高速缓存同步方法,其与有向有环图的使用一起导致性能显著增强。
串记录是否被沿线向下发送到解码对等体(以代替原始数据本身)可以是依赖于实现方式或者依赖于上下文的。当缺失串支持(如上所述)就位时,可能存在解码对等体在本地编码对等体已经具有给定数据块的情况下具有该给定数据块并且解码对等体在本地编码对等体不具有该给定数据块的情况下没有该给定数据块的假设;这些假设在某些环境下可能是适当的,因为,如果存在高速缓存缺失,则缺失串支持被激活。然而,无需一定遵循因而应当永远使用串记录的结论。两个对等体相互通信越多,则串方法起作用越频繁,因为被一个对等体首先见到的项也被另一个对等体首先见到。然而,当对等体通信的寿命总体上较短时,依赖于上面的假设会导致父只是因为父在本地具有内容就相信子具有该内容。在热门数据片段的父与第一边缘区域交谈并且适当地同步的情形下,此后父与之交谈的所有其他边缘区域都将被错误地假定为具有该数据。因此,串的使用对于热门内容将是最适当的,因为对于任何给定子解码区域,该区域将仅对于需要下载该缺失串的第一个用户遭受拖延(stall)。尽管该用户将遭受附加RTT以取回串,但是去重复将仍然在下载上节省足够的时间(使得附加RTT可能不被注意到)。然而,所有后续用户然后将受益于热点高速缓存。
作为变体,其他启发法可以是判定何时仅发送与备份数据相对的串的考虑因素。例如,如果父编码对等体具有串,但是尚未与在给定可配置时间内可能接收流的对等区域交谈,则父可以基于RTT衡量仅发送串记录的风险。如果确定在高速缓存缺失上可能有过大的代价,则原始数据可代替串被发送。
使用如在本文描述的缺失串请求处理的高速缓存同步提供了用来使多对不同字典在去重复进程期间(即,在流量正在流经(经过)去重复对等体时)按需并且在需要时保持同步的鲁棒且可靠的机制。
如在本文描述的有向有环图和缺失串请求的使用在对覆盖网络的环境下的边缘服务器和父之间提供线上压缩方面找到了特定的用处。然而,该特定使用情形并非旨在是限制性的,因为本文的技术可用在包括但不限于客户端和边缘服务器、转发服务器和源等的任意两个计算实体之间。
有注释DCG和预测性预热(PPW)
以下部分描述了对去重复处理的进一步增强,其使得能够在网络上的节点之间传递去重复提示;该方法使得节点能够通过在子的请求(例如,针对HTML页面的嵌入式页面对象)之前已经在子边缘处具有相关数据部分来准备未来的业务。该预测能力由三个(3)要素构成:预测结构、提示请求,以及提示响应。预测结构有时被称作有注释的DCG。
图10示出了如已经描述的代表性DCG。优选地,在父节点和子节点(各自具有GHost/去重复进程)两者上保持该数据结构。如描述的,每一个节点(环)表示数据块;其标签代表指纹。每一个边(箭头)表示机器已经见到的转变。根据本公开,DCG被注释以帮助实现预测能力,优选如下。DCG可被注释以包括页面节点,诸如图11所示。页面节点不表示在流中见到的特定数据块,而是关于块来自之处的元信息(即,它们的URI主机和路径)。此外,可以指定被称为构成边(composedofedge)的新边类型。在代表性的DCG中,页面节点用矩形来标识,并且构成边用点线箭头示出。因此,假定页面www.foo.com/mainpage.aspx由块e和f构成(在图10中),则图然后将以图11中示出的方式被注释。因此,如果具有客户端浏览器的用户请求该URL处的页面,则页面通过覆盖网络下载并且由块e和f构成。假定父节点以图10中的DCG开始,在那个节点分发页面之后,其DCG将看起来如图11所示。通常,类似的注释将存在于供应对客户端请求的响应的边缘节点上。
可被提供的另一注释是称为通向边的新类型的边。该边在图中用虚线箭头表示,并且包括其中带有被称作边的热度指数的数字的菱形。(上面描述的图形表示仅仅是为了解释目的,因为在不脱离本文的概念的情况下可以使用其他惯例)。该注释通过示例得到最好解释。假定在客户端在先前的示例中下载mainpage.aspx之后,他或她点击该页面上的针对clothing.aspx的链接。回想起当客户端浏览器做出请求时,将mainpage.aspx列出为页面引用者的REFERER(引用者)报头被附接。服务该请求的节点可以看见该报头。同样,假定新页面由块b和c构成。图然后被更新为表明用于clothing.aspx的新页面节点由块b和c构成,并且此外表明mainpage.aspx页面节点通向那些块。如提到的,每一个通向边具有与之相关联的标记父页面节点已经通向该内容的次数的热度指数。该图现在被更新为看起来如在图12中示出的那样。
通过另一示例,假定该示例中的用户点击他或她的浏览器中的后退按钮并且然后对foo.com的electronics部分感兴趣。他或她然后点击来自mainpage.aspx的electronics链接,并且页面通过覆盖网络(再一次利用mainpage.aspx的REFERER)下载。还假定新electronics页面由块c和d构成,并且还假定electronics页面具有与clothing页面共同的块c(例如,这可能是所有页面在foo.com上共享的某一内部Javascript或者CSS)。图现在变化为看起来如图13所示。在图13中,应当注意到从mainpage.aspx到块c的通向边现在具有为2的热度指数。这是因为曾在两个分开的场合从mainpage.aspx通向该块(一次去往clothing.aspx,并且另一次去往electronics.aspx)。
继续该示例,现在假定全新用户在他或她的新打开的浏览器中新访问mainpage.aspx,然后经由来自主页面的相同链接访问electronics.aspx。图然后将更新为看起来如图14所示。在该图中注意当这种情况发生时热度指数如何再次更新。
有注释的DCG,并且尤其是通向边中热度指数的使用,提供了预测结构。如上面提到,优选地在覆盖网络连接的两侧上(通常在源附近的父对等体与边缘处的子对之间)创建、更新和保持该结构。换言之,DCG(及其预测结构)存在于在父节点和子节点两者上。
假定存在有注释的DCG(包括其预测机构),以下描述了根据本公开的预测性预热(PPW)去重复业务的提示请求阶段。具体而言,当客户端向边缘(及其去重复进程)做出请求时,边缘去重复进程(例如,使用HTTP的协议扩展等等)将该请求修改为包括它所具有并且它相信父去重复进程利用的似然性很高的(仅通过指纹标识的)块的清单。子节点然后将该请求转发到父节点上(假定边缘GHost在高速缓存中没有它)。优选地,子节点处的去重复进程通过检查预测性DCG来聚集该清单。例如,假定该示例中的客户端之前请求mainpage.aspx。子去重复进程将检查其相关联的预测性DCG(采用图14中的预测性DCG图像),并且看到mainpage.aspx上次曾通过该节点而被下载,其由边缘去重复进程在它的高速缓存中仍然具有的块e和f构成。因此,进程将把那些块指纹添加到它的清单以向上游发送。此外,子去重复进程(从它的预测性DCG图像)看到mainpage.aspx通向一系列其他块。子然后挑选mainpage.aspx所通向的具有最高热度指数(具有某一可配置的下限)的块,并且将那些块也添加到清单。例如,假定其挑选的块是c和d,并且其因为热度指数对于它太低(只有1)而忽略块b。子去重复进程然后将使指纹c、d、e和f附加到转发请求,这将让父去重复进程知道子进程现在具有该数据。
在对相关联数据将会存在并且由于子侧上的高速缓存缺失而不需要缺失串请求有一定了解的情况下,这允许父去重复进程在相关联数据被再次遇到的情况下只是将指纹发送回子进程。实质上,子进程正预测到父进程能够利用子进程已经见到的块。这带来更好的性能,因为父进程更加了解子进程所具有之物并且相比于仅发送指纹,可以对何时向下游发送原始数据做出极精确的判定。
图15-图18示出了该处理。首先转到图15,在步骤1中,客户端请求mainpage.aspx。在步骤2中,子去重复进程已经将附接有指纹c、d、e和f的请求转发到父去重复进程(直接或者经由父侧GHost)。父去重复进程在接收到该数据时知道它必须从源下载mainpage.aspx。它还知道这将花费一些时间,最小为父边缘与源之间的往返时间(RTT)。代替在该时间期间只是空闲等待,优选地父去重复进程开始基于它相信页面将很可能由子去重复进程尚未具有之物构成而开始向子去重复进程发送数据提示,优选地连同未来页面可能包含之物一起。因此,例如,假定父去重复的预测性DCG看起来像图19。这以两种有趣的方式不同于DCG(图14)。首先,它已经存储了上次父见到mainpage.aspx时其曾由块e、f和g构成。(子去重复进程仅认为块e和f曾被使用。)第二,父显然已被用来下载music.aspx,其曾被链接自mainpage.aspx。该页面仅由块h构成并且(在本示例中)曾经由mainpage.aspx而被到达九次,从而使与mainpage.aspx有关的块h的通向边的热度指数升高为9。在步骤2中已经从子接收到提到它具有块c、d、e和f的提示的父相信在具有块g(因为它已经见过的mainpage.aspx也包括块g)以及块h(由于极高的热度指数)的子中存在值。因此,在它将请求转发发送到源的同时,父也将块g和h的数据后向发送到子。换言之,父正在为子准备父预测到子可能需要的数据。
该操作在图16中被示出。具体而言,步骤3是对源的请求,并且步骤4是对子的提示响应。优选地,步骤3和4同时发生。
现在,假定源已经回复父去重复进程并且mainpage.aspx由块e、f、g和i组成。父进程知道子去重复进程曾告诉父:该子具有块e和f。此外,父去重复进程知道它已经向子预先播种以g块。因此,父去重复进程知道它仅需要发送e、f和g的指纹;因为i对于父也是新的,所以它必须发送i的原始数据。这在图17中被示出为步骤5。最终,子去重复进程接收到e、f和g的指纹,并且将它们扩展回它们所表示的数据。此外,子进程接收i的原始数据,并且将其存储在它的DCG和高速缓存中,而且将其直接传输到客户端。这在图18中被示出为步骤6。
现在,假定客户端得到该页面并然后请求受欢迎的music.aspx的页面。当子去重复进程接收到该请求时,它注意到它之前从未见过music.aspx,但是它已经见过mainpage.aspx的REFERER。在该情形下,它做出稍微修改版本的提示请求,并且只是发送REFERER具有的最热门通向节点的清单,希望正被请求的页面将由它们中的一些构成(因为REFERER代表着它也通向该新请求的页面)。因此,子进程向前发送c、d和尤其是h的块指纹。父去重复进程看到它具有music.aspx页面节点并且它仅由块h构成。因为子指示它具有那个块,因此在这种情况下父不为提示响应向子发送附加的任何内容。
另外,假定源做出响应并且页面尚未变化(它仍然仅由块h构成)。父去重复进程从提示请求知道子具有块h,并且它可以安全地仅发送回指纹。它这么操作,而子进程接收到该指纹、扩展回数据,并且将数据分发到客户端。
如可以见到,来自第一请求的预测性播种甚至在数据被请求之前将数据放在子边缘上。然后当是时候分发该数据时,数据已经存在于子边缘上,从而导致穿过系统的高效单次往返。
总而言之,通过查询子是否具有所请求的URI的页面节点来发起(在边缘GHost处接收到来自客户端的请求时)子去重复进程上的提示请求阶段。如果是,则(a)去重复进程在上至某一可配置限制的清单中向前发送构成节点指纹。如果仍有空间,则子进程也开始也在清单中(上至可配置限制)向前发送最热门(通过热度指数)的通向节点指纹。如果所请求的URI的页面节点不存在并且存在REFERER,并且如果REFERER具有子DCG中的页面节点,则(b)子在清单中(上至可配置限制)向前发送REFERER通向节点指纹。如果(a)和(b)均未发生,则清单不被发送。
在父去重复进程上,以下包括了提示响应的步骤。父首先创建有序响应队列Q。它然后执行测试以确定它是否具有所请求的URI的页面节点。如果是,则(a)进程将所有构成节点加载到队列中,然后将所有通向节点加载到队列中。如果不是并且存在REFERER,并且如果REFERER具有父DCG中的页面节点,则父(b)将所有通向节点加载到队列中。如果(a)和(b)均未发生,则没有东西被加载到队列中。在执行这三个选项中的一个之后,父从队列中除去子已经发送其指纹的所有节点。如果任何内容仍在队列中,则父在向源向前发送请求的同时开始将数据发送回子。优选地,父仅发送(向下回到子)上至配置限制的数据,以避免给网络增添过多流量。
当父正在向子发送提示时,有可能源的数据在提示响应完成之前到达父。在那种情况下,父应当中止向子发送提示,并且立即开始发送去重复流。一旦完成,它可以恢复向子发送子在当前业务中尚未见到的数据。在一个可替代的实施例中,这种数据可能在单独的连接上被发送。
上述方法帮助实现了“一次往返”操作,其中整个页面(HTML或者对象)可以在从客户端到源的单次往返(“1RTT”)时间内被发送到做出请求的用户。如已经描述的,在HTML被分发的1RTT内,该方法可以使得从属对象甚至在客户端请求它们之前就能够在边缘处。
上述方法利用页面节点和对象的图(DCG)来确定什么内容应当被主动地下拉到边缘高速缓存。如所解释的,该方法是基于块的,并且它提供了显著的优点,尤其相对于需要源请求来服务的不存储(或者“0”TTL)内容。该方法也可被用于可高速缓存的内容。
总而言之,上述预测技术提供了一种基于先前见到的数据中的重复访问模式来预测数据的未来出现并然后利用该预测结果来预热离用户最近的高速缓存以减少往返和等待时间的方法。
总而言之,本文描述的去重复方法使得能够除去在网络上的对等体之间发送的冗余数据,代而发送小得多的指纹。这对于具有大量重复数据的业务极大地减少了线上的数据的总大小,从而减少了用于向最终用户分发的时间量。此外,减少的数据导致了网络上的操作成本降低,因为所传送的信息量和带宽需求减少。
如在本文描述的去重复系统能够除去对等体之间的冗余数据模式以便提供显著的压缩节省。在图6中示出的架构方法可被使用,但是这不是一个要求,因为可以以取决于相关联的对等体实现方式的任何方式实现去重复功能。更一般而言,去重复功能被实现为对等节点上的协处理。如注意到的,对于给定请求,源附近的去重复进程利用对实际响应数据的明确定义部分的引用来替换该明确定义部分,而请求者附近的去重复进程使该过程逆转,从而恢复所发现的引用的实际数据。以这种方式,减少了节点之间重复传输的共同数据量。
如在这里使用的,“指纹”是诸如文件之类的数据串的二进制压缩表示。通常,指纹是具有良好加密特性的散列,诸如SHA-1。
更一般地,本文描述的技术利用一个或多个计算相关实体(系统、机器、进程、程序、库、函数等)的集合提供,它们一起帮助实现或提供上述功能。在典型的实现方式中,软件在其上运行的代表性的机器包括商品硬件、操作系统、应用运行时环境、和应用或进程和相关联数据的集合,其提供给定系统或子系统的功能。如描述的,功能可以在独立的机器中、或跨机器的分布式集合而被实现。功能可以被提供为服务,例如作为SaaS解决方案。
虽然以上描述由本发明的某些实施例执行的操作的特定顺序,但是应当理解这样的顺序是示例性的,因为可替换实施例可以以不同的顺序执行这些操作、组合某些操作、重叠某些操作等。说明书中对给定实施例的提及指示所述实施例可以包括特定特征、结构或特性,但是每个实施例可以不一定包括该特定特征、结构或特性。
虽然公开的主题已经在方法或过程的上下文中被描述,但是本公开也涉及用于执行本文的操作的装置。该装置可以被专门地构成以用于需要的目的,或它可以包括由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。这种计算机程序可以被存储在计算机可读存储介质中,诸如但是不限于任何类型的盘,包括光盘、CD-ROM、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、磁卡或光卡、或适合于存储电子指令的任何类型的介质,并且每个都耦接到计算机系统总线。
虽然已经单独地描述了系统的给定组件,但是普通技术人员将理解,一些功能可以在给定指令、程序序列、代码部分等等中被组合或共享。
尽管不是限制,但优选地,功能在应用层解决方案中被实现,因为标识的功能的多个部分可以被内建在操作系统等中。
功能可以被利用除HTTPS之外的其它应用层协议实现,诸如SSLVPN、或具有类似操作特性的任何其它协议。
对可以实现连接的客户端侧或服务器侧的计算实体的类型没有限制。任何计算实体(系统、机器、设备、程序、进程、装置等)可以充当客户端或服务器。
所要求保护的如下。
Claims (20)
1.一种在包括发送对等体和接收对等体的覆盖网络中操作的方法,其中所述发送对等体和接收对等体通过检查流经所述发送对等体和接收对等体的数据并且用指向与所述对等体中的每一个相关联的数据字典的引用替换所述数据的块来提供基于流的数据去重复,该方法包括:
保持与所述发送对等体相关联的有向有环图;
保持与所述接收对等体相关联的有向有环图;
其中,每一个有向有环图表示相应对等体在数据流中已经见到的数据块之间的时间和有序关系,所述有向有环图被用信息注释,相应对等体可以根据该信息生成关于经受所述基于流的数据去重复的数据块的预测;
响应于在所述接收对等体处接收到对页面的请求,所述接收对等体在所述页面的基于流的数据去重复期间生成提示请求,该提示请求预测预计所述发送对等体将利用什么数据块;
当在所述发送对等体处接收到所述提示请求时,所述发送对等体生成提示响应,该提示响应预测什么数据块预计将构成所述页面;以及
将所述提示响应返回所述接收对等体以帮助实现在所述页面的基于流的数据去重复期间在所述接收对等体处的预热操作;
其中,所述提示请求和所述提示响应是在硬件元件中运行的软件中生成的。
2.如权利要求1所述的方法,其中,所述发送对等体在前进到源以取回所述页面时将所述提示响应返回所述接收对等体。
3.如权利要求2所述的方法,其中,所述接收对等体使用所述提示响应中的信息来用所述发送对等体预测的预计将构成所述页面的所述数据块预热相关联的高速缓存。
4.如权利要求2所述的方法,其中,所述发送对等体在来自所述源的数据开始到达所述发送对等体时停止发送与一个或多个提示响应相关联的信息。
5.如权利要求1所述的方法,其中,注释有向有环图的信息标识出一个或多个数据块所源自的URI主机和路径,以及与所述URI主机和路径相关联的页面已经通向在所述有注释的有向有环图中表示的给定其他内容的次数。
6.如权利要求5所述的方法,其中,由所述接收对等体生成的提示请求预测当所述次数的值到达可配置的阈值时所述发送对等体预计将利用的数据块。
7.如权利要求1所述的方法,其中,所述提示响应还预测什么数据块预计将被包括在从属于所述页面的一个或多个对象中。
8.如权利要求7所述的方法,其中,所述一个或多个对象是以下各项中的一个:嵌入式页面对象,以及至少一个链接页面及与其相关联的嵌入式对象。
9.一种在数据去重复系统中操作的装置,所述系统包括发送对等实体和接收对等实体,其中每一个实体支持去重复引擎,该去重复引擎通过检查流经所述对等实体的数据并且用指向数据字典的引用替换所述数据的块来提供基于流的数据去重复,所述装置包括:
与所述发送对等实体相关联的数据结构,所述数据结构表示所述发送对等实体在数据流中已经见到的数据块之间的时间和有序关系;以及
编码机构,其使用所述数据结构中的信息来由紧凑数据表示替换对所述发送对等实体在所述数据流中已经见到的数据块的一个或多个引用。
10.如权利要求9所述的装置,其中,所述数据结构是有向有环图。
11.如权利要求10所述的装置,其中,所述有向有环图包括一个或多个节点,其中节点表示数据块并且使表示与所述数据块相关联的指纹的标签与之相关联。
12.如权利要求11所述的装置,其中,所述有向有环图中的给定节点具有从状态集合中选择的状态。
13.如权利要求12所述的装置,其中,所述状态集合包括终端状态、中间状态和溢出状态,其中终端状态表示所述节点具有等于零的出度,其中中间状态表示所述节点具有等于一的出度,并且其中溢出状态表示所述节点具有大于一的出度。
14.如权利要求13所述的装置,其中,所述紧凑数据表示是包括连通在一起的一系列中间节点的串。
15.如权利要求14所述的装置,其中,所述编码机构生成与所述紧凑数据表示相关联的数据记录。
16.如权利要求15所述的装置,其中,所述发送对等实体包括用来向所述接收对等实体传输所述数据记录以代替所述引用的机构。
17.如权利要求9所述的装置,其中,所述发送对等实体还包括用来除去所述有向有环图的重复部分的机构。
18.一种上面存储有指令的非瞬时计算机可读介质,所述指令当在父数据处理节点和子数据处理节点上运行时执行以下操作,所述父数据处理节点和子数据处理节点具有各自的库:
当流穿过所述父数据处理节点时,将所述流分为块;
对于所述流中的特定块,在所述父数据处理节点处并且使用与所述父数据处理节点相关联的有向有环图(DCG)来确定所述子数据处理节点已经具有所述块的似然性;
基于所述确定,从所述父数据处理节点向所述子数据处理节点发送以下各项中的一个:所述块、对所述块的引用,以及如在与所述父数据处理节点相关联的所述有向有环图中标识出的表示一系列块的紧凑数据结构;
当所述流开始在所述子数据处理节点处被解码时,并且对于所述流中的至少一个引用或者紧凑数据结构,根据具体情况确定所述引用或者所述紧凑数据结构是否与在关联于子数据处理系统的库中存储的块相关联,其中所述确定步骤使用与所述子数据处理节点相关联的有向有环图(DCG);以及
如果所述引用或者紧凑数据结构与所述库中存储的块相关联,则将与所述块相关联的数据并入所述流中;并且
如果所述引用与缺失的块或者所述紧凑数据结构相关联,执行对所述父数据处理节点的按需请求以获得与所述块或者所述紧凑数据结构相对应的数据。
19.如权利要求18所述的计算机可读介质,其中,所述按需请求是对与缺失的紧凑数据结构相关联的块的请求。
20.如权利要求19所述的计算机可读介质,其中,有向有环图包括一个或多个节点,其中节点表示数据块并且使表示与所述数据块相关联的指纹的标签与之相关联。
Applications Claiming Priority (13)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261746344P | 2012-12-27 | 2012-12-27 | |
US201261746297P | 2012-12-27 | 2012-12-27 | |
US201261746163P | 2012-12-27 | 2012-12-27 | |
US61/746,163 | 2012-12-27 | ||
US61/746,297 | 2012-12-27 | ||
US61/746,344 | 2012-12-27 | ||
US14/139,902 US9699231B2 (en) | 2012-12-27 | 2013-12-24 | Stream-based data deduplication using directed cyclic graphs to facilitate on-the-wire compression |
US14/140,116 US9420058B2 (en) | 2012-12-27 | 2013-12-24 | Stream-based data deduplication with peer node prediction |
US14/140,116 | 2013-12-24 | ||
US14/139,902 | 2013-12-24 | ||
PCT/US2013/077701 WO2014105906A1 (en) | 2012-12-27 | 2013-12-24 | Stream-based data deduplication using peer node graphs |
US14/140,102 | 2013-12-24 | ||
US14/140,102 US9451000B2 (en) | 2012-12-27 | 2013-12-24 | Stream-based data deduplication with cache synchronization |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105074688A true CN105074688A (zh) | 2015-11-18 |
CN105074688B CN105074688B (zh) | 2018-04-17 |
Family
ID=51022045
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380073750.5A Active CN105074688B (zh) | 2012-12-27 | 2013-12-24 | 使用对等节点图的基于流的数据去重复 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP2939138B1 (zh) |
CN (1) | CN105074688B (zh) |
WO (1) | WO2014105906A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107679939A (zh) * | 2017-09-21 | 2018-02-09 | 深圳市云帆流量科技有限公司 | 一种数字资产流通方法及系统 |
CN110915188A (zh) * | 2017-06-30 | 2020-03-24 | 区块链控股有限公司 | 用于区块链网络中的高效传播的概率中继 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170249218A1 (en) * | 2014-09-18 | 2017-08-31 | Hewlett Packard Enterprise Development Lp | Data to be backed up in a backup system |
US10496313B2 (en) | 2014-09-22 | 2019-12-03 | Hewlett Packard Enterprise Development Lp | Identification of content-defined chunk boundaries |
US10228957B2 (en) | 2017-01-20 | 2019-03-12 | International Business Machines Corporation | Online method handle deduplication |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050060418A1 (en) * | 2003-09-17 | 2005-03-17 | Gennady Sorokopud | Packet classification |
US20070245090A1 (en) * | 2006-03-24 | 2007-10-18 | Chris King | Methods and Systems for Caching Content at Multiple Levels |
US20110185149A1 (en) * | 2010-01-27 | 2011-07-28 | International Business Machines Corporation | Data deduplication for streaming sequential data storage applications |
CN102194499A (zh) * | 2010-03-15 | 2011-09-21 | 华为技术有限公司 | 一种压缩字典同步的方法和装置 |
US20120047284A1 (en) * | 2009-04-30 | 2012-02-23 | Nokia Corporation | Data Transmission Optimization |
CN102378969A (zh) * | 2009-03-30 | 2012-03-14 | 惠普开发有限公司 | 拷贝卷中存储的数据的去重复 |
US20120166448A1 (en) * | 2010-12-28 | 2012-06-28 | Microsoft Corporation | Adaptive Index for Data Deduplication |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6820133B1 (en) | 2000-02-07 | 2004-11-16 | Netli, Inc. | System and method for high-performance delivery of web content using high-performance communications protocol between the first and second specialized intermediate nodes to optimize a measure of communications performance between the source and the destination |
US7240100B1 (en) | 2000-04-14 | 2007-07-03 | Akamai Technologies, Inc. | Content delivery network (CDN) content server request handling mechanism with metadata framework support |
US7111057B1 (en) | 2000-10-31 | 2006-09-19 | Akamai Technologies, Inc. | Method and system for purging content from a content delivery network |
US7472178B2 (en) | 2001-04-02 | 2008-12-30 | Akamai Technologies, Inc. | Scalable, high performance and highly available distributed storage system for Internet content |
US7133905B2 (en) | 2002-04-09 | 2006-11-07 | Akamai Technologies, Inc. | Method and system for tiered distribution in a content delivery network |
US20040093419A1 (en) | 2002-10-23 | 2004-05-13 | Weihl William E. | Method and system for secure content delivery |
US7660296B2 (en) | 2005-12-30 | 2010-02-09 | Akamai Technologies, Inc. | Reliable, high-throughput, high-performance transport and routing mechanism for arbitrary data flows |
US8230108B2 (en) * | 2007-04-13 | 2012-07-24 | Hart Communication Foundation | Routing packets on a network using directed graphs |
US7913209B1 (en) * | 2008-03-13 | 2011-03-22 | Xilinx, Inc. | Determining a cycle basis of a directed graph |
US8321648B2 (en) * | 2009-10-26 | 2012-11-27 | Netapp, Inc | Use of similarity hash to route data for improved deduplication in a storage server cluster |
US8595359B2 (en) * | 2011-03-08 | 2013-11-26 | Cisco Technology, Inc. | Efficient message distribution for directed acyclic graphs |
-
2013
- 2013-12-24 WO PCT/US2013/077701 patent/WO2014105906A1/en active Application Filing
- 2013-12-24 CN CN201380073750.5A patent/CN105074688B/zh active Active
- 2013-12-24 EP EP13866721.7A patent/EP2939138B1/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050060418A1 (en) * | 2003-09-17 | 2005-03-17 | Gennady Sorokopud | Packet classification |
US20070245090A1 (en) * | 2006-03-24 | 2007-10-18 | Chris King | Methods and Systems for Caching Content at Multiple Levels |
CN102378969A (zh) * | 2009-03-30 | 2012-03-14 | 惠普开发有限公司 | 拷贝卷中存储的数据的去重复 |
US20120047284A1 (en) * | 2009-04-30 | 2012-02-23 | Nokia Corporation | Data Transmission Optimization |
US20110185149A1 (en) * | 2010-01-27 | 2011-07-28 | International Business Machines Corporation | Data deduplication for streaming sequential data storage applications |
CN102194499A (zh) * | 2010-03-15 | 2011-09-21 | 华为技术有限公司 | 一种压缩字典同步的方法和装置 |
US20120166448A1 (en) * | 2010-12-28 | 2012-06-28 | Microsoft Corporation | Adaptive Index for Data Deduplication |
Non-Patent Citations (1)
Title |
---|
PEDRO DÍAZ 等: "Stream Chaining: Exploiting Multiple Levels of Correlation in Data Prefetching", 《ACM》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110915188A (zh) * | 2017-06-30 | 2020-03-24 | 区块链控股有限公司 | 用于区块链网络中的高效传播的概率中继 |
CN110915188B (zh) * | 2017-06-30 | 2023-04-04 | 区块链控股有限公司 | 用于区块链网络中的高效传播的概率中继的方法和系统 |
CN107679939A (zh) * | 2017-09-21 | 2018-02-09 | 深圳市云帆流量科技有限公司 | 一种数字资产流通方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105074688B (zh) | 2018-04-17 |
EP2939138A4 (en) | 2016-11-30 |
EP2939138A1 (en) | 2015-11-04 |
WO2014105906A1 (en) | 2014-07-03 |
EP2939138B1 (en) | 2020-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11985190B2 (en) | Stream-based data deduplication with peer node prediction | |
CN104221003B (zh) | 利用异步数据词典在多租户共享的基础设施中的基于流的重复数据删除 | |
US11178201B2 (en) | Stream-based data deduplication using directed cyclic graphs to facilitate on-the-wire compression | |
CN104081739B (zh) | 在覆盖网络中利用压缩和差异化引擎的基于主机/路径的数据差异化装置和系统 | |
US20200236156A1 (en) | Client side cache visibility with tls session tickets | |
US10630758B2 (en) | Method and system for fulfilling server push directives on an edge proxy | |
US7970856B2 (en) | System and method for managing and distributing assets over a network | |
CN104615666A (zh) | 使用本地托管高速缓存和密码散列函数来减少网络通信的方法和系统 | |
CN105074688A (zh) | 使用对等节点图的基于流的数据去重复 | |
Chen | Flowchain: A distributed ledger designed for peer-to-peer IoT networks and real-time data transactions | |
CN111404936A (zh) | 文件转发系统及方法 | |
Ramaprasath et al. | Cache coherency algorithm to optimize bandwidth in mobile networks | |
Leggieri et al. | Interoperability of two RESTful protocols: HTTP and CoAP | |
Safwat et al. | Segmented OTA Platform Over ICN Vehicular Networks | |
US11677793B2 (en) | Stream-based data deduplication with cache synchronization | |
Ruta et al. | RFID-enhanced Ubiquitous Knowledge Bases: framework and approach |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |