專利名稱::可靠、高效的對等存儲的制作方法可靠、高效的對等存儲背景在對等(P2P)應(yīng)用中,當(dāng)對等體加入P2P服務(wù)時(shí)攜帶網(wǎng)絡(luò)帶寬和/或硬盤驅(qū)動器存儲資源。隨著對P2P系統(tǒng)的需求增長,系統(tǒng)的容量也隨之增長。這與客戶機(jī)一服務(wù)器系統(tǒng)完全相反,在客戶機(jī)一服務(wù)器系統(tǒng)中,服務(wù)器的容量是固定的,并且由客戶機(jī)一服務(wù)器系統(tǒng)的提供方來支付。結(jié)果,運(yùn)行P2P系統(tǒng)比運(yùn)行客戶機(jī)一服務(wù)器系統(tǒng)更經(jīng)濟(jì),并且因?yàn)镻2P系統(tǒng)是可伸縮的,所以它是優(yōu)越的。在P2P系統(tǒng)中,對等體不僅貢獻(xiàn)帶寬,還對服務(wù)其他對等體的存儲空間做出貢獻(xiàn)。由對等體貢獻(xiàn)的整體存儲空間形成了分布式存儲云。數(shù)據(jù)可被存儲到云中,并且可從中檢索。P2P存儲可用于大量的應(yīng)用。分布式備份就是其中之一。對等體可將其自己的數(shù)據(jù)備份到P2P云中。當(dāng)對等體發(fā)生故障時(shí),數(shù)據(jù)可從云中還原。另一個(gè)P2P應(yīng)用是分布式數(shù)據(jù)訪問。因?yàn)榭蛻魴C(jī)可從多個(gè)保持?jǐn)?shù)據(jù)的對等體中同時(shí)檢索數(shù)據(jù),所以,P2P檢索能夠具有相比于從單個(gè)源中檢索數(shù)據(jù)更高的吞吐量。另一個(gè)應(yīng)用是點(diǎn)播電影觀看。媒體服務(wù)器可搶先在P2P云中散播電影文件。當(dāng)客戶機(jī)正在觀看該電影時(shí),它可從P2P云和服務(wù)器處流傳送該電影,因此減少服務(wù)器負(fù)載,減少在網(wǎng)絡(luò)主干上的通信量并提高流電影的質(zhì)量。盡管在P2P網(wǎng)絡(luò)中的對等體可像服務(wù)器那樣運(yùn)作,但是它們在一個(gè)重要的方面與商用web/數(shù)據(jù)庫服務(wù)器不同可靠性。因?yàn)閷Φ润w通常是用其多余的硬盤驅(qū)動器空間和空閑帶寬來支持P2P應(yīng)用的普通計(jì)算機(jī),所以它遠(yuǎn)沒有典型的服務(wù)器可靠。用戶有時(shí)可選擇關(guān)閉對等計(jì)算機(jī)或P2P應(yīng)用程序。例如,大文件上傳/下載的必要需求可使對等體極度缺乏用于P2P活動的必要帶寬。對等計(jì)算機(jī)由于需要升級或修補(bǔ)軟件/硬件,或由于病毒攻擊可能是脫機(jī)的。對等體的計(jì)算機(jī)硬件和網(wǎng)絡(luò)鏈接也固有地遠(yuǎn)沒有為可靠性而設(shè)計(jì)的典型的服務(wù)器計(jì)算機(jī)和其商用網(wǎng)絡(luò)鏈接可靠。然而,商用服務(wù)器/服務(wù)器群集是為"六個(gè)9"的可靠性(具有10-6的故障率,以該故障率,每年允許大約30秒的停機(jī)時(shí)間)而設(shè)計(jì)的,優(yōu)良的消費(fèi)者對等體可能只具有"二個(gè)九"的可靠性(10-2的故障率或每天大約15分鐘的停機(jī)時(shí)間),并且對等體只具有50%(時(shí)間下降一半)或甚至10%(時(shí)間下降90%)的可靠性并非不常見。例如P2P備份和數(shù)據(jù)檢索等大多數(shù)P2P應(yīng)用想要維持與服務(wù)器的等級("六個(gè)9"的可靠性)相同的P2P存儲可靠性等級。該挑戰(zhàn)在于如何使用對等體的最少的帶寬和存儲資源來構(gòu)建可靠、高效的P2P存儲。概述提出了一種用于在對等(P2P)網(wǎng)絡(luò)中高效且可靠地存儲數(shù)據(jù)的自適應(yīng)編碼存儲系統(tǒng)和方法。該自適應(yīng)編碼存儲系統(tǒng)和方法基于存儲和分發(fā)的文件大小來調(diào)整擦除彈性編碼(ERC)的多個(gè)片段、ERC片段數(shù)。該自適應(yīng)編碼存儲系統(tǒng)的多個(gè)實(shí)施例利用各過程來提高P2P網(wǎng)絡(luò)的效率和可靠性。例如,在一個(gè)實(shí)施例中,如果服務(wù)器組件支持是可用的,則將較小的、動態(tài)的數(shù)據(jù)轉(zhuǎn)向更可靠的對等體或甚至服務(wù)器。同樣地,在另一個(gè)實(shí)施例中,對于平衡的P2P網(wǎng)絡(luò),不可靠并且正在分發(fā)較小文件的對等體被允許分發(fā)較少的數(shù)據(jù)。注意,雖然背景一節(jié)中所描述的現(xiàn)有的對等存儲和分發(fā)系統(tǒng)中的上述限制可由根據(jù)本發(fā)明的自適應(yīng)編碼存儲系統(tǒng)的一個(gè)具體實(shí)現(xiàn)來解決,但是該系統(tǒng)和過程決不限于只解決所述缺點(diǎn)中的任一個(gè)或所有的實(shí)現(xiàn)。相反,如將從以下描述中變得明顯的,本系統(tǒng)和過程具有廣泛得多的應(yīng)用。應(yīng)當(dāng)注意,提供本概述以便用簡化形式介紹下面在詳細(xì)描述中進(jìn)一步描述的一些概念。本概述不旨在標(biāo)識所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于幫助確定所要求保護(hù)的主題的范圍。參考以下描述、所附權(quán)利要求書以及附圖,將更好地理解自適應(yīng)編碼存儲系統(tǒng)的具體特征、方面、以及優(yōu)點(diǎn),附圖中圖1是描繪構(gòu)成實(shí)現(xiàn)此處所描述的自適應(yīng)編碼存儲系統(tǒng)和方法的示例性系統(tǒng)的通用計(jì)算設(shè)備的概括系統(tǒng)圖。圖2示出了可用于此處所描述的自適應(yīng)編碼存儲系統(tǒng)和方法的示例性對等(P2P)網(wǎng)絡(luò)。圖3提供了示出實(shí)現(xiàn)期望的10-6的可靠性的信息存儲對等體的數(shù)量的曲線圖。圖4提供了示出對等體可靠性以及期望的重復(fù)率的曲線圖。圖5提供了示出使用擦除彈性編碼來實(shí)現(xiàn)期望的10-6的可靠性所必需的信息存儲對等體的數(shù)量的曲線圖。圖6提供了ERC片段數(shù)以及相關(guān)聯(lián)的適于P2P網(wǎng)絡(luò)中的信息存儲的文件大小的曲線圖。圖7提供了描繪在具有自適應(yīng)ERC和固定ERC的P2P配置中的對等體之間的帶寬使用的曲線圖(在對等體可靠性=50%的情況下)。圖8提供了描繪在具有自適應(yīng)ERC和固定ERC的P2P配置中的對等體之間的帶寬使用的曲線圖(在對等體可靠性=99%的情況下)。圖9描繪了自適應(yīng)編碼存儲過程的一個(gè)實(shí)施例。圖10描繪了示出在P2P網(wǎng)絡(luò)中如何利用自適應(yīng)編碼存儲技術(shù)的示例性操作流程圖。圖11描繪了實(shí)現(xiàn)優(yōu)化P2P網(wǎng)絡(luò)的存儲效率的過程的自適應(yīng)編碼存儲系統(tǒng)和過程的實(shí)施例。圖12描繪了實(shí)現(xiàn)優(yōu)化P2P系統(tǒng)的存儲效率的過程的自適應(yīng)編碼存儲系統(tǒng)和方法的另一個(gè)實(shí)施例。圖13描繪了利用具有服務(wù)器支持的P2P備份的自適應(yīng)編碼存儲系統(tǒng)和方法的實(shí)施例。詳細(xì)描述在本自適應(yīng)編碼存儲系統(tǒng)的優(yōu)選實(shí)施例的以下描述中,對附圖進(jìn)行了參考,附圖構(gòu)成了實(shí)施例的一部分且在其中作為說明示出了可在其中實(shí)踐自適應(yīng)編碼存儲系統(tǒng)的具體實(shí)施例??梢岳斫?,可以使用其它實(shí)施例并且可以做出結(jié)構(gòu)上的改變而不背離本自適應(yīng)編碼存儲系統(tǒng)的范圍。1.0示例性操作環(huán)境圖1示出了可在其上實(shí)現(xiàn)本發(fā)明的合適的計(jì)算系統(tǒng)環(huán)境100的示例。計(jì)算系統(tǒng)環(huán)境IOO僅為合適的計(jì)算環(huán)境的一個(gè)示例,并非對本發(fā)明的使用范圍或功能提出任何局限。也不應(yīng)該把計(jì)算環(huán)境100解釋為對示例性操作環(huán)境100中示出的任一組件或其組合有任何依賴性或要求。本發(fā)明可用各種其它通用或?qū)S糜?jì)算系統(tǒng)環(huán)境或配置來操作。適用于本發(fā)明的公知的計(jì)算系統(tǒng)、環(huán)境和/或配置的示例包括,但不限于,個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、諸如蜂窩電話和PDA等手持式、膝上型或移動計(jì)算機(jī)或通信設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、機(jī)頂盒、可編程消費(fèi)電子產(chǎn)品、網(wǎng)絡(luò)PC、小型機(jī)、大型計(jì)算機(jī)、包含上述系統(tǒng)或設(shè)備中的任一個(gè)的分布式計(jì)算環(huán)境等。本發(fā)明可在諸如程序模塊等由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令結(jié)合包括話筒陣列198的組件在內(nèi)的硬件模塊的一般上下文中描述。一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等。本發(fā)明也可以在其中任務(wù)由通過通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備執(zhí)行的分布式計(jì)算環(huán)境中實(shí)現(xiàn)。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲器存儲設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲介質(zhì)中。參考圖1,用于實(shí)現(xiàn)本發(fā)明的一個(gè)示例性系統(tǒng)包括計(jì)算機(jī)110形式的通用計(jì)算設(shè)備。計(jì)算機(jī)110的組件可以包括,但不限于處理單元120、系統(tǒng)存儲器130和將包括系統(tǒng)存儲器在內(nèi)的各種系統(tǒng)組件耦合至處理單元120的系統(tǒng)總線121。系統(tǒng)總線121可以是若干種總線結(jié)構(gòu)中的任一種,包括存儲器總線或存儲器控制器、外圍總線以及使用各類總線體系結(jié)構(gòu)中的任一種的局部總線。作為示例而非局限,這類體系結(jié)構(gòu)包括工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線、微通道體系結(jié)構(gòu)(MCA)總線、增強(qiáng)型ISA(EISA)總線、視頻電子技術(shù)標(biāo)準(zhǔn)協(xié)會(VESA)局部總線、以及外圍部件互連(PCI)總線(也稱為小背板(Mezzanine)總線)。計(jì)算機(jī)110通常包括各種計(jì)算機(jī)可讀介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以是可由計(jì)算機(jī)110訪問的任何可用介質(zhì),且包括易失性和非易失性介質(zhì)、可移動和不可移動介質(zhì)。作為示例,而非限制,計(jì)算機(jī)可讀介質(zhì)可以包括計(jì)算機(jī)存儲介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲介質(zhì)包括以用于存儲諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)這樣的信息的任意方法或技術(shù)來實(shí)現(xiàn)的易失性和非易失性、可移動和不可移動介質(zhì)。計(jì)算機(jī)存儲介質(zhì)包括,但不限于,RAM、ROM、PROM、EPROM、EEPROM、閃存或其它存儲器技術(shù);CD-ROM、數(shù)字多功能盤(DVD)或其它光盤存儲;磁帶盒、磁帶、磁盤存儲或其它磁性存儲設(shè)備;或能用于存儲所需信息且可以由計(jì)算機(jī)100訪問的任何其它介質(zhì)。通信介質(zhì)通常以諸如載波或其它傳輸機(jī)制等已調(diào)制數(shù)據(jù)信號來體現(xiàn)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),且包含任何信息傳遞介質(zhì)。術(shù)語"已調(diào)制數(shù)據(jù)信號"指的是這樣一種信號,其一個(gè)或多個(gè)特征以在信號中編碼信息的方式被設(shè)定或更改。作為示例而非限制,通信介質(zhì)包括有線介質(zhì),諸如有線網(wǎng)絡(luò)或直接線連接,以及無線介質(zhì),諸如聲學(xué)、RF、紅外線和其它無線介質(zhì)。上述的任意組合應(yīng)該包含在計(jì)算機(jī)可讀介質(zhì)的范圍內(nèi)。系統(tǒng)存儲器130包括易失性和/或非易失性存儲器形式的計(jì)算機(jī)存儲介質(zhì),如只讀存儲器(ROM)131和隨機(jī)存取存儲器(RAM)132。基本輸入/輸出系統(tǒng)133(BIOS)包含有助于諸如啟動時(shí)在計(jì)算機(jī)110中元件之間傳遞信息的基本例程,它通常被存儲在ROM131中。RAM132通常包含處理單元120可以立即訪問和/或目前正在操作的數(shù)據(jù)和/或程序模塊。作為示例而非局限,圖1示出了操作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136和程序數(shù)據(jù)137。計(jì)算機(jī)110也可以包括其它可移動/不可移動、易失性/非易失性計(jì)算機(jī)存儲介質(zhì)。僅作為示例,圖l示出了從不可移動、非易失性磁介質(zhì)中讀取或向其寫入的硬盤驅(qū)動器141,從可移動、非易失性磁盤152中讀取或向其寫入的磁盤驅(qū)動器151,以及從諸如CDROM或其它光學(xué)介質(zhì)等可移動、非易失性光盤156中讀取或向其寫入的光盤驅(qū)動器155??梢栽谑纠圆僮鳝h(huán)境中使用的其它可移動/不可移動、易失性/非易失性計(jì)算機(jī)存儲介質(zhì)包括,但不限于,盒式磁帶、閃存卡、數(shù)字多功能盤、數(shù)字錄像帶、固態(tài)RAM、固態(tài)ROM等。硬盤驅(qū)動器141通常由不可移動存儲器接口,諸如接口140連接至系統(tǒng)總線121,磁盤驅(qū)動器151和光盤驅(qū)動器155通常由可移動存儲器接口,諸如接口150連接至系統(tǒng)總線121。上文討論并在圖1中示出的驅(qū)動器及其關(guān)聯(lián)的計(jì)算機(jī)存儲介質(zhì)為計(jì)算機(jī)110提供了計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的存儲。例如,在圖1中,硬盤驅(qū)動器141被示為存儲操作系統(tǒng)144、應(yīng)用程序145、其它程序模塊146和程序數(shù)據(jù)147。注意,這些組件可以與操作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136和程序數(shù)據(jù)137相同或不同。操作系統(tǒng)144、應(yīng)用程序145、其它程序模塊146和程序數(shù)據(jù)147在這里被標(biāo)注了不同的標(biāo)號是為了說明至少它們是不同的副本。用戶可以通過輸入設(shè)備,如鍵盤162和定點(diǎn)設(shè)備161(通常指鼠標(biāo)、跟蹤球或觸摸板)向計(jì)算機(jī)110輸入命令和信息。其它輸入設(shè)備(未示出)可包括操縱桿、游戲手柄、圓盤式衛(wèi)星天線、掃描儀、無線電接收機(jī)、以及電視或廣播視頻接收機(jī)等等。這些和其它輸入設(shè)備通常通過耦合至系統(tǒng)總線121的有線或無線用戶輸入接口160連接至處理單元120,但是也可以通過其它常規(guī)的接口和總線結(jié)構(gòu)來連接,如并行端口、游戲端口、通用串行總線(USB)、IEEE1394接口、藍(lán)牙TM無線接口、IEEE802.il無線接口等等。此外,計(jì)算機(jī)110還可包括語音或音頻輸入設(shè)備,諸如話筒或話筒陣列198、以及經(jīng)由音頻接口199連接的揚(yáng)聲器197或其它聲音輸出設(shè)備,音頻接口同樣包括常規(guī)的有線或無線接口,諸如并行、串行、USB、IEEE1394、藍(lán)牙TM等等。監(jiān)視器191或其它類型的顯示設(shè)備也經(jīng)由諸如視頻接口190等接口連接到系統(tǒng)總線121。除監(jiān)視器以外,計(jì)算機(jī)也可以包括其它外圍輸出設(shè)備,諸如打印機(jī)196,它可以通過輸出外圍接口195連接。計(jì)算機(jī)110可使用至一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī),諸如遠(yuǎn)程計(jì)算機(jī)180的邏輯連接在網(wǎng)絡(luò)化環(huán)境中操作。遠(yuǎn)程計(jì)算機(jī)180可以是個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對等設(shè)備或其它常見的網(wǎng)絡(luò)節(jié)點(diǎn),且通常包括上文相對于計(jì)算機(jī)110描述的許多或所有元件,盡管在圖1中只示出存儲器存儲設(shè)備181。圖1中所示的邏輯連接包括局域網(wǎng)(LAN)171和廣域網(wǎng)(WAN)173,但也可以包括其它網(wǎng)絡(luò)。這樣的聯(lián)網(wǎng)環(huán)境在辦公室、企業(yè)范圍計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和因特網(wǎng)中是常見的。當(dāng)在LAN聯(lián)網(wǎng)環(huán)境中使用時(shí),計(jì)算機(jī)110通過網(wǎng)絡(luò)接口或適配器170連接至LAN171。當(dāng)在WAN聯(lián)網(wǎng)環(huán)境中使用時(shí),計(jì)算機(jī)110通常包括調(diào)制解調(diào)器172或用于通過諸如因特網(wǎng)等WAN173建立通信的其它裝置。調(diào)制解調(diào)器172可以是內(nèi)置或外置的,它可以通過用戶輸入接口160或其它合適的機(jī)制連接至系統(tǒng)總線121。在網(wǎng)絡(luò)化環(huán)境中,相對于計(jì)算機(jī)110所描述的程序模塊或其部分可以存儲在遠(yuǎn)程存儲器存儲設(shè)備中。作為示例而非局限,圖l示出遠(yuǎn)程應(yīng)用程序185駐留在存儲器設(shè)備181上。可以理解,示出的網(wǎng)絡(luò)連接是示例性的,并且可以使用在計(jì)算機(jī)之間建立通信鏈路的其它手段。一般而言,自適應(yīng)編碼存儲系統(tǒng)在諸如圖2所示的網(wǎng)絡(luò)等的P2P網(wǎng)絡(luò)中操作。對于特定的數(shù)據(jù)流會話,"服務(wù)器"200被定義為在P2P網(wǎng)絡(luò)中最初發(fā)起數(shù)據(jù)或流媒體的節(jié)點(diǎn);"客戶機(jī)"(或接收者)210被定義為當(dāng)前請求數(shù)據(jù)的節(jié)點(diǎn);并且"服務(wù)對等體220"被定義為向客戶機(jī)供應(yīng)數(shù)據(jù)的完整或部分副本的節(jié)點(diǎn)。一般而言,服務(wù)器200、客戶機(jī)210以及服務(wù)對等體220都是連接到諸如因特網(wǎng)等的網(wǎng)絡(luò)的最終用戶節(jié)點(diǎn)。因?yàn)榉?wù)器200始終能夠供應(yīng)數(shù)據(jù),所以服務(wù)器節(jié)點(diǎn)還擔(dān)當(dāng)服務(wù)對等體220。服務(wù)器節(jié)點(diǎn)200還能夠執(zhí)行不能由服務(wù)對等體220執(zhí)行的管理功能,例如,維護(hù)可用的服務(wù)對等體列表、執(zhí)行數(shù)字權(quán)限管理(DRM)功能等等。此外,如同傳統(tǒng)的P2P方案一樣,由于部署了越來越多的對等體節(jié)點(diǎn)220,因此此處所描述的自適應(yīng)編碼存儲系統(tǒng)從提高的效率中獲益。具體地,隨著對等體節(jié)點(diǎn)220的數(shù)量的增長,數(shù)據(jù)服務(wù)器200上的負(fù)載將隨之減少,由此變得以較少的代價(jià)運(yùn)行,而在特定數(shù)據(jù)傳輸會話期間每個(gè)客戶機(jī)節(jié)點(diǎn)210將能夠接收好得多的數(shù)據(jù)質(zhì)量。此外,應(yīng)當(dāng)清楚,特定節(jié)點(diǎn)的角色可能改變。例如,一個(gè)特定節(jié)點(diǎn)可在一個(gè)特定數(shù)據(jù)傳輸中充當(dāng)客戶機(jī)210的角色,而在另一個(gè)會話中充當(dāng)服務(wù)對等體220的角色。此外,特定節(jié)點(diǎn)能夠同時(shí)充當(dāng)客戶機(jī)節(jié)點(diǎn)210和服務(wù)器200或服務(wù)對等體220兩者的角色以同時(shí)發(fā)送一個(gè)或多個(gè)數(shù)據(jù)文件,或這些文件的一部分,并從一個(gè)或多個(gè)其他服務(wù)對等體接收其他數(shù)據(jù)。在數(shù)據(jù)傳輸期間,客戶機(jī)200首先定位保持所需數(shù)據(jù)中的某一些或全部的多個(gè)鄰近的對等體220,并且然后從(可能包括服務(wù)器200的)多個(gè)對等體接收數(shù)據(jù)。結(jié)果,每個(gè)服務(wù)對等體220通過服務(wù)客戶機(jī)210的一部分下載請求來減輕總上傳負(fù)擔(dān)而協(xié)助服務(wù)器200。結(jié)果,由于當(dāng)有許多服務(wù)對等體220協(xié)助服務(wù)器200時(shí)有相當(dāng)高的服務(wù)帶寬可用,所以特別是在存在許多客戶機(jī)的情況下,客戶機(jī)210經(jīng)常能夠接收好得多的數(shù)據(jù)質(zhì)量。現(xiàn)在已討論了示例性操作環(huán)境,本描述一節(jié)的其余部分將致力于描述實(shí)現(xiàn)自適應(yīng)編碼存儲系統(tǒng)和過程的程序模塊。2.0可靠、高效的對等存儲自適應(yīng)編碼存儲系統(tǒng)提供自適應(yīng)地確定是否使用ERC編碼并且利用將用于給定文件大小的ERC編碼的最優(yōu)片段數(shù)以得到最優(yōu)可靠性和效率的自適應(yīng)擦除彈性編碼(ERC)方案。用于文件的ERC編碼的片段數(shù)將出于本討論的目的被稱為"ERC片段數(shù)"。以下各段提供對對等(P2P)存儲效率和可靠性以及在P2P網(wǎng)絡(luò)中對ERC的使用的討論,以及對所使用的ERC片段數(shù)的討論。然后討論自適應(yīng)編碼存儲系統(tǒng)和過程的各實(shí)施例。2.1P2P存儲的可靠性數(shù)據(jù)冗余為具有不可靠部分的系統(tǒng)帶來可靠性的特定解決方案是使用冗余。如果網(wǎng)絡(luò)上的每個(gè)單獨(dú)的對等體具有可靠性p,則要實(shí)現(xiàn)期望的可靠性pO,一個(gè)對等體可簡單地將信息復(fù)制到n個(gè)對等體-<formula>formulaseeoriginaldocumentpage14</formula>其中n是保存信息的對等體的數(shù)量。在檢索時(shí)間,客戶機(jī)可挨個(gè)聯(lián)系信息存儲對等體。只要信息存儲對等體中的一個(gè)上線,就能夠可靠地檢索信息。盡管實(shí)現(xiàn)了可靠性,但是簡單的復(fù)制策略并不是高效的。圖3繪出了實(shí)現(xiàn)"六個(gè)9"可靠性所需的信息存儲對等體的數(shù)量的曲線。對于50%的對等體可靠性,一個(gè)對等體需要將信息復(fù)制并存儲到20個(gè)對等體。這導(dǎo)致需要20倍的帶寬和存儲空間來分發(fā)和存儲這些信息。顯然,犧牲了效率以交換信息可靠性。2.2P2P的擦除彈性編碼為了在仍維持相同的可靠性的同時(shí)提高效率,ERC可以是有用的工具。ERC將原始文件分成k個(gè)原始片段(xi),i-0,…,k-l,每個(gè)片段都是Galois域GF(q)上的一個(gè)向量,其中q是該域的階數(shù)。例如正在編碼64KB長的文件,如果使用q二216且k=16,則每個(gè)片段將會是4KB,且將由2K的字組成,且每個(gè)字都是GF(216)的一個(gè)元素。ERC然后從原始片段生成編碼的片段。經(jīng)ERC編碼的片段是由以下運(yùn)算形成的cy=G,C[;x0&…,]',(2)其中cj是編碼的片段,Gi是k維生成向量,并且等式(2)是全部都在GF(q)上的矩陣乘法。在解碼時(shí)間,對等體收集m個(gè)編碼的片段,其中m是等于或略大于k的數(shù)字并且嘗試解碼k個(gè)原始片段。這等價(jià)于求解等式<formula>formulaseeoriginaldocumentpage15</formula>(3)如果由生成向量形成的矩陣具有滿秩k,則可恢復(fù)原始消息。有許多可用的ERC。特別感興趣的一種是Reed-Solomon(RS)碼。RS碼使用結(jié)構(gòu)化的生成向量,并且是最大可分距離(MDS)。結(jié)果,任何k個(gè)不同的編碼的片段將能夠解碼原始片段。RS碼的另一個(gè)優(yōu)點(diǎn)是可通過生成向量的索引i來容易地標(biāo)識和管理編碼的片段,因此便于檢測重復(fù)的RS碼。在以下ERC的討論中,假設(shè)使用RS碼。然而,該自適應(yīng)編碼存儲系統(tǒng)可用任何數(shù)量的傳統(tǒng)ERC來實(shí)現(xiàn)。2.3ERC:片段數(shù)量通過在P2P存儲中使用ERC,數(shù)據(jù)文件被分發(fā)給更多的對等體,但是每個(gè)對等體只需要存儲是原始文件的1/k大小的一個(gè)編碼的片段,導(dǎo)致總體減少了實(shí)現(xiàn)相同等級的可靠性所需的帶寬和存儲空間,并因此提高了效率。令nl為需要向其分發(fā)編碼的片段以實(shí)現(xiàn)某一期望的可靠性等級的對等體數(shù)量。因?yàn)镽S碼是MDS碼,所以保持k個(gè)不同的編碼的片段的k個(gè)對等體將足以恢復(fù)原始文件。恰好有m個(gè)對等體可用的概率可用過二項(xiàng)式分布來計(jì)算-重復(fù)率r是良好的效率指示符,因?yàn)槲募膔個(gè)副本需要被分發(fā)和存儲到P2P云中。圖4示出了對于不同ERC片段數(shù)k實(shí)現(xiàn)"六個(gè)9"可靠性所期望的重復(fù)率。可觀察到對ERC的使用極大地降低了所需的重復(fù)率。比較非ERC(k=l)和ERC片段數(shù)k=256,對于10。/。的對等體可靠性所需的重復(fù)率從r=132減少到r=13.1,對于50%的對等體可靠性所需的重復(fù)率從產(chǎn)20減少到1"=2.5,而對于99%的對等體可靠性所需的重復(fù)率從減少到r=1.05。ERC可提高效率而不會犧牲可靠性。還可觀察到更大的ERC片段數(shù)進(jìn)一步降低了重復(fù)率。對于50%的對等體可靠性,從]^=8到16、32、64、128和256導(dǎo)致重復(fù)率從產(chǎn)5.75減少到4.375、3.53、3.02、2.68和2.48。相應(yīng)的效率提高分別是24%、19%、15%、11%和8%。這似乎建議應(yīng)當(dāng)使用大的ERC片段數(shù)來得到更到的效率。因此可如下從p、p0和k計(jì)算nl:重復(fù)率r被定義為:然而,更大的ERC片段數(shù)意味著需要更多的對等體來存儲和檢索編碼的片段。如圖5所示,繪出了需要保持編碼的片段以實(shí)現(xiàn)"六個(gè)9"的可靠性的對等體數(shù)量的曲線。再次對于50%對等體可靠性,從1^=8到16、32、64、128和256將信息存儲對等體的數(shù)量從nl=46增加到70、113、193、343和630。每次k的翻倍導(dǎo)致存儲信息所需的對等體多出52。/。、61%、71%、78%、84%。k的翻倍也需要在信息檢索期間將聯(lián)系的對等體數(shù)量至少翻倍。在大多數(shù)實(shí)際的P2P網(wǎng)絡(luò)中,在對等體之間建立連接需要不平凡數(shù)量的開銷。開銷的一部分歸結(jié)于檢索正確的對等體身份并找到正確的路由路徑(例如,通過分布式散列表(DHT))。開銷的另一部分是由于在對等體之一或兩者位于NAT之后的情況下調(diào)用某些網(wǎng)絡(luò)地址翻譯(NAT)算法的需求,例如,STUN(經(jīng)NAT的簡單UDP穿越)。假設(shè)在對等體之間建立連接的平均開銷是ovw/ze^/(在本示例中設(shè)置成16KB),則可計(jì)算存儲s大小的文件所需的總網(wǎng)絡(luò)帶寬為Wore—6tmt/w/淑=s*/-+"i*ow/zeat/(7)對于等式(7),可以意識到更大的ERC片段數(shù)并不始終導(dǎo)致最佳的效率。相反,對于小的文件,應(yīng)當(dāng)使用小ERC片段數(shù)或甚至非ERC。針對不同文件大小和ERC片段數(shù)計(jì)算了等式(7)中所需的總帶寬,并繪出了圖6所示的曲線。在不同的ERC片段數(shù)之間的邊界是適于特定ERC片段數(shù)的最優(yōu)文件大小范圍。例如,圖6的底部曲線示出了在其下應(yīng)當(dāng)使用非ERC,而在其上應(yīng)當(dāng)使用片段數(shù)k=2的ERC的文件大小邊界。6,6有趣的觀察結(jié)果是文件大小邊界相對地對對等體可用性并不敏感,這極大簡化了最優(yōu)ERC片段參數(shù)的選擇。一般而言,對于比約IOKB小的文件,不應(yīng)使用ERC。對于片段數(shù)k二2、4、6、8、16、32、128和256的ERC,最合適的文件大小范圍分別約為10-33K衛(wèi)、33-100KB、100-310KB、310-950KB、950KB-2.9MB、2.9MB-8.9MB、8.9-26MB、>26MB。2.4自適應(yīng)ERC模式自適應(yīng)編碼存儲系統(tǒng)和方法自適應(yīng)地選擇合適的ERC片段數(shù)以可靠地在P2P網(wǎng)絡(luò)中高效地存儲內(nèi)容。通過使用圖6中建立的文件邊界曲線,該系統(tǒng)的一個(gè)實(shí)施例對于不同的文件大小選擇使用非ERC,以及片段數(shù)1^=2、4、6、8、16、32、64、128、256的ERC。圖7和圖8示出了自適應(yīng)ERC方法與固定參數(shù)的ERC的比較,以及網(wǎng)絡(luò)帶寬使用中的區(qū)別,其中對等體可靠性分別為50%和99%。相比于使用1^1(非ERC)、8、32和256的固定的ERC片段數(shù),對于50%的對等體可靠性,自適應(yīng)ERC方法可以將效率平均提高6P/。、26%、25%和50%,而對于99%的對等體可靠性,平均提高50%、18%、29%和57%。效率的提高是顯著的。最一般而言,圖9示出了自適應(yīng)編碼存儲過程的一個(gè)實(shí)施例。如過程動作902所示,自適應(yīng)編碼存儲系統(tǒng)計(jì)算對于不同片段數(shù)的最優(yōu)文件大小邊界。輸入將要編碼的給定文件大小的文件(過程動作卯4)。如過程動作906所示,做出關(guān)于輸入文件大小是否對應(yīng)于非擦除編碼(k=l)的檢查。如果輸入文件大小不與ERC相對應(yīng),則不使用ERC來編碼該文件(過程動作908)。如果該文件大小對應(yīng)于ERC文件大小范圍,則使用ERC編碼和對應(yīng)于輸入文件的文件大小的片段數(shù)來編碼該文件,該片段數(shù)是對于該文件大小的最優(yōu)片段數(shù)(過程動作910)。此處所描述的自適應(yīng)ERC過程的主要應(yīng)用是P2P備份和還原。對等體可將文件備份到網(wǎng)絡(luò)中的其他對等體并然后在文件丟失的情況下(例如,文件在計(jì)算機(jī)崩潰中丟失)通過從網(wǎng)絡(luò)中的對等體檢索文件來還原這些文件。一般而言,圖10示出了顯示在P2P網(wǎng)絡(luò)中如何利用自適應(yīng)編碼存儲技術(shù)的示例性操作流程圖。應(yīng)當(dāng)注意,圖10中由斷開的線或虛線所表示的任何框和框之間的互連表示此處所描述的自適應(yīng)編碼存儲系統(tǒng)的替換實(shí)施例,并且以下描述的這些替換實(shí)施例中的任一個(gè)或全部可以結(jié)合貫穿本文所描述的其它替換實(shí)施例來使用。具體地,如圖10所示,在數(shù)據(jù)傳輸操作之前,諸如當(dāng)期望將數(shù)據(jù)備份到網(wǎng)絡(luò)中的對等體時(shí),服務(wù)器200或?qū)Φ润w220編碼1000將要傳輸?shù)狡渌麑Φ润w以便存儲的數(shù)據(jù)。自適應(yīng)編碼存儲系統(tǒng)能夠用多種傳統(tǒng)編解碼器中的任一個(gè)來運(yùn)作,比如,MPEG1/2/4、WMA、WMV等等。此外,在編碼過程1000期間,服務(wù)器200或?qū)Φ润w220還生成數(shù)據(jù)頭,以及包含數(shù)據(jù)結(jié)構(gòu)的同伴文件(companionfile)。如上所述,在一個(gè)實(shí)施例中,一旦編碼1000了數(shù)據(jù),該編碼的數(shù)據(jù)分組就被拆分1005成多個(gè)固定大小的數(shù)據(jù)單元。此外,如同編碼的數(shù)據(jù)一樣,數(shù)據(jù)頭和數(shù)據(jù)結(jié)構(gòu)也被拆分1005成多個(gè)與用來拆分編碼的數(shù)據(jù)分組相同的固定大小的數(shù)據(jù)單元。將該信息拆分1005成固定長度的數(shù)據(jù)單元允i午對等體在數(shù)據(jù)傳輸操作之前預(yù)分配存儲器塊,由此避免在數(shù)據(jù)傳輸過程期間的計(jì)算上昂貴的存儲器分配運(yùn)算。此外,對較小的數(shù)據(jù)單元的使用允許儲存數(shù)據(jù)的客戶機(jī)或?qū)Φ润w對由每個(gè)對等體消耗的確切的帶寬數(shù)量進(jìn)行更精細(xì)的控制以在數(shù)據(jù)傳輸操作期間滿足客戶機(jī)數(shù)據(jù)單元請求。除了將編碼的數(shù)據(jù)、數(shù)據(jù)頭、以及數(shù)據(jù)結(jié)構(gòu)拆分1005成更小的數(shù)據(jù)單元之外,如果利用擦除彈性編碼,則還使用一額外的編碼層以便在其中服務(wù)對等體固有地不可靠的典型P2P環(huán)境中提供增加的冗余。具體地,如上所述,在一個(gè)實(shí)施例中,如果確定擦除彈性編碼適于數(shù)據(jù)文件,則數(shù)據(jù)單元進(jìn)一步被分成多個(gè)數(shù)據(jù)塊并且使用擦除彈性編碼過程1010來編碼文件。對這一編碼1010的使用保證一個(gè)或多個(gè)對等體具有重構(gòu)特定數(shù)據(jù)單元所必需的數(shù)據(jù)塊,同時(shí)簡化了客戶機(jī)標(biāo)識哪些對等體包含必要數(shù)據(jù)的需求。此外,在一個(gè)實(shí)施例中,每個(gè)服務(wù)對等體220所使用的擦除彈性編碼密鑰由服務(wù)器200自動地分配給每個(gè)對等體。然而,在另一個(gè)實(shí)施例中,每個(gè)服務(wù)對等體220簡單地隨機(jī)選擇擦除彈性編碼。這些密鑰然后在每個(gè)對等體220最初由客戶機(jī)210聯(lián)系時(shí)由該客戶機(jī)來檢索。一旦最初已編碼1000了數(shù)據(jù)文件,拆分1005成數(shù)據(jù)單元,并且可能進(jìn)一步進(jìn)行了擦除編碼1010,則所得數(shù)據(jù)單元或數(shù)據(jù)塊然后就被分發(fā)1015到各對等體220。該分發(fā)1015在將編碼的數(shù)據(jù)塊或分組簡單地全部或部分提供給其中該數(shù)據(jù)塊或分組被高速緩存或存儲以備將來當(dāng)希望檢索該數(shù)據(jù)的客戶機(jī)調(diào)用時(shí)進(jìn)行數(shù)據(jù)傳輸?shù)亩鄠€(gè)對等體的意義上可以是蓄意的。一旦數(shù)據(jù)已被分發(fā)1015到服務(wù)對等體220,客戶機(jī)210然后在其希望從存儲中檢索該數(shù)據(jù)的情況下已準(zhǔn)備好開始對那些對等體的數(shù)據(jù)請求。此外,如上所述,服務(wù)器200也可出于將數(shù)據(jù)傳輸?shù)娇蛻魴C(jī)210的目的充當(dāng)對等體220。此時(shí),客戶機(jī)210通過首先檢索可用的服務(wù)對等體220的列表來開始數(shù)據(jù)傳輸會話。該列表是直接從服務(wù)器200、從對等體220中的一個(gè)、或通過使用用于標(biāo)識潛在服務(wù)對等體的傳統(tǒng)的分布式散列表(DHT)方法來檢索的。一旦客戶機(jī)1010已檢索了對等體列表,該客戶機(jī)然后就連接到每個(gè)服務(wù)對等體220并且從每個(gè)對等體檢索1025可用文件的列表。一旦客戶機(jī)210已檢索了每個(gè)對等體220的可用文件列表,該客戶機(jī)然后就通過經(jīng)由客戶機(jī)和一個(gè)或多個(gè)對等體之間的網(wǎng)絡(luò)連接向這些對等體請求對應(yīng)于該信息的數(shù)據(jù)單元來檢索1035將從這一個(gè)或多個(gè)對等體傳輸?shù)臄?shù)據(jù)的數(shù)據(jù)頭和數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)頭一般包含描述數(shù)據(jù)的全局信息,例如,數(shù)據(jù)中的通道數(shù)量、每個(gè)通道的屬性和特性(音頻采樣速率,視頻分辨率/幀速率)、所使用的編解碼器、媒體的作者/版權(quán)所有者等等。結(jié)果,在數(shù)據(jù)傳輸會話開始時(shí)對數(shù)據(jù)頭的檢索允許客戶機(jī)220設(shè)置或初始化1040必要的工具以在數(shù)據(jù)傳輸會話期間接收到隨后接收到的分組之前解碼1065這些分組。此外,在檢索1035了特定數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)之后,客戶機(jī)分析該數(shù)據(jù)結(jié)構(gòu)并計(jì)算在數(shù)據(jù)傳輸過程期間將需要被請求的已傳輸數(shù)據(jù)的數(shù)據(jù)單元的數(shù)據(jù)單元ID1045??蛻魴C(jī)210然后向?qū)Φ润w220中的一個(gè)或多個(gè)挨個(gè)請求那些數(shù)據(jù)單元1050。最后,一旦已經(jīng)根據(jù)客戶機(jī)210的請求1050檢索了構(gòu)成特定數(shù)據(jù)分組的所有數(shù)據(jù)單元,就將那些數(shù)據(jù)分組重新裝配1055成原始數(shù)據(jù)分組。然后解碼1060重新裝配的數(shù)據(jù)分組并且可在客戶機(jī)210上還原1065。3.0P2P存儲政策和設(shè)計(jì)策略除了基于將在P2P網(wǎng)絡(luò)中存儲的文件大小來調(diào)整ERC片段數(shù)之外,還可提高效率。此處所描述的自適應(yīng)編碼存儲系統(tǒng)的各實(shí)施例被設(shè)計(jì)成通過利用如下所述的某些策略來提高存儲效率??山Y(jié)合自適應(yīng)編碼存儲系統(tǒng)或在任何P2P網(wǎng)絡(luò)中利用這些策略。3.1P2P存儲成本在本節(jié)中,將在P2P網(wǎng)絡(luò)中存儲文件與直接在"六個(gè)9"可靠服務(wù)器中存儲文件相比較??捎^察到,P2P解決方案減少了服務(wù)器帶寬和成本,但要求對等體花費(fèi)更多的帶寬以將文件分發(fā)到P2P存儲中。對網(wǎng)絡(luò)帶寬的總體使用在P2P解決方案中增加了??蛻魴C(jī)上傳帶寬的增加可被認(rèn)為是P2P存儲系統(tǒng)的成本。對于不同對等體可靠性和文件大小的成本以表格形式示于表l中。表lP2P中增加的帶寬使用的成本。<table>tableseeoriginaldocumentpage21</column></row><table>可觀察到,如果對等體可靠性很高且文件大小很大,則使用P2P存儲的成本就很小。例如,將100MB的文件存儲到具有99%可靠性的對等體僅導(dǎo)致9%的成本。然而,當(dāng)對等體可靠性很低且文件大小很小時(shí),該成本可能是相當(dāng)大的。3.2P2P存儲政策從表1中,可以導(dǎo)出以下使用P2P存儲云的政策a)應(yīng)當(dāng)使用不可靠的對等體來存儲大文件,而使用可靠的對等體來存儲小文件。如果將大文件分配給不可靠的對等體,而將小文件分配給可靠的對等體,則對于P2P系統(tǒng)的成本將更少。b)應(yīng)當(dāng)使用不可靠的對等體來存儲靜態(tài)文件,而使用可靠的對等體來存儲動態(tài)文件。將那些不改變的文件稱為靜態(tài)的,而將那些一直改變的文件稱為動態(tài)的。多個(gè)小靜態(tài)文件可被捆綁成一個(gè)大靜態(tài)文件并且存儲在P2P存儲云中。該同一策略對于動態(tài)文件并不有效,因?yàn)閱蝹€(gè)文件的改變需要更新整個(gè)組合的文件。該政策的推論是如果使用P2P網(wǎng)絡(luò)來存儲應(yīng)用程序的狀態(tài)、對等體狀態(tài)信息等等,則應(yīng)當(dāng)將信息轉(zhuǎn)向網(wǎng)絡(luò)中最可靠的對等體。如果限制包含應(yīng)用程序狀態(tài)的文件只被放置在高可靠性對等體中(本質(zhì)上,高可靠性對等體將形成構(gòu)成擴(kuò)展的P2P網(wǎng)絡(luò)的核心的子網(wǎng)),則可以極大地降低此重復(fù)率以及更新狀態(tài)文件的成本,并且提高了效率。C)不可靠的對等體應(yīng)被允許分發(fā)較少的文件,而可靠的對等體應(yīng)被允許分發(fā)較多的文件。d)較小的文件應(yīng)被分配較高的分發(fā)成本,而較大的文件應(yīng)被分配較低的分發(fā)成本。政策c)和d)是對于P2P備份和檢索應(yīng)用的,其中對等體可以將內(nèi)容分發(fā)到P2P存儲云中,并且為其他對等體存儲內(nèi)容。平衡的P2P存儲網(wǎng)絡(luò)應(yīng)當(dāng)令每個(gè)對等體平衡其貢獻(xiàn)和收益。在先前的工作中已經(jīng)指出,帶寬是P2P存儲應(yīng)用中主要資源。令對等體的貢獻(xiàn)是其為其他對等體接收并存儲的編碼片段的數(shù)量。令對等體的收益是其分發(fā)到P2P云中的內(nèi)容的數(shù)量??紤]到低可靠性導(dǎo)致更多的冗余數(shù)據(jù)存儲,應(yīng)當(dāng)懲罰不可靠的對等體以使其將被允許分發(fā)較少的文件,并且獎(jiǎng)勵(lì)可靠的對等體以使其將被允許分發(fā)較多的文件。這一政策在P2P經(jīng)濟(jì)中具有積極的收益,因?yàn)樗膭?lì)用戶保持P2P應(yīng)用程序在線,因此提高了P2P網(wǎng)絡(luò)的總體可靠性并降低了所需的重復(fù)率。還可通過將高分發(fā)成本分配給小文件,從而要求對等體成比例地貢獻(xiàn)更多,來懲罰小文件的分發(fā);以及通過將低分發(fā)成本分配給大文件,從而令對等體成比例地貢獻(xiàn)更少,來獎(jiǎng)勵(lì)大文件的分發(fā)。作為推論,P2P備份應(yīng)用程序應(yīng)被設(shè)計(jì)為最小化備份頻率??梢钥紤]將多個(gè)改變捆綁成一大型文件,并且僅一次,例如每天午夜將該文件更新到P2P存儲云中,而不是在其改變之后立即更新該文件。圖11示出了圍繞上述政策設(shè)計(jì)的自適應(yīng)編碼存儲系統(tǒng)和方法的一個(gè)實(shí)施例。如過程動作1102所示,確定在分布式或P2P網(wǎng)絡(luò)中的每個(gè)對等體的可靠性。輸入將要分發(fā)或存儲的文件(過程動作1104)。評估該文件的大小(過程動作1106),并且基于等式(7)中的期望存儲帶寬將分發(fā)成本分配給該文件(過程動作1108)。如果該文件是大文件,則可分配到較高的分發(fā)成本。如果該文件是小文件,則可將較低的分發(fā)成本分配給該文件。基于文件的大小,自適應(yīng)編碼存儲系統(tǒng)將選擇具有適當(dāng)可靠性的對等體來存儲該文件(過程動作1110)。即,使用其可靠性低于給定閾值的對等體來存儲和分發(fā)大文件,而使用其可靠性高于給定閾值的對等體來存儲和分發(fā)小文件。圖12示出了圍繞上述政策設(shè)計(jì)的自適應(yīng)編碼存儲系統(tǒng)和方法的另一個(gè)實(shí)施例。如過程動作1202所示,確定在分布式或P2P網(wǎng)絡(luò)中的每個(gè)對等體的可靠性。輸入將要分發(fā)或存儲的文件(過程動作1204)。將該文件與先前存儲的同一文件相比較以確定該文件是靜態(tài)的還是動態(tài)的(過程動作1206)。在第一次存入該文件時(shí),假設(shè)該文件是動態(tài)的。如果觀察到對該文件的頻繁改變,則該文件仍被指定為動態(tài)的。如果觀察到該文件長時(shí)間沒有改變,則該文件被指定為靜態(tài)的。將動態(tài)文件存儲在高可靠性對等體中(過程動作1210)。(因此,首先,文件首先將被存儲在服務(wù)器或高可靠性對等體中)。一旦觀察到文件沒有改變,并且變?yōu)殪o態(tài)的,則這些靜態(tài)文件就將被重新分發(fā),并存儲在低可靠性對等體中。應(yīng)當(dāng)注意,可以單獨(dú)或組合地適用圖11和12所示的各實(shí)施例以提高分布式或?qū)Φ染W(wǎng)絡(luò)的總體效率和可靠性。3.3具有服務(wù)器組件支持的P2P存儲。如果使用服務(wù)器組件作為對P2P網(wǎng)絡(luò)的補(bǔ)充,則可對于大的和靜態(tài)文件使用P2P存儲,而對于小的、動態(tài)文件使用服務(wù)器。因?yàn)橄拇蠖鄶?shù)服務(wù)器資源的是大文件,所以P2P存儲是對服務(wù)器的很好的補(bǔ)充。如圖13所示,自適應(yīng)編碼存儲系統(tǒng)和過程的一個(gè)實(shí)施例利用了具有服務(wù)器支持的P2P備份。如圖13所示,將網(wǎng)絡(luò)中的動態(tài)文件備份到服務(wù)器(過程動作1302)。客戶機(jī)和/或服務(wù)器然后可以自動地檢測那些不再改變并正轉(zhuǎn)變?yōu)殪o態(tài)文件的動態(tài)文件(過程動作1304、1306)。如過程動作1308所示,這些檢測到的靜態(tài)文件然后可一起被捆綁成一大文件,并用ERC分發(fā)到P2P存儲云中(過程動作1310)。這有效地增加了存儲在P2P云中的文件的大小。結(jié)合片段數(shù)的ERC,這可以提高效率??梢詥为?dú)或與圖11和12所示的各實(shí)施例組合地使用圖13所示的實(shí)施例以提高分布式或?qū)Φ染W(wǎng)絡(luò)的總體效率和可靠性。還應(yīng)注意,該實(shí)施例可在使用或不使用擦除彈性編碼的兩種情況下使用。應(yīng)當(dāng)注意,可以按所需的任何組合使用上述替換實(shí)施例的任一個(gè)或全部以形成另外的混合實(shí)施例。盡管用對結(jié)構(gòu)特征和/或方法動作專用的語言描述了本主題,但可以理解,所附權(quán)利要求書中定義的主題不必限于上述具體特征或動作。相反,上述具體特征和動作是作為實(shí)現(xiàn)權(quán)利要求的示例形式公開的。權(quán)利要求1.一種用于編碼文件以便存儲在分布式網(wǎng)絡(luò)中的計(jì)算機(jī)實(shí)現(xiàn)的過程,包括以下過程動作計(jì)算對應(yīng)于不同擦除彈性編碼(ERC)片段數(shù)的最優(yōu)文件大小范圍,其中每個(gè)片段數(shù)都是對于相應(yīng)的文件大小范圍的最優(yōu)片段數(shù)(902);輸入給定文件大小的文件(904);如果所述文件大小小于對應(yīng)于最小ERC片段數(shù)2的文件大小范圍,則不使用擦除彈性編碼來編碼所述文件(906、908);如果所述輸入文件的文件大小對應(yīng)于一文件大小范圍,則使用擦除彈性編碼和對應(yīng)于所述輸入文件的文件大小范圍的最優(yōu)片段數(shù)來編碼所述文件。2.如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的過程,其特征在于,還包括將所述編碼的文件發(fā)送到分布式網(wǎng)絡(luò)中的一個(gè)或多個(gè)對等體的過程動作。3.如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的過程,其特征在于,還包括根據(jù)對等體可靠性和期望的文件內(nèi)容可靠性來計(jì)算將向其存儲所述編碼的文件的對等體的數(shù)量。4.如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的過程,其特征在于,計(jì)算對應(yīng)于不同擦除彈性編碼(ERC)片段數(shù)的最優(yōu)文件大小范圍包括以下過程動作按照適于特定ERC片段數(shù)的最優(yōu)文件大小確定不同片段數(shù)之間的邊界。5.如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的過程,其特征在于,還包括以下過程動作獲得等于或大于所述文件被拆分成以進(jìn)行編碼的片段數(shù)的所述文件的一組編碼的文件片段;以及如果所述文件是擦除彈性編碼的,則用擦除彈性解碼來解碼所述編碼的文件片段以獲得所述編碼的文件的解碼版本;以及如果所述文件不是擦除彈性編碼的,則不用擦除彈性解碼來解碼所述編碼的片段以獲得所述編碼的文件的解碼版本。6.如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的過程,其特征在于,在編碼所述文件時(shí)所使用的擦除彈性編碼是ReedSolomon編碼。7.如權(quán)利要求6所述的計(jì)算機(jī)實(shí)現(xiàn)的過程,其特征在于-如果所述文件大小小于約IOKB,則不使用擦除彈性編碼;如果所述文件大小約是10KB到33KB,則所述最優(yōu)片段數(shù)是2;如果所述文件大小約是33KB到100KB,則所述最優(yōu)片段數(shù)是4;如果所述文件大小約是100KB到310KB,則所述最優(yōu)片段數(shù)是8;如果所述文件大小約是310KB到950KB,則所述最優(yōu)片段數(shù)是16;如果所述文件大小約是950KB到2.9MB,則所述最優(yōu)片段數(shù)是32;如果所述文件大小約是2.9MB到8.9MB,則所述最優(yōu)片段數(shù)是64;如果所述文件大小約是8.9MB到26MB,則所述最優(yōu)片段數(shù)是128;以及如果所述文件大小大于約26MB,則所述最優(yōu)片段數(shù)是256。8.—種具有用于執(zhí)行如權(quán)利要求1所述的過程的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)。9.一種用于提高對等網(wǎng)絡(luò)的存儲可靠性和效率的系統(tǒng),包括-通用計(jì)算設(shè)備;包括可由所述通用計(jì)算設(shè)備執(zhí)行的程序模塊的計(jì)算機(jī)程序,其中所述計(jì)算設(shè)備可由所述計(jì)算機(jī)程序的程序模塊來引導(dǎo)以便確定用于用擦除彈性編碼來編碼給定大小的文件的最優(yōu)片段數(shù)(1010);如果所述用于用擦除彈性編碼來編碼文件的最優(yōu)片段數(shù)是1,則不用擦除彈性編碼來編碼所述文件(1010);以及如果所述最優(yōu)片段數(shù)大于1,則通過將所述文件分成最優(yōu)數(shù)量的片段并用擦除彈性編碼編碼所述文件(1010)來編碼所述文件。10.如權(quán)利要求9所述的系統(tǒng),其特征在于,還包括根據(jù)對等體可靠性和期望的文件內(nèi)容可靠性來計(jì)算將向其存儲所述編碼的文件的對等體的數(shù)量的程序模塊。11.如權(quán)利要求10所述的系統(tǒng),其特征在于,還包括將用擦除彈性編碼編碼的文件分發(fā)到網(wǎng)絡(luò)上的一個(gè)或多個(gè)對等體的程序模塊。12.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述分發(fā)文件的程序模塊包括用于執(zhí)行以下動作的子模塊確定所述分布式網(wǎng)絡(luò)中的每個(gè)對等體的可靠性;確定所述文件的大小;以及使用按照文件大小所確定的具有適當(dāng)可靠性的一個(gè)或多個(gè)對等體來分發(fā)所述文件。13.如權(quán)利要求12所述的系統(tǒng),其特征在于,所述分發(fā)文件的程序模塊包括用于執(zhí)行以下動作的子模塊如果所述文件是大文件,則使用其可靠性低于給定闊值的對等體來分發(fā)該大文件;以及如果所述文件不是大文件,則使用其可靠性高于給定閥值的對等體來分發(fā)該文件。14.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述分發(fā)文件的程序模塊包括用于執(zhí)行以下動作的子模塊確定所述分布式網(wǎng)絡(luò)中的每個(gè)對等體的可靠性;確定所述文件是否是靜態(tài)的;如果所述文件是靜態(tài)的,則使用其可靠性低于給定閥值的對等體來分發(fā)該文件;以及如果所述文件不是靜態(tài)的,則使用其可靠性高于給定閥值的對等體來分發(fā)該文件。15.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述分發(fā)文件的程序模塊包括用于執(zhí)行以下動作的子模塊確定所述分布式網(wǎng)絡(luò)中的每個(gè)對等體的可靠性;監(jiān)視所述文件的改變;首先將所述文件分發(fā)到較可靠的對等體;如果所述文件被觀察到?jīng)]有改變,則將所述文件重新分發(fā)到較不可靠的對等體。16.如權(quán)利要求9所述的系統(tǒng),其特征在于,還包括使用服務(wù)器來提高所述分布式網(wǎng)絡(luò)的效率的程序模塊,所述程序模塊還包括用于執(zhí)行以下動作的子模塊將所述分布式網(wǎng)絡(luò)中的所有動態(tài)文件備份到所述服務(wù)器;周期性地令所述分布式網(wǎng)絡(luò)中的對等體和服務(wù)器檢査備份到所述服務(wù)器的動態(tài)文件是否已經(jīng)改變;如果所述動態(tài)文件還沒有改變,則將這些文件指定為靜態(tài)的并且將它們一起捆綁成一大文件;以及用擦除彈性編碼將所述大文件分發(fā)到所述分布式網(wǎng)絡(luò)。17.如權(quán)利要求9所述的系統(tǒng),其特征在于,所述確定用于用擦除彈性編碼來編碼給定大小的文件的最優(yōu)片段數(shù)的程序模塊包括用于執(zhí)行以下動作的子模塊確定對應(yīng)于每個(gè)可能的擦除彈性編碼片段數(shù)的最優(yōu)文件大小范圍,其中每個(gè)片段數(shù)是對應(yīng)于相應(yīng)范圍的最優(yōu)片段數(shù);確定輸入文件的大小落入哪一文件大小范圍;以及使用對應(yīng)于所述輸入文件的大小所落入的最優(yōu)文件大小范圍的片段數(shù)作為所述最優(yōu)片段數(shù)。18.—種用于解碼存儲在分布式網(wǎng)絡(luò)中的編碼的文件的計(jì)算機(jī)實(shí)現(xiàn)的過程,包括以下過程動作檢索等于或大于用于編碼所述文件的片段的數(shù)量的該編碼的文件的一組片段,其中所述文件是用對應(yīng)于給定文件大小的最優(yōu)片段數(shù)來擦除彈性編碼的;以及用擦除彈性解碼來解碼所述編碼的片段以獲得所述編碼的文件的解碼版本。19.如權(quán)利要求18所述的計(jì)算機(jī)實(shí)現(xiàn)的過程,其特征在于,所述編碼的片段中的至少某一些是從所述分布式網(wǎng)絡(luò)中的一個(gè)或多個(gè)對等體的存儲介質(zhì)中檢索的。20.如權(quán)利要求18所述的計(jì)算機(jī)實(shí)現(xiàn)的過程,其特征在于,所述編碼的片段中的至少某一些是從所述分布式網(wǎng)絡(luò)上的服務(wù)器的存儲介質(zhì)中檢索的。全文摘要一種使用根據(jù)分發(fā)的文件的大小改變用于編碼的片段的數(shù)量的自適應(yīng)擦除彈性編碼(ERC)的自適應(yīng)編碼存儲系統(tǒng)。自適應(yīng)ERC可極大地提高P2P存儲的效率和可靠性。還可實(shí)現(xiàn)P2P存儲應(yīng)用的多個(gè)過程。在一個(gè)實(shí)施例中,小的、動態(tài)數(shù)據(jù)文件被轉(zhuǎn)向更可靠的對等體或甚至服務(wù)器,而大的及靜態(tài)文件利用不可靠對等體的存儲容量來存儲。同樣地,為了平衡的貢獻(xiàn)和收益,對等體應(yīng)當(dāng)主存與其存儲在P2P網(wǎng)絡(luò)中相同數(shù)量的內(nèi)容。結(jié)果,不可靠的對等體被允許分發(fā)較少的數(shù)據(jù),而更可靠的對等體被允許分發(fā)較多的數(shù)據(jù)。同樣地,較小的文件被分配較高的分發(fā)成本,而較大的文件被分配較低的分發(fā)成本。文檔編號G06F15/16GK101390075SQ200780006331公開日2009年3月18日申請日期2007年2月13日優(yōu)先權(quán)日2006年2月22日發(fā)明者J·李申請人:微軟公司