详细描述
在本自适应编码存储系统的优选实施例的以下描述中,对附图进行了参考,附图构成了实施例的一部分且在其中作为说明示出了可在其中实践自适应编码存储系统的具体实施例。可以理解,可以使用其它实施例并且可以做出结构上的改变而不背离本自适应编码存储系统的范围。
1.0 示例性操作环境
图1示出了可在其上实现本发明的合适的计算系统环境100的示例。计算系统环境100仅为合适的计算环境的一个示例,并非对本发明的使用范围或功能提出任何局限。也不应该把计算环境100解释为对示例性操作环境100中示出的任一组件或其组合有任何依赖性或要求。
本发明可用各种其它通用或专用计算系统环境或配置来操作。适用于本发明的公知的计算系统、环境和/或配置的示例包括,但不限于,个人计算机、服务器计算机、诸如蜂窝电话和PDA等手持式、膝上型或移动计算机或通信设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型机、大型计算机、包含上述系统或设备中的任一个的分布式计算环境等。
本发明可在诸如程序模块等由计算机执行的计算机可执行指令结合包括话筒阵列198的组件在内的硬件模块的一般上下文中描述。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。本发明也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实现。在分布式计算环境中,程序模块可以位于包括存储器存储设备在内的本地和远程计算机存储介质中。参考图1,用于实现本发明的一个示例性系统包括计算机110形式的通用计算设备。
计算机110的组件可以包括,但不限于:处理单元120、系统存储器130和将包括系统存储器在内的各种系统组件耦合至处理单元120的系统总线121。系统总线121可以是若干种总线结构中的任一种,包括存储器总线或存储器控制器、外围总线以及使用各类总线体系结构中的任一种的局部总线。作为示例而非局限,这类体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线、以及外围部件互连(PCI)总线(也称为小背板(Mezzanine)总线)。
计算机110通常包括各种计算机可读介质。计算机可读介质可以是可由计算机110访问的任何可用介质,且包括易失性和非易失性介质、可移动和不可移动介质。作为示例,而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据这样的信息的任意方法或技术来实现的易失性和非易失性、可移动和不可移动介质。
计算机存储介质包括,但不限于,RAM、ROM、PROM、EPROM、EEPROM、闪存或其它存储器技术;CD-ROM、数字多功能盘(DVD)或其它光盘存储;磁带盒、磁带、磁盘存储或其它磁性存储设备;或能用于存储所需信息且可以由计算机100访问的任何其它介质。通信介质通常以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,且包含任何信息传递介质。术语“已调制数据信号”指的是这样一种信号,其一个或多个特征以在信号中编码信息的方式被设定或更改。作为示例而非限制,通信介质包括有线介质,诸如有线网络或直接线连接,以及无线介质,诸如声学、RF、红外线和其它无线介质。上述的任意组合应该包含在计算机可读介质的范围内。
系统存储器130包括易失性和/或非易失性存储器形式的计算机存储介质,如只读存储器(ROM)131和随机存取存储器(RAM)132。基本输入/输出系统133(BIOS)包含有助于诸如启动时在计算机110中元件之间传递信息的基本例程,它通常被存储在ROM 131中。RAM 132通常包含处理单元120可以立即访问和/或目前正在操作的数据和/或程序模块。作为示例而非局限,图1示出了操作系统134、应用程序135、其它程序模块136和程序数据137。
计算机110也可以包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图1示出了从不可移动、非易失性磁介质中读取或向其写入的硬盘驱动器141,从可移动、非易失性磁盘152中读取或向其写入的磁盘驱动器151,以及从诸如CD ROM或其它光学介质等可移动、非易失性光盘156中读取或向其写入的光盘驱动器155。可以在示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括,但不限于,盒式磁带、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等。硬盘驱动器141通常由不可移动存储器接口,诸如接口140连接至系统总线121,磁盘驱动器151和光盘驱动器155通常由可移动存储器接口,诸如接口150连接至系统总线121。
上文讨论并在图1中示出的驱动器及其关联的计算机存储介质为计算机110提供了计算机可读指令、数据结构、程序模块和其它数据的存储。例如,在图1中,硬盘驱动器141被示为存储操作系统144、应用程序145、其它程序模块146和程序数据147。注意,这些组件可以与操作系统134、应用程序135、其它程序模块136和程序数据137相同或不同。操作系统144、应用程序145、其它程序模块146和程序数据147在这里被标注了不同的标号是为了说明至少它们是不同的副本。用户可以通过输入设备,如键盘162和定点设备161(通常指鼠标、跟踪球或触摸板)向计算机110输入命令和信息。
其它输入设备(未示出)可包括操纵杆、游戏手柄、圆盘式卫星天线、扫描仪、无线电接收机、以及电视或广播视频接收机等等。这些和其它输入设备通常通过耦合至系统总线121的有线或无线用户输入接口160连接至处理单元120,但是也可以通过其它常规的接口和总线结构来连接,如并行端口、游戏端口、通用串行总线(USB)、IEEE 1394接口、蓝牙TM无线接口、IEEE 802.11无线接口等等。此外,计算机110还可包括语音或音频输入设备,诸如话筒或话筒阵列198、以及经由音频接口199连接的扬声器197或其它声音输出设备,音频接口同样包括常规的有线或无线接口,诸如并行、串行、USB、IEEE 1394、蓝牙TM等等。
监视器191或其它类型的显示设备也经由诸如视频接口190等接口连接到系统总线121。除监视器以外,计算机也可以包括其它外围输出设备,诸如打印机196,它可以通过输出外围接口195连接。
计算机110可使用至一个或多个远程计算机,诸如远程计算机180的逻辑连接在网络化环境中操作。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其它常见的网络节点,且通常包括上文相对于计算机110描述的许多或所有元件,尽管在图1中只示出存储器存储设备181。图1中所示的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但也可以包括其它网络。这样的联网环境在办公室、企业范围计算机网络、内联网和因特网中是常见的。
当在LAN联网环境中使用时,计算机110通过网络接口或适配器170连接至LAN 171。当在WAN联网环境中使用时,计算机110通常包括调制解调器172或用于通过诸如因特网等WAN 173建立通信的其它装置。调制解调器172可以是内置或外置的,它可以通过用户输入接口160或其它合适的机制连接至系统总线121。在网络化环境中,相对于计算机110所描述的程序模块或其部分可以存储在远程存储器存储设备中。作为示例而非局限,图1示出远程应用程序185驻留在存储器设备181上。可以理解,示出的网络连接是示例性的,并且可以使用在计算机之间建立通信链路的其它手段。
一般而言,自适应编码存储系统在诸如图2所示的网络等的P2P网络中操作。对于特定的数据流会话,“服务器”200被定义为在P2P网络中最初发起数据或流媒体的节点;“客户机”(或接收者)210被定义为当前请求数据的节点;并且“服务对等体220”被定义为向客户机供应数据的完整或部分副本的节点。
一般而言,服务器200、客户机210以及服务对等体220都是连接到诸如因特网等的网络的最终用户节点。因为服务器200始终能够供应数据,所以服务器节点还担当服务对等体220。服务器节点200还能够执行不能由服务对等体220执行的管理功能,例如,维护可用的服务对等体列表、执行数字权限管理(DRM)功能等等。此外,如同传统的P2P方案一样,由于部署了越来越多的对等体节点220,因此此处所描述的自适应编码存储系统从提高的效率中获益。具体地,随着对等体节点220的数量的增长,数据服务器200上的负载将随之减少,由此变得以较少的代价运行,而在特定数据传输会话期间每个客户机节点210将能够接收好得多的数据质量。
此外,应当清楚,特定节点的角色可能改变。例如,一个特定节点可在一个特定数据传输中充当客户机210的角色,而在另一个会话中充当服务对等体220的角色。此外,特定节点能够同时充当客户机节点210和服务器200或服务对等体220两者的角色以同时发送一个或多个数据文件,或这些文件的一部分,并从一个或多个其他服务对等体接收其他数据。
在数据传输期间,客户机200首先定位保持所需数据中的某一些或全部的多个邻近的对等体220,并且然后从(可能包括服务器200的)多个对等体接收数据。结果,每个服务对等体220通过服务客户机210的一部分下载请求来减轻总上传负担而协助服务器200。结果,由于当有许多服务对等体220协助服务器200时有相当高的服务带宽可用,所以特别是在存在许多客户机的情况下,客户机210经常能够接收好得多的数据质量。
现在已讨论了示例性操作环境,本描述一节的其余部分将致力于描述实现自适应编码存储系统和过程的程序模块。
2.0 可靠、高效的对等存储
自适应编码存储系统提供自适应地确定是否使用ERC编码并且利用将用于给定文件大小的ERC编码的最优片段数以得到最优可靠性和效率的自适应擦除弹性编码(ERC)方案。用于文件的ERC编码的片段数将出于本讨论的目的被称为“ERC片段数”。以下各段提供对对等(P2P)存储效率和可靠性以及在P2P网络中对ERC的使用的讨论,以及对所使用的ERC片段数的讨论。然后讨论自适应编码存储系统和过程的各实施例。
2.1 P2P存储的可靠性:数据冗余
为具有不可靠部分的系统带来可靠性的特定解决方案是使用冗余。如果网络上的每个单独的对等体具有可靠性p,则要实现期望的可靠性p0,一个对等体可简单地将信息复制到n个对等体:
n=log(1-p0)/log(1-p), (1)
其中n是保存信息的对等体的数量。在检索时间,客户机可挨个联系信息存储对等体。只要信息存储对等体中的一个上线,就能够可靠地检索信息。
尽管实现了可靠性,但是简单的复制策略并不是高效的。图3绘出了实现“六个9”可靠性所需的信息存储对等体的数量的曲线。对于50%的对等体可靠性,一个对等体需要将信息复制并存储到20个对等体。这导致需要20倍的带宽和存储空间来分发和存储这些信息。显然,牺牲了效率以交换信息可靠性。
2.2 P2P的擦除弹性编码
为了在仍维持相同的可靠性的同时提高效率,ERC可以是有用的工具。ERC将原始文件分成k个原始片段{xi},i=0,...,k-1,每个片段都是Galois域GF(q)上的一个向量,其中q是该域的阶数。例如正在编码64KB长的文件,如果使用q=216且k=16,则每个片段将会是4KB,且将由2K的字组成,且每个字都是GF(216)的一个元素。ERC然后从原始片段生成编码的片段。经ERC编码的片段是由以下运算形成的:
其中cj是编码的片段,Gi是k维生成向量,并且等式(2)是全部都在GF(q)上的矩阵乘法。在解码时间,对等体收集m个编码的片段,其中m是等于或略大于k的数字并且尝试解码k个原始片段。这等价于求解等式:
如果由生成向量形成的矩阵具有满秩k,则可恢复原始消息。
有许多可用的ERC。特别感兴趣的一种是Reed-Solomon(RS)码。RS码使用结构化的生成向量,并且是最大可分距离(MDS)。结果,任何k个不同的编码的片段将能够解码原始片段。RS码的另一个优点是可通过生成向量的索引i来容易地标识和管理编码的片段,因此便于检测重复的RS码。在以下ERC的讨论中,假设使用RS码。然而,该自适应编码存储系统可用任何数量的传统ERC来实现。
2.3ERC:片段数量
通过在P2P存储中使用ERC,数据文件被分发给更多的对等体,但是每个对等体只需要存储是原始文件的1/k大小的一个编码的片段,导致总体减少了实现相同等级的可靠性所需的带宽和存储空间,并因此提高了效率。令n1为需要向其分发编码的片段以实现某一期望的可靠性等级的对等体数量。因为RS码是MDS码,所以保持k个不同的编码的片段的k个对等体将足以恢复原始文件。恰好有m个对等体可用的概率可用过二项式分布来计算:
因此可如下从p、p0和k计算n1:
重复率r被定义为:
r=n1/k (6)
重复率r是良好的效率指示符,因为文件的r个副本需要被分发和存储到P2P云中。
图4示出了对于不同ERC片段数k实现“六个9”可靠性所期望的重复率。可观察到对ERC的使用极大地降低了所需的重复率。比较非ERC(k=1)和ERC片段数k=256,对于10%的对等体可靠性所需的重复率从r=132减少到r=13.1,对于50%的对等体可靠性所需的重复率从r=20减少到r=2.5,而对于99%的对等体可靠性所需的重复率从r=3减少到r=1.05。ERC可提高效率而不会牺牲可靠性。
还可观察到更大的ERC片段数进一步降低了重复率。对于50%的对等体可靠性,从k=8到16、32、64、128和256导致重复率从r=5.75减少到4.375、3.53、3.02、2.68和2.48。相应的效率提高分别是24%、19%、15%、11%和8%。这似乎建议应当使用大的ERC片段数来得到更到的效率。
然而,更大的ERC片段数意味着需要更多的对等体来存储和检索编码的片段。如图5所示,绘出了需要保持编码的片段以实现“六个9”的可靠性的对等体数量的曲线。再次对于50%对等体可靠性,从k=8到16、32、64、128和256将信息存储对等体的数量从n1=46增加到70、113、193、343和630。每次k的翻倍导致存储信息所需的对等体多出52%、61%、71%、78%、84%。k的翻倍也需要在信息检索期间将联系的对等体数量至少翻倍。
在大多数实际的P2P网络中,在对等体之间建立连接需要不平凡数量的开销。开销的一部分归结于检索正确的对等体身份并找到正确的路由路径(例如,通过分布式散列表(DHT))。开销的另一部分是由于在对等体之一或两者位于NAT之后的情况下调用某些网络地址翻译(NAT)算法的需求,例如,STUN(经NAT的简单UDP穿越)。假设在对等体之间建立连接的平均开销是overhead(在本示例中设置成16KB),则可计算存储s大小的文件所需的总网络带宽为:
store_bandwidth=s*r+n1*overhead (7)
对于等式(7),可以意识到更大的ERC片段数并不始终导致最佳的效率。相反,对于小的文件,应当使用小ERC片段数或甚至非ERC。针对不同文件大小和ERC片段数计算了等式(7)中所需的总带宽,并绘出了图6所示的曲线。在不同的ERC片段数之间的边界是适于特定ERC片段数的最优文件大小范围。例如,图6的底部曲线示出了在其下应当使用非ERC,而在其上应当使用片段数k=2的ERC的文件大小边界。ò》,
有趣的观察结果是文件大小边界相对地对对等体可用性并不敏感,这极大简化了最优ERC片段参数的选择。一般而言,对于比约10KB小的文件,不应使用ERC。对于片段数k=2、4、6、8、16、32、128和256的ERC,最合适的文件大小范围分别约为10-33KB、33-100KB、100-310KB、310-950KB、950KB-2.9MB、2.9MB-8.9MB、8.9-26MB、>26MB。
2.4 自适应ERC模式
自适应编码存储系统和方法自适应地选择合适的ERC片段数以可靠地在P2P网络中高效地存储内容。通过使用图6中建立的文件边界曲线,该系统的一个实施例对于不同的文件大小选择使用非ERC,以及片段数k=2、4、6、8、16、32、64、128、256的ERC。图7和图8示出了自适应ERC方法与固定参数的ERC的比较,以及网络带宽使用中的区别,其中对等体可靠性分别为50%和99%。相比于使用k=1(非ERC)、8、32和256的固定的ERC片段数,对于50%的对等体可靠性,自适应ERC方法可以将效率平均提高61%、26%、25%和50%,而对于99%的对等体可靠性,平均提高50%、18%、29%和57%。效率的提高是显著的。
最一般而言,图9示出了自适应编码存储过程的一个实施例。如过程动作902所示,自适应编码存储系统计算对于不同片段数的最优文件大小边界。输入将要编码的给定文件大小的文件(过程动作904)。如过程动作906所示,做出关于输入文件大小是否对应于非擦除编码(k=1)的检查。如果输入文件大小不与ERC相对应,则不使用ERC来编码该文件(过程动作908)。如果该文件大小对应于ERC文件大小范围,则使用ERC编码和对应于输入文件的文件大小的片段数来编码该文件,该片段数是对于该文件大小的最优片段数(过程动作910)。
此处所描述的自适应ERC过程的主要应用是P2P备份和还原。对等体可将文件备份到网络中的其他对等体并然后在文件丢失的情况下(例如,文件在计算机崩溃中丢失)通过从网络中的对等体检索文件来还原这些文件。一般而言,图10示出了显示在P2P网络中如何利用自适应编码存储技术的示例性操作流程图。应当注意,图10中由断开的线或虚线所表示的任何框和框之间的互连表示此处所描述的自适应编码存储系统的替换实施例,并且以下描述的这些替换实施例中的任一个或全部可以结合贯穿本文所描述的其它替换实施例来使用。
具体地,如图10所示,在数据传输操作之前,诸如当期望将数据备份到网络中的对等体时,服务器200或对等体220编码1000将要传输到其他对等体以便存储的数据。自适应编码存储系统能够用多种传统编解码器中的任一个来运作,比如,MPEG 1/2/4、WMA、WMV等等。此外,在编码过程1000期间,服务器200或对等体220还生成数据头,以及包含数据结构的同伴文件(companion file)。
如上所述,在一个实施例中,一旦编码1000了数据,该编码的数据分组就被拆分1005成多个固定大小的数据单元。此外,如同编码的数据一样,数据头和数据结构也被拆分1005成多个与用来拆分编码的数据分组相同的固定大小的数据单元。将该信息拆分1005成固定长度的数据单元允许对等体在数据传输操作之前预分配存储器块,由此避免在数据传输过程期间的计算上昂贵的存储器分配运算。此外,对较小的数据单元的使用允许储存数据的客户机或对等体对由每个对等体消耗的确切的带宽数量进行更精细的控制以在数据传输操作期间满足客户机数据单元请求。
除了将编码的数据、数据头、以及数据结构拆分1005成更小的数据单元之外,如果利用擦除弹性编码,则还使用一额外的编码层以便在其中服务对等体固有地不可靠的典型P2P环境中提供增加的冗余。具体地,如上所述,在一个实施例中,如果确定擦除弹性编码适于数据文件,则数据单元进一步被分成多个数据块并且使用擦除弹性编码过程1010来编码文件。
对这一编码1010的使用保证一个或多个对等体具有重构特定数据单元所必需的数据块,同时简化了客户机标识哪些对等体包含必要数据的需求。此外,在一个实施例中,每个服务对等体220所使用的擦除弹性编码密钥由服务器200自动地分配给每个对等体。然而,在另一个实施例中,每个服务对等体220简单地随机选择擦除弹性编码。这些密钥然后在每个对等体220最初由客户机210联系时由该客户机来检索。
一旦最初已编码1000了数据文件,拆分1005成数据单元,并且可能进一步进行了擦除编码1010,则所得数据单元或数据块然后就被分发1015到各对等体220。该分发1015在将编码的数据块或分组简单地全部或部分提供给其中该数据块或分组被高速缓存或存储以备将来当希望检索该数据的客户机调用时进行数据传输的多个对等体的意义上可以是蓄意的。
一旦数据已被分发1015到服务对等体220,客户机210然后在其希望从存储中检索该数据的情况下已准备好开始对那些对等体的数据请求。此外,如上所述,服务器200也可出于将数据传输到客户机210的目的充当对等体220。
此时,客户机210通过首先检索可用的服务对等体220的列表来开始数据传输会话。该列表是直接从服务器200、从对等体220中的一个、或通过使用用于标识潜在服务对等体的传统的分布式散列表(DHT)方法来检索的。一旦客户机1010已检索了对等体列表,该客户机然后就连接到每个服务对等体220并且从每个对等体检索1025可用文件的列表。一旦客户机210已检索了每个对等体220的可用文件列表,该客户机然后就通过经由客户机和一个或多个对等体之间的网络连接向这些对等体请求对应于该信息的数据单元来检索1035将从这一个或多个对等体传输的数据的数据头和数据结构。
数据头一般包含描述数据的全局信息,例如,数据中的通道数量、每个通道的属性和特性(音频采样速率,视频分辨率/帧速率)、所使用的编解码器、媒体的作者/版权所有者等等。结果,在数据传输会话开始时对数据头的检索允许客户机220设置或初始化1040必要的工具以在数据传输会话期间接收到随后接收到的分组之前解码1065这些分组。
此外,在检索1035了特定数据的数据结构之后,客户机分析该数据结构并计算在数据传输过程期间将需要被请求的已传输数据的数据单元的数据单元ID 1045。客户机210然后向对等体220中的一个或多个挨个请求那些数据单元1050。
最后,一旦已经根据客户机210的请求1050检索了构成特定数据分组的所有数据单元,就将那些数据分组重新装配1055成原始数据分组。然后解码1060重新装配的数据分组并且可在客户机210上还原1065。
3.0 P2P存储:政策和设计策略
除了基于将在P2P网络中存储的文件大小来调整ERC片段数之外,还可提高效率。此处所描述的自适应编码存储系统的各实施例被设计成通过利用如下所述的某些策略来提高存储效率。可结合自适应编码存储系统或在任何P2P网络中利用这些策略。
3.1 P2P存储成本
在本节中,将在P2P网络中存储文件与直接在“六个9”可靠服务器中存储文件相比较。可观察到,P2P解决方案减少了服务器带宽和成本,但要求对等体花费更多的带宽以将文件分发到P2P存储中。对网络带宽的总体使用在P2P解决方案中增加了。客户机上传带宽的增加可被认为是P2P存储系统的成本。对于不同对等体可靠性和文件大小的成本以表格形式示于表1中。
表1 P2P中增加的带宽使用的成本。
可观察到,如果对等体可靠性很高且文件大小很大,则使用P2P存储的成本就很小。例如,将100MB的文件存储到具有99%可靠性的对等体仅导致9%的成本。然而,当对等体可靠性很低且文件大小很小时,该成本可能是相当大的。
3.2P2P存储政策
从表1中,可以导出以下使用P2P存储云的政策:
a)应当使用不可靠的对等体来存储大文件,而使用可靠的对等体来存储小文件。如果将大文件分配给不可靠的对等体,而将小文件分配给可靠的对等体,则对于P2P系统的成本将更少。
b)应当使用不可靠的对等体来存储静态文件,而使用可靠的对等体来存储动态文件。将那些不改变的文件称为静态的,而将那些一直改变的文件称为动态的。多个小静态文件可被捆绑成一个大静态文件并且存储在P2P存储云中。该同一策略对于动态文件并不有效,因为单个文件的改变需要更新整个组合的文件。
该政策的推论是如果使用P2P网络来存储应用程序的状态、对等体状态信息等等,则应当将信息转向网络中最可靠的对等体。如果限制包含应用程序状态的文件只被放置在高可靠性对等体中(本质上,高可靠性对等体将形成构成扩展的P2P网络的核心的子网),则可以极大地降低此重复率以及更新状态文件的成本,并且提高了效率。
c)不可靠的对等体应被允许分发较少的文件,而可靠的对等体应被允许分发较多的文件。
d)较小的文件应被分配较高的分发成本,而较大的文件应被分配较低的分发成本。
政策c)和d)是对于P2P备份和检索应用的,其中对等体可以将内容分发到P2P存储云中,并且为其他对等体存储内容。平衡的P2P存储网络应当令每个对等体平衡其贡献和收益。在先前的工作中已经指出,带宽是P2P存储应用中主要资源。令对等体的贡献是其为其他对等体接收并存储的编码片段的数量。令对等体的收益是其分发到P2P云中的内容的数量。考虑到低可靠性导致更多的冗余数据存储,应当惩罚不可靠的对等体以使其将被允许分发较少的文件,并且奖励可靠的对等体以使其将被允许分发较多的文件。这一政策在P2P经济中具有积极的收益,因为它鼓励用户保持P2P应用程序在线,因此提高了P2P网络的总体可靠性并降低了所需的重复率。
还可通过将高分发成本分配给小文件,从而要求对等体成比例地贡献更多,来惩罚小文件的分发;以及通过将低分发成本分配给大文件,从而令对等体成比例地贡献更少,来奖励大文件的分发。作为推论,P2P备份应用程序应被设计为最小化备份频率。可以考虑将多个改变捆绑成一大型文件,并且仅一次,例如每天午夜将该文件更新到P2P存储云中,而不是在其改变之后立即更新该文件。
图11示出了围绕上述政策设计的自适应编码存储系统和方法的一个实施例。如过程动作1102所示,确定在分布式或P2P网络中的每个对等体的可靠性。输入将要分发或存储的文件(过程动作1104)。评估该文件的大小(过程动作1106),并且基于等式(7)中的期望存储带宽将分发成本分配给该文件(过程动作1108)。如果该文件是大文件,则可分配到较高的分发成本。如果该文件是小文件,则可将较低的分发成本分配给该文件。基于文件的大小,自适应编码存储系统将选择具有适当可靠性的对等体来存储该文件(过程动作1110)。即,使用其可靠性低于给定阈值的对等体来存储和分发大文件,而使用其可靠性高于给定阈值的对等体来存储和分发小文件。
图12示出了围绕上述政策设计的自适应编码存储系统和方法的另一个实施例。如过程动作1202所示,确定在分布式或P2P网络中的每个对等体的可靠性。输入将要分发或存储的文件(过程动作1204)。将该文件与先前存储的同一文件相比较以确定该文件是静态的还是动态的(过程动作1206)。在第一次存入该文件时,假设该文件是动态的。如果观察到对该文件的频繁改变,则该文件仍被指定为动态的。如果观察到该文件长时间没有改变,则该文件被指定为静态的。将动态文件存储在高可靠性对等体中(过程动作1210)。(因此,首先,文件首先将被存储在服务器或高可靠性对等体中)。一旦观察到文件没有改变,并且变为静态的,则这些静态文件就将被重新分发,并存储在低可靠性对等体中。
应当注意,可以单独或组合地适用图11和12所示的各实施例以提高分布式或对等网络的总体效率和可靠性。
3.3具有服务器组件支持的P2P存储。
如果使用服务器组件作为对P2P网络的补充,则可对于大的和静态文件使用P2P存储,而对于小的、动态文件使用服务器。因为消耗大多数服务器资源的是大文件,所以P2P存储是对服务器的很好的补充。
如图13所示,自适应编码存储系统和过程的一个实施例利用了具有服务器支持的P2P备份。如图13所示,将网络中的动态文件备份到服务器(过程动作1302)。客户机和/或服务器然后可以自动地检测那些不再改变并正转变为静态文件的动态文件(过程动作1304、1306)。如过程动作1308所示,这些检测到的静态文件然后可一起被捆绑成一大文件,并用ERC分发到P2P存储云中(过程动作1310)。这有效地增加了存储在P2P云中的文件的大小。结合片段数的ERC,这可以提高效率。
可以单独或与图11和12所示的各实施例组合地使用图13所示的实施例以提高分布式或对等网络的总体效率和可靠性。还应注意,该实施例可在使用或不使用擦除弹性编码的两种情况下使用。
应当注意,可以按所需的任何组合使用上述替换实施例的任一个或全部以形成另外的混合实施例。尽管用对结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求的示例形式公开的。