本非臨時性申請主張2014年5月13日提交的題為“A Method for Data Storage”的美國臨時專利申請No.61/992,286和2014年9月22日提交的題為“A Method for Media Streaming”的美國臨時專利申請No.62/053,255的優(yōu)先權(quán)。通過引用的方式將美國臨時專利申請No.61/992,286和62/053,255的公開內(nèi)容作為整體合并到本文中。
技術(shù)領(lǐng)域
本公開的主題總體上涉及安全數(shù)據(jù)存儲和傳輸,并且更具體地,涉及用于媒體流和其他應(yīng)用的分布式安全數(shù)據(jù)存儲和傳輸。
背景技術(shù):
用于徹底改變信息技術(shù)(IT)基礎(chǔ)架構(gòu)的前景的云計算的未來是基于下述前提:預(yù)先保持在公司自己的數(shù)據(jù)中心或者局域網(wǎng)內(nèi)的硬件和軟件資源能夠通過由第三方在網(wǎng)絡(luò)上托管的云服務(wù)器的網(wǎng)絡(luò)而變得可用,從而減少了公司對擁有并管理他們自己的精心設(shè)計的IT基礎(chǔ)架構(gòu)和數(shù)據(jù)中心的需要。然而,為了說服公司將他們的數(shù)據(jù)存儲和計算需求轉(zhuǎn)移到這種第三方“云”服務(wù)器上,云服務(wù)器需要提供滿足客戶的需要和安全考慮的一定等級的性能、數(shù)據(jù)安全性、吞吐量和使用標(biāo)準。例如,存儲資源仍然是在企業(yè)領(lǐng)域全面采用云計算的瓶頸。當(dāng)前的基于云的存儲資源存在嚴重的性能問題,包括危險的安全漏洞、可用的不確定性以及高昂的費用?;谠频拇鎯蛘叽鎯捶?wù)(StAAS)必須在云中創(chuàng)建虛擬“存儲設(shè)備”,其可以與存在于企業(yè)數(shù)據(jù)中心內(nèi)的內(nèi)部存儲容量相提并論。
目前的基于云的存儲方案大多數(shù)情況下基于傳統(tǒng)的文件存儲(CIFS,NFS)技術(shù),其中,整個文件和文件組存儲在一個物理服務(wù)器位置。這種方法在在互聯(lián)網(wǎng)上存在的典型的通信狀況下未能提供可接受的數(shù)據(jù)傳輸速率。延遲差,并且終端用戶或消費者即使在最佳設(shè)計的云應(yīng)用的情況下仍能感覺到性能墻(performance wall)。另外,傳輸大量數(shù)據(jù)可能花費過多的時間過多,從而使得它不實適用。例如,利用現(xiàn)有技術(shù)通過云傳輸1Tb的數(shù)據(jù)可能需要數(shù)周才能完成。
全部文件存儲在一個位置的云存儲還為對不宜泄漏的公司信息感興趣的黑客提供了誘人的目標(biāo)。在網(wǎng)絡(luò)上活動的一個確定的黑客可以使在企業(yè)數(shù)據(jù)中心的安全過程的設(shè)計中所投入的所有努力都化為烏有。因此,迫切需要增強基于云的存儲系統(tǒng)的安全性。
云存儲方案還很容易受到可能由于企業(yè)客戶和其云存儲服務(wù)器之間的互聯(lián)網(wǎng)通信的中斷所導(dǎo)致的“中斷期”的影響。這些中斷期持續(xù)時間可以不同,并且可以很長,例如,在受到拒絕服務(wù)(DOS)攻擊的情況下。如果企業(yè)在這些中斷期期間被迫中止運行,則該企業(yè)會受到明顯的傷害。
基于在一個服務(wù)器位置存儲全部文件的云存儲方案還在該服務(wù)器位置受到損害時使得災(zāi)難恢復(fù)存在潛在的缺陷。如果在同一個物理服務(wù)器位置還進行了復(fù)制和備份,故障和災(zāi)難恢復(fù)的問題可能給企業(yè)帶來大量數(shù)據(jù)丟失的真正危險。
目前技術(shù)的云存儲方案需要完全復(fù)制和備份的存儲開銷以確保存儲的企業(yè)數(shù)據(jù)的安全性。在目前的典型的云存儲技術(shù)設(shè)置中,這可能需要存儲數(shù)據(jù)中的高達800%的冗余。這種需要的大量數(shù)據(jù)冗余在成本方面增加了巨大開銷,以保持云中的存儲容量。這種冗余的需要不僅增加了成本,還引入了數(shù)據(jù)安全方面的新問題。另外,所有的這些冗余也帶來了其性能的退化,這是因為云服務(wù)器在所有的服務(wù)器數(shù)據(jù)事務(wù)中都不斷地使用了復(fù)制。
由于互聯(lián)網(wǎng)連接已經(jīng)提高了其在處理高數(shù)據(jù)吞吐量的能力,媒體流已經(jīng)成為了一種非常流行的以降低非法復(fù)制的風(fēng)險的方式提供媒體內(nèi)容(例如,視頻和音樂)的方法。云存儲在很多媒體內(nèi)容流方案中都扮演著重要角色。通常,媒體內(nèi)容駐留在公司的網(wǎng)絡(luò)服務(wù)器上。當(dāng)用戶請求時,媒體內(nèi)容以連續(xù)數(shù)據(jù)段的穩(wěn)定流的形式在網(wǎng)絡(luò)上流傳送,客戶端及時接收該連續(xù)數(shù)據(jù)段以顯示媒體文件的下一段,從而導(dǎo)致看起來向用戶無縫地重放音頻和視頻。
目前,媒體流技術(shù)基于以下概念:通過網(wǎng)絡(luò)服務(wù)器以壓縮形式將媒體文件作為分段的數(shù)據(jù)流來傳送,客戶端及時接收所述分段的數(shù)據(jù)流以播放媒體文件的下一個分段,從而提供連續(xù)的重放。在一些情況下,數(shù)據(jù)傳送的速率超過播放數(shù)據(jù)的速率,則緩存額外的數(shù)據(jù)以供將來使用。如果數(shù)據(jù)傳輸速率比數(shù)據(jù)重放速率慢,則當(dāng)客戶端收集播放媒體的下一段所需的數(shù)據(jù)時則停止演示。在以下事實中發(fā)現(xiàn)流媒體技術(shù)的優(yōu)勢:客戶端不需要等待下載整個大媒體文件(例如,完整長度的電影)以及按需下載的本質(zhì)使其適于處理數(shù)字版權(quán)管理(DRM)方案,該數(shù)字版權(quán)管理(DRM)方案使客戶端不能在未經(jīng)授權(quán)的情況下復(fù)制媒體內(nèi)容。
目前的媒體流技術(shù)將整個媒體文件的完整副本存儲在網(wǎng)絡(luò)或者媒體服務(wù)器上,客戶端連接到該網(wǎng)絡(luò)或者媒體服務(wù)器以接收數(shù)據(jù)流。在傳輸過程期間的數(shù)據(jù)丟失可以輕易地中斷傳輸過程并且停止客戶端上的媒體內(nèi)容的重放。為了避免這些問題,現(xiàn)有技術(shù)通常將會將相同的媒體文件放置在世界各地的多個服務(wù)器節(jié)點上和多個數(shù)據(jù)中心上,無論它們是公共的或是私有的,從而用戶可以連接到他們附近的服務(wù)器節(jié)點。盡管這對于確保在由于連接問題而導(dǎo)致的數(shù)據(jù)包丟失的情況下所需的穩(wěn)定的數(shù)據(jù)傳輸率是必要的,但是將同一個文件的多個副本部署在世界各地的多個服務(wù)器上會給流媒體提供者帶來嚴重的負擔(dān)。
本公開的主題涉及減輕和/或克服上文提出的一個或多個問題,并且提供一種更安全的數(shù)據(jù)存儲和傳輸方法,并且更具體地,提供一種用于媒體流和其他應(yīng)用的更安全的數(shù)據(jù)存儲和傳輸方法。
技術(shù)實現(xiàn)要素:
公開了一種安全分布式數(shù)據(jù)存儲的方法和系統(tǒng),該安全分布式數(shù)據(jù)存儲特別適用于流媒體內(nèi)容的需求。
一個特別的數(shù)據(jù)存儲實施例包括:將媒體數(shù)據(jù)文件分為多個離散的碎片,對這些離散的碎片進行糾刪編碼,并將這些碎片分散到多個存儲單元,其中,任何一個存儲單元都不具有重建數(shù)據(jù)文件的足夠的信息。生成映射,該映射示出數(shù)據(jù)文件的每個離散的碎片存儲在哪個存儲單元。特別地,為每個離散的碎片分配唯一的標(biāo)識符,并且所述唯一的標(biāo)識符的映射用于幫助重組媒體文件。
在另一個實施例中,本文公開的數(shù)據(jù)存儲技術(shù)包括:將數(shù)據(jù)文件分為分片,為每個分片分配唯一的標(biāo)識符,創(chuàng)建唯一的標(biāo)識符的映射以幫助重組,將每個分片分為離散的分片片段,對分片片段進行糾刪編碼,將片段分散到多個存儲單元,其中,任何一個存儲單元都不具有重建數(shù)據(jù)文件的足夠的信息,以及生成哪個存儲單元容納哪些片段的映射。
數(shù)據(jù)安全性和丟包緩解的目標(biāo)由公開的糾刪編碼過程來解決。首先,在糾刪編碼過程期間將數(shù)據(jù)編碼為不可識別的碎片,從而提供了高度的安全性。其次,經(jīng)過糾刪編碼的數(shù)據(jù)在數(shù)據(jù)丟失的情況下提供錯誤校正。盡管糾刪編碼增加了數(shù)據(jù)量,但是能夠提供并恢復(fù)小于增加的數(shù)據(jù)大小的數(shù)據(jù)損失。注意,根據(jù)優(yōu)選實施例存儲的處理后的經(jīng)過糾刪編碼的數(shù)據(jù)不包括原始數(shù)據(jù)的任何副本,從而極大提高了安全性。
在一個實施例中,一種存儲流媒體內(nèi)容的方法包括:將數(shù)字媒體內(nèi)容文件分為離散的碎片或段,對離散的碎片進行糾刪編碼并將離散的碎片分散到多個存儲單元,其中,任何一個存儲單元都不具有重建所述媒體內(nèi)容的足夠的信息。在優(yōu)選的實施例中,生成映射,該映射詳細描述每個離散的碎片存儲在哪個存儲單元中。為媒體內(nèi)容的每個離散的片分配唯一的標(biāo)識符,并且唯一的標(biāo)識符的映射用于幫助重組媒體內(nèi)容。例如,客戶端設(shè)備可使用該映射來重建媒體文件,并且該映射允許在客戶端設(shè)備上(在瀏覽器中或者以其他方式)播放所述媒體內(nèi)容。
在另一個實施例中,一種存儲數(shù)據(jù)的方法包括下述步驟:將數(shù)據(jù)文件分為分片,為每個分片分配唯一的標(biāo)識符,創(chuàng)建所述唯一的標(biāo)識符的映射,將所述分片分為離散的碎片或段,對離散的碎片進行糾刪編碼,將所述離散的碎片分散到多個存儲單元,其中,任何一個存儲單元都不具有重建所述數(shù)據(jù)文件的足夠的信息,以及生成映射,該映射示出每個離散的碎片存儲在哪個存儲單元中。利用所述映射在客戶端設(shè)備上執(zhí)行解碼,以允許重放和/或進一步存儲流媒體文件。
附圖說明
通過參考下文對具體實施例的詳細描述,當(dāng)結(jié)合附圖閱讀上述對具體實施例的詳細描述時,將最好地理解前述的總結(jié)、優(yōu)選實施例以及本公開的其他方面,其中:
圖1是三層示例性的存儲系統(tǒng)的示意圖。
圖2是示出根據(jù)示例性的實施例的文件處理的各個階段的示圖。
圖3是概述出根據(jù)示例性的實施例的在文件處理期間采取的各個步驟的圖表。
圖4A是根據(jù)示例性的實施例的文件處理的第一部分的示圖。
圖4B是根據(jù)示例性的實施例的對文件分片執(zhí)行糾刪編碼以產(chǎn)生分片片段的示圖。
圖5是根據(jù)示例性的實施例的將文件上傳到數(shù)據(jù)存儲節(jié)點的過程的詳細示圖。
圖6是根據(jù)示例性的實施例的、在從數(shù)據(jù)存儲器到客戶端的數(shù)據(jù)下載過程期間所采用的各個詳細步驟的圖表。
圖7A是根據(jù)示例性的實施例的、向CSP作出的客戶端下載請求的示圖。
圖7B是根據(jù)示例性的實施例的分片片段的請求的框圖。
圖8是在文件下載過程期間,CSP、FEDP和SNN之間的相互作用的詳細示圖。
圖9是根據(jù)實施例的數(shù)據(jù)垃圾收集過程的示圖。
各個附圖中的相似的參考符號和指示表示相似的元件。
具體實施方式
本文公開的是用于流媒體文件的云存儲技術(shù),其將每個數(shù)據(jù)文件分為文件分片片段,所述文件分片片段存儲在一系列云服務(wù)器上,優(yōu)選地,所述一系列云服務(wù)器分布在不同的地理位置。在實施例中,利用對象存儲技術(shù)將客戶企業(yè)媒體數(shù)據(jù)分解為文件分片片段。在分散到一系列云服務(wù)器之前,所有得到的文件分片片段被加密,并且優(yōu)選地利用糾刪編碼進行錯誤校正。這在云端形成了虛擬的“數(shù)據(jù)設(shè)備”。用于在云端進行數(shù)據(jù)存儲的服務(wù)器可由客戶端選擇,以便優(yōu)化數(shù)據(jù)吞吐量的速度以及數(shù)據(jù)的安全性和可靠性。為了取回原始文件,在客戶端的請求下,經(jīng)過加密并分散的文件分片片段被取回并被重建為原始文件。這種分散方法創(chuàng)建了“虛擬硬盤驅(qū)動器”設(shè)備,其中,媒體文件不存儲在單個物理設(shè)備中,但是在云中的一系列物理設(shè)備之間分散,云中的每個物理設(shè)備只包含文件的加密“片段”。通過實時迅速地重組文件分片片段,實現(xiàn)了對文件的訪問以移動、刪除、讀取或者編輯文件。該方法在數(shù)據(jù)傳輸和訪問、數(shù)據(jù)安全和數(shù)據(jù)可用性方面提供了很多改進。其還可以在存儲技術(shù)領(lǐng)域使用現(xiàn)有的硬件和軟件基礎(chǔ)架構(gòu)并大幅度地降低成本。
盡管數(shù)據(jù)(特別包括流媒體數(shù)據(jù))在云服務(wù)器上的分散存儲是一種特別有用的應(yīng)用,但是同樣的技術(shù)適用于數(shù)據(jù)可以存儲在多個存儲器設(shè)備上的配置,其中,可以通過任何可能的通信技術(shù)(例如,局域網(wǎng)或廣域網(wǎng)的通信技術(shù))來連接所述多個存儲器設(shè)備。公開的技術(shù)的速度和安全性優(yōu)勢可以在信息技術(shù)(IT)數(shù)據(jù)中心的設(shè)備內(nèi)得以保持,其中,最終的存儲設(shè)備是多個物理硬盤或者多個虛擬硬盤。IT用戶可以選擇使用整個公司內(nèi)通過其中實施了本公開的技術(shù)的高速局域網(wǎng)連接的所有可用的存儲設(shè)備。該多個存儲設(shè)備甚至可以分布在網(wǎng)絡(luò)空間中的多個獨立用戶之間,其中,文件存儲在在網(wǎng)絡(luò)中可用的多個物理或者虛擬硬盤上。在每種情況下,系統(tǒng)中的數(shù)據(jù)傳輸速度和數(shù)據(jù)存儲的安全性都得到了極大增強。
所公開的主題的使用包括為了備份或者災(zāi)難恢復(fù)的目的而進行的次級數(shù)據(jù)存儲。所公開的主題還適于初級存儲需要,其中,在無需服務(wù)器側(cè)處理的情況下對文件進行訪問。在某些實施例中,這包括媒體內(nèi)容的存儲,所述媒體內(nèi)容非限制性地包括能夠通過網(wǎng)絡(luò)進行流傳輸?shù)囊曨l和音頻內(nèi)容。
數(shù)據(jù)存儲優(yōu)點
所公開的存儲技術(shù)與現(xiàn)有系統(tǒng)相比具有許多優(yōu)點。這些優(yōu)點如下:
A.數(shù)據(jù)傳輸速率
與現(xiàn)有的云存儲技術(shù)相比,所公開的實施例在典型的互聯(lián)網(wǎng)通信條件下允許數(shù)據(jù)傳輸速度的極大提高。已經(jīng)證明速度高達300mbps,這意味著,例如,利用一些現(xiàn)有系統(tǒng)傳輸1Tb的文件將需要一個月的時間,而利用所公開的實施例的系統(tǒng)10小時即可完成。該速度提高源于幾個原因。
當(dāng)重建文件時,文件的隨附“碎片”并行地從多個服務(wù)器傳送/傳送到多個服務(wù)器,從而極大提高了吞吐量。可以將其比作現(xiàn)今使用的一些流行的下載加速器技術(shù),其也開通多個信道來下載文件碎片,從而極大提高了下載速率??赡茉谥烈粋€云服務(wù)器的一個傳輸連接中發(fā)生的延遲瓶頸不會停止在正常延遲情況下工作的至其他服務(wù)器的更快的傳輸。
由于分布式存儲而導(dǎo)致的數(shù)據(jù)安全性和可靠性的固有提高消除了對通過復(fù)制而進行的數(shù)據(jù)讀取/寫入的持續(xù)鏡像的需要,導(dǎo)致進一步提高了吞吐量的速度。
通常,在云端的一個或多個非常高性能的服務(wù)器上的服務(wù)器側(cè)進行數(shù)據(jù)的最資源密集的處理,針對云服務(wù)器存儲站點和客戶端站點而對這些服務(wù)器優(yōu)選了速度和連接性。
特別的,在某些實施例中,糾刪編碼在服務(wù)器側(cè)執(zhí)行,例如,如本文進一步描述的,在多個數(shù)據(jù)處理服務(wù)器上執(zhí)行。這些服務(wù)器可被選擇為具有高處理性能,這是因為糾刪編碼過程通常是中央處理單元(CPU)密集型任務(wù)。與在可能缺少硬件和軟件基礎(chǔ)架構(gòu)來有效地執(zhí)行糾刪編碼的客戶端側(cè)或者單個服務(wù)器上執(zhí)行糾刪編碼相比,這提高了性能。與現(xiàn)有設(shè)計相比,將這種處理移動到一組優(yōu)化的服務(wù)器降低了對客戶端側(cè)的負載和性能要求。
B.數(shù)據(jù)安全性
與以前的設(shè)計相比,所公開的“虛擬設(shè)備”存儲在數(shù)據(jù)安全性方面有著顯著的改進。通過將每個媒體文件分為多個文件分片片段,并將文件分片片段分散在多個云存儲位置,優(yōu)選地云存儲位置處于在地理上分散的位置,這樣黑客將發(fā)現(xiàn)很難將文件重組成其原始形式。另外,在某些實施例中,對所有文件分片片段都進行了加密,增加了另一層的數(shù)據(jù)安全保護,以挫敗可能的黑客。成功的攻入一個云存儲位置中的黑客也不會具備重組整個媒體文件的能力。這是比以前的設(shè)計在數(shù)據(jù)安全方面的顯著改進。
在某些實施例中,用于處理和存儲文件分片片段的服務(wù)器可以由多個客戶端共享,黑客就沒有辦法通過數(shù)據(jù)分片來識別其可能屬于哪個客戶端。這使黑客更難以危及使用這種技術(shù)存儲的數(shù)據(jù)的安全性。文件分片片段可以隨機地分散在不同云存儲服務(wù)器,進一步增強了數(shù)據(jù)存儲的安全性。在某些實施例中,客戶端甚至都可能不精確地知道所有的文件分片片段已經(jīng)直接分散的位置。此外,用于重組文件分片片段和/或解密文件分片片段的所有秘鑰沒有存儲在一個地方。最后,作為對數(shù)據(jù)安全的額外增強,可以使用元數(shù)據(jù)存儲的二維模型,其中,重建數(shù)據(jù)所需的元數(shù)據(jù)存儲在客戶端側(cè)和遠程云存儲服務(wù)器上。
C.數(shù)據(jù)可用性
與現(xiàn)有存儲技術(shù)相比,所公開的“虛擬設(shè)備”存儲在數(shù)據(jù)可用性方面也有改進。通過將文件分割為存儲在多個不同云服務(wù)器上的多個文件分片片段,可以通過與其他數(shù)據(jù)位置的正常通信以及在其他數(shù)據(jù)位置處的低延遲來補償客戶端位置和一個物理云位置之間的通信問題。使文件分片片段分散在多個位置之間的整體效果是防止由于一個站點的通信中斷而導(dǎo)致的整個系統(tǒng)的中斷。
優(yōu)選地,下文討論的中間服務(wù)器處理節(jié)點都由高性能的處理器組成并且具有低延遲。這導(dǎo)致客戶端對數(shù)據(jù)傳輸?shù)母呖捎眯浴?/p>
優(yōu)選地,可以響應(yīng)于每個客戶端的請求而動態(tài)選擇中間服務(wù)器處理節(jié)點,以使請求它們的服務(wù)的客戶端的延遲最小。客戶端還可以從用于存儲文件分片片段的云存儲服務(wù)器的列表中選擇,并且客戶端可以基于它的地理位置以及這些服務(wù)器的可用性來優(yōu)化該列表。這進一步使每個客戶端在每個傳輸請求時的數(shù)據(jù)可用性最大化。
D.數(shù)據(jù)可靠性
與現(xiàn)有技術(shù)相比,所公開的“虛擬設(shè)備”存儲在云數(shù)據(jù)存儲系統(tǒng)的可靠性方面也有改進。將每個文件都分為文件分片片段意味著硬件或軟件故障、或者一個物理云存儲位置處的錯誤,將不會像某些之前的現(xiàn)有系統(tǒng)將整個文件存儲在一個物理位置那樣阻止訪問文件。另外,使用本文所討論的糾刪編碼技術(shù)確保了系統(tǒng)中的高質(zhì)量的糾錯能力,提高了數(shù)據(jù)安全性和可靠性。本文使用的文件分片片段和糾刪編碼技術(shù)的組合提供了可靠性的重大進步,以鼓勵企業(yè)采用云技術(shù)。
E.現(xiàn)有云基礎(chǔ)架構(gòu)資源的使用
所公開的主題的要素可以使用具有公共和私人資源的現(xiàn)有的云服務(wù)器基礎(chǔ)架構(gòu)??梢岳媚壳暗脑铺峁┥痰囊延械挠布蛙浖A(chǔ)架構(gòu)來對他們進行設(shè)置以使用本文公開的方法。因此,利用最少的投資即可實現(xiàn)本文公開的技術(shù)提供的大多數(shù)提高,這是因為不進行修改或者進行很少的修改即可使用目前已有的云資源。
F.減少基礎(chǔ)架構(gòu)成本
與現(xiàn)有的云存儲技術(shù)方案相比,某些實施例需要更少的冗余。如上所述,之前的存儲系統(tǒng)可能需要高達500%的額外的存儲空間以專門用于鏡像和復(fù)制。本文所公開的實施例由于它們較高的固有可靠性,所以可以僅需要比原始文件大小多30%的冗余便可成功操作。即使僅具有30%的冗余,也可以實現(xiàn)比現(xiàn)有系統(tǒng)更高等級的可靠性。高冗余的必要性的減少使云存儲能力的成本降低。隨著企業(yè)數(shù)據(jù)和存儲需求逐年呈指數(shù)的增長,該冗余的減少是使企業(yè)利用云存儲方案徹底替代其本地數(shù)據(jù)中心的在經(jīng)濟上可行的重要因素。
如本文進一步公開的,公開的“虛擬設(shè)備”存儲技術(shù)的實施例完成了特定任務(wù):將文件分割為文件分片和文件分片片段,它們最終被傳送到預(yù)定數(shù)量的云存儲位置;創(chuàng)建文件分片和文件分片片段的映射,該映射描述了文件如何被分割、以及一組云片段存儲在哪個云位置,以使客戶端能夠重組文件;對文件分片和文件分片片段進行加密以提供額外的數(shù)據(jù)安全性;將糾刪編碼信息加到碎片上以進行錯誤檢查和恢復(fù);以及對沒有正確的寫入和分解或者讀取和重組的孤立的文件分片片段進行垃圾收集。
如圖1所示,示例性的系統(tǒng)實施例的基本結(jié)構(gòu)可形象化為包括三層。第一層是客戶端側(cè)處理器(CSP),其可位于客戶端的后臺或數(shù)據(jù)中心??蛻舳藨?yīng)用(例如,在瀏覽器中運行一個Web應(yīng)用程序)可用于訪問CSP,以設(shè)置應(yīng)用程序參數(shù)并發(fā)起從客戶端的數(shù)據(jù)中心到存儲節(jié)點網(wǎng)絡(luò)的文件上傳和從存儲節(jié)點網(wǎng)絡(luò)到客戶端的數(shù)據(jù)中心的文件下載。在附圖中,“分片(slice)”通常用于指文件分片,并且“原子(atom)”通常用于指文件分片片段。
示例性的系統(tǒng)的第二層包括前端數(shù)據(jù)處理器(FEDP),其用于執(zhí)行中間數(shù)據(jù)處理。該FEDP可位于云中的多個分散位置。多個FEDP服務(wù)器可以對每個客戶端可用,其中,每個FEDP服務(wù)器提供高處理性能以及至客戶端的位置的高可用性連接。
示例性系統(tǒng)的實施例的第三層是存儲節(jié)點網(wǎng)絡(luò)(SNN)。SNN可以包括可由商業(yè)云資源提供商操作的各種云存儲中心。SNN中的存儲節(jié)點的數(shù)量和身份可由客戶端利用其客戶端應(yīng)用來可選地選擇,以通過選擇相對于客戶端的位置表現(xiàn)出最佳平均延遲和可用性的存儲節(jié)點來優(yōu)化存儲配置的延遲和安全性。
圖1是示出CSP、FEDP和SNN之間的相互關(guān)系的示意圖。
由這三層執(zhí)行的基本功能可以如下所述。CSP可以從客戶端應(yīng)用接收并發(fā)起將文件上傳到SNN的請求。作為第一步,其將文件分為多個分片,每個分片都具有給定的尺寸。分片的數(shù)量和尺寸不同可以根據(jù)客戶端應(yīng)用可用的參數(shù)而變化??衫每蛻舳嗣罔€對每個分片進行加密并且可為每個分片分配唯一的標(biāo)識符。CSP還將生成元數(shù)據(jù)文件,其對分片進行映射以允許它們重組成原始的完整文件。該元數(shù)據(jù)文件可以存儲在客戶端的數(shù)據(jù)中心處并且還可以被加密并復(fù)制到SNN。在示例性的實施例中,CSP可隨后將分片文件發(fā)送到下一層,即前端數(shù)據(jù)處理器(FEDP),以進行進一步的處理。
FEDP可以接收來自CSP的分片文件并對每個分片進行進一步的處理。該處理可以將每個分片分為一系列文件分片片段。執(zhí)行糾刪編碼以例如在在傳輸過程期間某些數(shù)據(jù)丟失的情況下提供錯誤校正。為了提供錯誤校正,糾刪編碼將增加每個文件分片片段的尺寸,本文將對糾刪編碼作進一步的描述。FEDP還可以利用其自身的加密秘鑰對文件分片片段進行加密。FEDP將創(chuàng)建另一個元數(shù)據(jù)文件,其將所有的文件分片片段映射回它們的原始分片,并記錄哪些存儲節(jié)點網(wǎng)絡(luò)(SNN)服務(wù)器用于存儲哪些文件分片片段。一旦執(zhí)行該中間過程,F(xiàn)EDP就將文件分片片段的群組發(fā)送到它們在云中指定的SNN服務(wù)器,并且將其創(chuàng)建的元數(shù)據(jù)文件副本發(fā)送到每個SNN服務(wù)器。
在第三層,SNN服務(wù)器現(xiàn)在將會將云中的處理后的文件分片片段托管到正??捎玫脑仆泄芊?wù)器,等待通過系統(tǒng)接收下載文件的未來請求。下載過程在三個處理層中與上文描述的步驟基本上相反,以便在CSP重建原始文件或文件分片。
圖2示出了根據(jù)示例性的實施例的CSP、FEDP和SNN中的每一個在將文件上傳到SNN期間的如上文討論的文件處理的各個階段。圖3是可包括在根據(jù)示例性的實施例執(zhí)行的文件上傳過程的詳細步驟的圖表。
文件上傳
圖4A和4B分別示出了在從CSP到FEDP再到SNN的文件上傳過程期間的兩個基本處理階段:在CSP處將文件處理為文件分片,以及在FEDP處對文件分片進行處理以創(chuàng)建分散到SNN的文件分片片段。圖5是以按步的方式示出上傳過程的另一個示圖,其示出了某些中間步驟。
文件下載
之前已經(jīng)上傳到SNN的文件的下載過程包括與上傳過程所使用的步驟相反的步驟。必須使用映射了如何將片段重組為分片的第二元數(shù)據(jù)文件來將存儲在多個SNN的分片片段重組為分片。這由FEDP執(zhí)行。必須由CSP利用第一元數(shù)據(jù)文件將如此生成的文件分片重組為完整文件以遞送到客戶端的數(shù)據(jù)中心,第一元數(shù)據(jù)文件映射了如何將分片重組為整個文件。第二元數(shù)據(jù)文件冗余地存儲在用于存儲文件的每個SNN上,并且第一元數(shù)據(jù)文件存儲在客戶端的數(shù)據(jù)中心和每個SNN上。
圖6是下載過程中可能涉及的詳細步驟的圖表。
圖7A示出了在三個層之間的下載過程,其示出了在CSP和FEDP之間做出的請求,以及FEDP和SNN之間的請求。圖7B示出了當(dāng)FEDP從SNN請求分片片段以利用第二元數(shù)據(jù)文件重組請求的文件分片時所涉及的步驟。
圖8示出了在下載過程期間,CSP、FEDP和SNN之間的相互作用的詳細步驟。
技術(shù)優(yōu)化
如上文所討論的,公開的方法和系統(tǒng)在數(shù)據(jù)吞吐量、數(shù)據(jù)可用性、數(shù)據(jù)可靠性和數(shù)據(jù)安全性方面都有重大改進。
系統(tǒng)中使用的多個上傳和下載節(jié)點將加速上傳和下載的速度。通過優(yōu)化CSP和FEDP之間的延遲并選擇具有目前最好的可用延遲的FEDP,可以實現(xiàn)吞吐量速度的進一步增加。無需優(yōu)化FEDP和SNN之間的延遲,這是因為FEDP被設(shè)置為高性能、高可用性的服務(wù)器,所述服務(wù)器被設(shè)計為自動使到SNN的延遲最小。使用多個節(jié)點還減少了如果一個特定的服務(wù)器路徑正遭受高延遲時的性能下載。
使用多個存儲節(jié)點來存儲文件分片片段極大地增加了客戶端數(shù)據(jù)存儲中的可用的安全性。黑客找到挖掘大量的SNN中的所有的不相干分散片段并將它們重組為有用的文件所必需的信息的任務(wù)非常艱巨。
通過糾刪編碼固有的錯誤檢查/校正,對分片片段的分散使用糾刪編碼增加了額外層的可靠性,糾刪編碼固有的錯誤檢查/校正允許系統(tǒng)免除對多個數(shù)據(jù)復(fù)制的需要,并且避免了其固有的性能下降和安全風(fēng)險。
其他問題
如上所述,保持非常資源密集型不變的一個區(qū)域是非常CPU密集型的糾刪編碼過程。為了解決這個問題,非常高性能的FEDP硬件保證了在這些FEDP服務(wù)器中使用的CPU(或虛擬CPU)符合系統(tǒng)的性能要求。另外,整個軟件包(包括FEDP服務(wù)器)可以以“Go”語言進行編碼。“Go”語言生成的本機代碼對象有助于改進整個系統(tǒng)的性能,特別是在糾刪編碼占用了主要CPU資源的FEDP服務(wù)器中。
客戶端應(yīng)用可以是能夠在客戶端的操作系統(tǒng)(OS)平臺上運行的任何客戶端代理。可選地,可將客戶端應(yīng)用寫入到Javascript中以在瀏覽器中運行。這有助于使該客戶端應(yīng)用在多種多樣的物理設(shè)備中可用。
上述數(shù)據(jù)存儲技術(shù)可以被設(shè)計為完全使用虛擬服務(wù)器。例如,可以使用并行的3個虛擬服務(wù)器來代替一個真實的硬件服務(wù)器以改進性能并保證硬件獨立。本系統(tǒng)基于對象存儲技術(shù),對象存儲技術(shù)獨立于任何特定文件結(jié)構(gòu)將數(shù)據(jù)視為要被參考的集合。目標(biāo)是創(chuàng)建一種能夠轉(zhuǎn)換到塊存儲中以適合當(dāng)前的數(shù)據(jù)存儲的虛擬化標(biāo)準的系統(tǒng)。將來可以容易地將當(dāng)前對象模型映射到塊存儲。
在某些實施例中,在FEDP上利用Reed-Solomon編碼完成通過糾刪編碼的方式進行的錯誤校正。在FEDP到/從SNN的不完全讀取和寫入的情況下,在FEDP還采用了垃圾收集系統(tǒng)。
圖9示出了垃圾收集過程的步驟,上述步驟對于刪除未完全存儲在存儲節(jié)點中的對象(即,對象的掩?;鶖?shù)(mask cardinality)小于k)來說是必需的。如果出于某些原因多于n-k個數(shù)據(jù)塊上傳失敗并且應(yīng)用意外終止,這些對象可能很少出現(xiàn)在系統(tǒng)中。流程包括四個步驟:
1.列表不完全:在每個固定時間周期(其可以是可配置的值),使用元數(shù)據(jù)存儲的LIST_INCOMPLETE函數(shù)取回不完整對象的列表。
2.取回UID:使用GET函數(shù)取回相應(yīng)的數(shù)據(jù)塊的UID(參見表2)。
3.刪除數(shù)據(jù):從這些UID中提取存儲節(jié)點ID和數(shù)據(jù)塊ID并使用DELETE函數(shù)從存儲節(jié)點刪除相應(yīng)的數(shù)據(jù)塊(參見表1)
4.刪除元數(shù)據(jù):使用DELETE函數(shù)從元數(shù)據(jù)存儲中移除已刪除的對象記錄
應(yīng)用
企業(yè)數(shù)據(jù)從公司數(shù)據(jù)中心到云的轉(zhuǎn)移
所公開的技術(shù)的極大提高的數(shù)據(jù)傳輸速度、安全性、可靠性和可用性使企業(yè)能夠?qū)⑵鋽?shù)據(jù)的大部分(特別包括其流媒體內(nèi)容)從他們的公司數(shù)據(jù)中心轉(zhuǎn)移到云。這會使公司的數(shù)據(jù)對公司內(nèi)部和公司外部的更廣泛范圍的數(shù)據(jù)消費者可用。
所公開的技術(shù)允許企業(yè)的當(dāng)前未充分利用的全部數(shù)據(jù)存儲資源隨后變得可以用作安全存儲節(jié)點。這可以極大地降低企業(yè)存儲成本,并允許安全的分布式存儲網(wǎng)絡(luò)能夠在整個數(shù)據(jù)結(jié)構(gòu)中迅速增加。
最終,對未充分利用的數(shù)據(jù)存儲資源的這種同樣的使用可以廣泛用于具有未充分使用的存儲設(shè)備的集合的計算機擁有者的一般群體??梢越M成龐大的分布式存儲網(wǎng)絡(luò),其將采用在比特流(BitTorrent)中的較舊的構(gòu)思并且通過增加極大提高的速度和安全性來加強它。計算機技術(shù)中的整個移動設(shè)備革命以云中的數(shù)據(jù)的可用性為基礎(chǔ)。在之前的系統(tǒng)中,由于缺乏云存儲資源的速度和安全性,這種需要已經(jīng)是這些相互關(guān)聯(lián)的技術(shù)的薄弱環(huán)節(jié)。在更多的私人和企業(yè)客戶通過移動設(shè)備訪問數(shù)據(jù)(特別是流媒體應(yīng)用)的今天,這是特別需要的。在計算機使用轉(zhuǎn)向移動設(shè)備的大量使用而很少使用臺式機和筆記本電腦的事實面前,針對用戶的數(shù)據(jù)的可用性要求將數(shù)據(jù)大量轉(zhuǎn)移到云中。所公開的技術(shù)有助于使這種轉(zhuǎn)移成為可能。
數(shù)字媒體流
所公開的技術(shù)自然地符合數(shù)字媒體流技術(shù)的需要。所公開的速度和安全性的改進以及可用存儲資源的更大利用使得能夠使用現(xiàn)有的通信協(xié)議和技術(shù)實現(xiàn)更高的流傳輸速度。根據(jù)本文公開的示例性的實施例,存儲視頻、音頻和其他元數(shù)據(jù)所需的大量的存儲空間可以進一步的受益于現(xiàn)有的資源和基礎(chǔ)架構(gòu)的提高的可用性和使用。
衛(wèi)星電視
內(nèi)置于衛(wèi)星電視技術(shù)中的大硬盤驅(qū)動器技術(shù)提供了未充分利用的存儲資源如何能夠適于使用公開的技術(shù)來在衛(wèi)星電視用戶的普通大眾之間建立快速、安全的分布式存儲網(wǎng)絡(luò)的例子。該資源可以極大地提高衛(wèi)星電視網(wǎng)絡(luò)的價值,并開拓全新的商業(yè)機會。
在根據(jù)本公開的某些實施例中,高度安全的糾刪編碼算法用于對文件片段進行編碼以在由于傳輸過程中的錯誤而導(dǎo)致丟失一些數(shù)據(jù)的情況下提供數(shù)據(jù)恢復(fù)。
特別的,采用了數(shù)據(jù)混合器算法(DMA),其將大小為L=|F|的對象F編碼為n個不可識別的碎片F(xiàn)1,F(xiàn)2,...Fn,每個片的大小為L/m(m<n),以便可由任意m個碎片重建原始對象F。DMA的核心是從n中取m(m-of-n)混合器編碼。利用DMA處理后的片段中的數(shù)據(jù)是保密的,這意味著原始對象F中的數(shù)據(jù)不能明確地從少于m個片中被重建?,F(xiàn)在將描述DMA的詳細操作的示例性的實施例。
從n中取m混合器編碼是前向糾錯碼(FEC),該前向糾錯碼的輸出不包含任何輸入符號,并且該前向糾錯碼將m個符號的消息變換為n個符號的更長的消息,以使得可從長度為m的n個符號的子集中恢復(fù)原始消息。
首先將原始對象F劃分為m個段S1,S2,...Sm,每個段的大小為L/m。然后,使用從n中取m混合器編碼將m個段編碼為n個不可識別的碎片F(xiàn)1,F(xiàn)2,...Fn,例如:
(S1,S2,…Sm)·Gm×n=(F1,F2,…Fn),
其中,Gm×n是混合器編碼的生成器矩陣,并滿足以下條件:
1)Gm×n的任何列與m×m單位矩陣的任何列均不相等
2)Gm×n的任意m列形成m×m的非奇異矩陣
3)其生成器矩陣Gm×n的任何正方形子矩陣都是非奇異的
第一個條件確保編碼生成n個不可識別的碎片。第二個條件確保原始對象F可以從任何m個碎片重建,其中m<n,并且第三個條件確保DMA具有強保密性。
通過任意從(m+n)中取m混合器編碼構(gòu)建具有強保密性的DMA的一種有效方式是:
1)選擇任意從(m+n)中取m混合器編碼,所述從(m+n)中取m混合器編碼的生成器矩陣為
Gm×(m+n)=(Cm×m|Dm×n)
2)構(gòu)建采用從n中取m混合器編碼的DMA,所述從n中取m混合器編碼的生成器矩陣為
例如,生成器矩陣可以是下面所示的柯西(Cauchy)矩陣。
柯西矩陣的任何正方形子矩陣為
其中,x1,...,xn,y1,...,yn∈Zp,xi+yj≠0;并且yi≠yj是非奇異的。因此,基于該矩陣的混合器編碼具有強保密性。
作為另一個例子,生成器編碼可以是范德蒙矩陣。
為了從生成器矩陣是范德蒙矩陣的混合器編碼構(gòu)建具有強保密性的DMA,選擇從(m+n)中取m混合器編碼,所述從(m+n)中取m混合器編碼的生成器矩陣為
其中,a1,a2,…am+n互不相同。
然后,可以重建具有強保密性的DMA,其中,相應(yīng)的生成器矩陣是
編碼例子
假設(shè)我們有大小為L=|F|的對象F。在示例中,L=1 048 576(1Mb文件)。執(zhí)行以下步驟以對其進行編碼:
1.選擇m和n(參見上文描述)。例如,m=4,n=6。
2.選擇字長w(通常為8,16,32,在本例中為8)。所有的算術(shù)運算將在GF(2w)執(zhí)行。
3.選擇數(shù)據(jù)包大小z(必須是計算機字長的倍數(shù),在本例中為256)。
4.計算編碼塊大小Z=w·z,其也應(yīng)該是m的倍數(shù)。在此示例中,Z=8·256=2048(字節(jié)),并且它是4的倍數(shù)。
5.用隨機字節(jié)填充原始對象F,將其大小從L增加到L',使得L'是Z的倍數(shù)。
6.將對象F分為大小為Z的碎片。將在這些碎片上執(zhí)行所有的以下步驟,但是我們?nèi)詫⑹褂肍來表示它們。
7.將F分段為序列,F(xiàn)=(b1,…bm,),(bm+1,…b2m),…其中,bi是w位長度的字符。在該例子中,其只是字節(jié)。為了方便,表示S1=(b1,…bm,)等。
8.應(yīng)用混合方案:
Fi=ci1,ci2,…,cin,
其中
cik=ai·Sk=ai1·b(k–1)m+1+…+aim·bkm,
其中,aij是n×m柯西矩陣(參見上文)的元素。
注意,F(xiàn)i的大小是Li=L/m,在我們的例子中,其為250kb(162 144字節(jié))。
解碼例子
現(xiàn)在假設(shè),我們有m個大小為Li的對象碎片F(xiàn)i。在我們的例子中,i=1,3,5,6,假設(shè)F2和F4已經(jīng)由于傳輸錯誤而丟失。
為了解碼和重建原始對象F,我們執(zhí)行以下步驟:
1.通過將除了編號為i的行之外的所有行去除,從用于編碼的n×m柯西矩陣構(gòu)造m×m矩陣A。在我們的例子中,刪除行2和4。
2.反轉(zhuǎn)矩陣A,并對每個段S1=(b1,…bm,)等應(yīng)用去混合方案:
3.將段Si加入到原始的Z長度的碎片F(xiàn)。
4.將Z長度的塊合并在一起以形成原始的被填充對象F。
5.從F中刪除填充,使其適合大小L。
在示例性的實施例中,處理數(shù)據(jù)以進行分布式存儲和使原始數(shù)據(jù)不可識別的糾刪編碼的前述方法用于處理流媒體內(nèi)容。如上所述,在兩步處理法中,將內(nèi)容提供商的媒體文件分為小文件分片片段。第一步,將整個文件(可以是壓縮的或者未壓縮的)分為一系列文件分片。這些文件分片可以被加密,并且元數(shù)據(jù)文件被創(chuàng)建,所述元數(shù)據(jù)文件映射了如何將這些分片組合成原始文件。
第二步,獲取每個文件分片并將其分為較小的數(shù)據(jù)片段,根據(jù)前述的技術(shù)對所述較小的數(shù)據(jù)片段進行糾刪編碼以使原始數(shù)據(jù)不可識別??衫靡唤M高性能的文件服務(wù)器進行糾刪編碼,其中,每個單獨的服務(wù)器對其文件分片執(zhí)行糾刪編碼。這表示分布在n個糾刪編碼服務(wù)器單元上的虛擬糾刪編碼的系統(tǒng)。在創(chuàng)建一系列文件分片片段時,糾刪編碼將預(yù)定等級的冗余添加到數(shù)據(jù)集合,所述文件分片片段隨后被分散到一系列文件片段存儲節(jié)點。在該過程中使用的糾刪編碼的最佳冗余為30%或更高。如果頻繁訪問媒體文件,則系統(tǒng)能夠增加特定分片的文件對象冗余。
本文公開的糾刪編碼技術(shù)增加了強大的自動糾錯系統(tǒng),其確??蛻舳思词乖诎鼇G失的情況下也接收流媒體文件的正確數(shù)據(jù)包。在糾刪編碼的過程中,還可對每個數(shù)據(jù)片段進行加密。第二元數(shù)據(jù)文件映射將文件分片片段重組成正確的流媒體包所需要的過程。通常,可能需要至少5個節(jié)點來成功地處理進行流傳輸?shù)臄?shù)據(jù)(盡管節(jié)點的數(shù)量是系統(tǒng)負載和其他參數(shù)的函數(shù))。這些節(jié)點不需要都位于將接收流數(shù)據(jù)的客戶端附近,而是可以位于寬廣的地理服務(wù)區(qū)域上。
為了重放流媒體內(nèi)容,客戶端從服務(wù)器節(jié)點下載所需的數(shù)據(jù)片段,然后以恰當(dāng)?shù)捻樞蛑匦陆M合數(shù)據(jù)片段。重新組合數(shù)據(jù)片段與創(chuàng)建數(shù)據(jù)片段的過程相反。將數(shù)據(jù)片段重新組合為文件分片,然后將文件分片重新組合為原始媒體文件的至少一部分。如同在所有的流技術(shù)中一樣,下載和處理數(shù)據(jù)片段的速率應(yīng)該足夠快以允許及時處理播放媒體當(dāng)前所需的數(shù)據(jù)包??梢园軌虿シ帕髅襟w的任何設(shè)備的客戶端應(yīng)用以恰當(dāng)?shù)捻樞蛉』匚募制我蚤_始播放流媒體文件。
對于流媒體,重要的是以恰當(dāng)?shù)捻樞驅(qū)⑺械臄?shù)據(jù)片段按照順序重組,以便從頭到尾觀看或者收聽媒體。客戶端設(shè)備通過使用來自元數(shù)據(jù)文件的映射數(shù)據(jù)來重組數(shù)據(jù)片段,以正確地獲得恰當(dāng)序列的片段,來重新組合數(shù)據(jù)片段。與當(dāng)前的流技術(shù)一樣,如果下載速率快于顯示媒體數(shù)據(jù)的下一個數(shù)據(jù)包所需的時間,讀取器就將下載并組合將來的時間片段,所述將來的時間片段存儲在緩沖器中以便當(dāng)媒體播放器到達該時間段時使用。文件片段可能實際上不被組合到原始媒體文件中,而是僅在合適的時間播放并存儲為數(shù)據(jù)片段。如果用戶對媒體文件不具有合法權(quán)利,這就增加了正播放的數(shù)字媒體的安全性。當(dāng)然,如果用戶對原始媒體文件具有合法權(quán)利,則一旦已經(jīng)下載完所有的片段,就可以在客戶端的設(shè)備上以完整的原始媒體文件的形式組合片段。因為從多個節(jié)點傳輸媒體文件,所以文件下載速率將遠超過現(xiàn)有技術(shù)中的典型速率。優(yōu)選地,采用在當(dāng)時具有用于下載數(shù)據(jù)段的至客戶端的最佳連接的節(jié)點。因為節(jié)點上的數(shù)據(jù)是冗余的,所以當(dāng)客戶端軟件讀取流數(shù)據(jù)時,可以優(yōu)選地選擇那些具有最高數(shù)據(jù)傳輸速率的節(jié)點以在下載時使用。
該技術(shù)適用于所有類型的客戶端設(shè)備:臺式機、膝上型計算機、平板電腦、智能手機等。其不必替換當(dāng)前的流技術(shù)軟件,而是可以僅在其頂部增加另一層以使用映射文件來以恰當(dāng)?shù)捻樞蛑匦陆M合所需的數(shù)據(jù)片段。
相比于以前的系統(tǒng)的優(yōu)點
所公開的基于分布式存儲和糾刪編碼的流技術(shù)與上文討論的現(xiàn)有的流技術(shù)的限制相比具有實質(zhì)性改進。
A.數(shù)據(jù)傳輸速度
由于上述原因,與現(xiàn)有技術(shù)的流技術(shù)相比,所公開的實施例在典型的因特網(wǎng)通信條件下對數(shù)據(jù)傳輸速度具有實質(zhì)性的改進。
當(dāng)媒體內(nèi)容提供商可以選擇將數(shù)據(jù)片段分散到云中的高性能服務(wù)器時,他還可以選擇將數(shù)據(jù)片段存儲在以任何其他類型的網(wǎng)絡(luò)連接的多個存儲設(shè)備上。當(dāng)重建媒體文件時,可將“碎片”并行傳送到多個服務(wù)器/從多個服務(wù)器并行傳送“碎片”,從而導(dǎo)致吞吐量的大幅提高??梢詫⑵浔茸鳜F(xiàn)今使用的流行的下載加速器技術(shù),其也開通多個信道來下載文件的碎片,從而導(dǎo)致下載速率的大幅提高。至一個節(jié)點服務(wù)器的一個傳輸連接的延遲瓶頸將不會停止至在正常延遲情況下操作的其他服務(wù)器的更快的傳輸。較高速度的數(shù)據(jù)傳輸能夠使大的、未壓縮的媒體文件實時播放,從而可高保真的重放流媒體。
客戶端軟件技術(shù)可以選擇成優(yōu)先從向在其位置處的特定客戶端提供最高的當(dāng)前吞吐量的那些節(jié)點下載,導(dǎo)致吞吐量速度的進一步提高。每個客戶端應(yīng)用都可以從可用節(jié)點的整個全局池中選擇從此刻提供最高吞吐量的那些節(jié)點讀取媒體流。糾刪編碼的冗余還意味著不止一個節(jié)點包含下一個所需的片段,從而允許客戶選擇可用的最高吞吐量節(jié)點。
還可以基于當(dāng)前吞吐量條件來優(yōu)化數(shù)據(jù)片段到數(shù)據(jù)存儲節(jié)點的分散??梢赃x擇連接性最好的節(jié)點來存儲較大量的數(shù)據(jù)片段,從而將可用的存儲節(jié)點優(yōu)化為在分散過程期間具有最大的數(shù)據(jù)傳輸速度。
具體地,因為糾刪編碼可以是CPU密集型任務(wù),所以可以在服務(wù)器側(cè)、在由于高性能而經(jīng)被選擇的服務(wù)器上執(zhí)行本技術(shù)使用的糾刪編碼。
B.數(shù)據(jù)安全性
如上所述,與將整個文件存儲在單個物理云存儲位置中的現(xiàn)有的流技術(shù)相比,本文公開的分布式和“虛擬糾刪編碼”流技術(shù)在數(shù)據(jù)安全性方面做出了極大的改進。
另外,用于處理和存儲文件分片片段的服務(wù)器可由多個客戶端共享,使得黑客無法通過分片來識別其屬于哪個客戶端。這使黑客更加難以危及采用這種技術(shù)存儲的媒體文件數(shù)據(jù)的安全性。
C.數(shù)據(jù)可用性
如上所述,與現(xiàn)有的流技術(shù)相比,本文公開的分布式存儲和“虛擬糾刪編碼”流技術(shù)還在數(shù)據(jù)可用性方面做出了極大的改進。通過將文件分割為存儲在多個物理節(jié)點(優(yōu)選地位于不同的位置)的文件分片片段,客戶端位置和一個物理節(jié)點之間的通信問題可通過與其他數(shù)據(jù)位置的正常通信來抵消。具有多個位置的總體效果是使杜絕由于一個站點處的通信中斷而導(dǎo)致系統(tǒng)中斷。
使原始數(shù)據(jù)不可識別的糾刪編碼和具有冗余數(shù)據(jù)的多個節(jié)點的使用增加了強大且安全的錯誤校正技術(shù)。困擾現(xiàn)有流技術(shù)的丟包問題不再是需要關(guān)注的問題?,F(xiàn)有的流技術(shù)必須經(jīng)常將同一個媒體文件的多個副本放在整個地理服務(wù)區(qū)域的多個服務(wù)器上,以確保每個客戶端都具有至存儲他希望播放的數(shù)據(jù)流的服務(wù)器的良好連接性。所公開的流技術(shù)不需要原始媒體文件在整個服務(wù)器區(qū)域的多個服務(wù)器上的完全冗余副本。
D.數(shù)據(jù)可靠性
與現(xiàn)有技術(shù)相比,本文公開的分布式存儲和“虛擬糾刪編碼”流技術(shù)還在流媒體的可靠性方面也帶來了極大的改進。將每個文件分割為文件分片片段意味著一個物理服務(wù)器存儲位置的硬件或軟件故障或錯誤將不會如同現(xiàn)有技術(shù)中的當(dāng)將整個文件都存儲在一個物理位置時那樣取消對文件的訪問。使原始數(shù)據(jù)不可識別的糾刪編碼技術(shù)在增強了媒體內(nèi)容的安全性的同時確保了高質(zhì)量的錯誤校正能力。
E.數(shù)字版權(quán)管理安全
對數(shù)字版權(quán)(DRM)的保護是流媒體文件的一個特別重要的問題。很多第三方產(chǎn)品可用于規(guī)避流媒體中的DRM保護方案。由于所公開的技術(shù)將數(shù)據(jù)流分解成數(shù)據(jù)片段,可以對數(shù)據(jù)片段進行加密并且可以利用能夠使原始數(shù)據(jù)不可識別的糾刪編碼處理每個數(shù)據(jù)片段,所以極大增強了DRM保護方案。如果請求流媒體的客戶端對文件本身不具有權(quán)限,而僅具有播放文件的權(quán)限,則即使在播放期間也不必在客戶端設(shè)備上將經(jīng)過加密和糾刪編碼后的數(shù)據(jù)片段物理地組合為實際的媒體文件。這使DRM方案更加強大,從而現(xiàn)今使用的一般的第三方技術(shù)不能容易地規(guī)避該DRM方案。
總而言之,在示例性的實施例中,本文公開的分布式存儲和“虛擬糾刪編碼”流技術(shù)實現(xiàn)了以下基本任務(wù):
1)將內(nèi)容提供商的媒體文件片分割為碎片或文件分片,所述碎片或文件分片最終將進一步被分為文件分片片段,在分布式糾刪編碼服務(wù)器上對文件分片片段進行糾刪編碼以提供不可識別的碎片。
2)創(chuàng)建文件分片的映射,其描述如何分割文件以允許在客戶端重組數(shù)據(jù)。該映射存儲在元數(shù)據(jù)文件中。
3)可選地對文件分片進行加密以進一步提高數(shù)據(jù)安全性。
4)可選地對文件分片進行壓縮以減少數(shù)據(jù)存儲的大小并提高傳輸速度。
5)對文件分片進行糾刪編碼以能夠增強錯誤校正和數(shù)據(jù)恢復(fù)。通過糾刪編碼過程將分片分為文件分片片段。
6)創(chuàng)建將文件分片片段重組為文件分片所需的文件分片片段的映射。該映射存儲在第二元數(shù)據(jù)文件中。
7)可選地對文件分片片段進行加密以進一步提高數(shù)據(jù)安全性。
8)可選地對文件分片片段進行壓縮以減小存儲空間要求并提高傳輸速度。
9)在客戶端設(shè)備上,對文件分片片段進行解碼并將其重組為文件分片,并隨后重組為整個媒體文件以在客戶端媒體播放器(或者瀏覽器)上播放。注意,必須以恰當(dāng)?shù)捻樞驅(qū)⑵谓M合成分片,并且必須以恰當(dāng)?shù)捻樞驅(qū)⒎制M合為整個文件??蛻舳塑浖褂脙蓚€元數(shù)據(jù)文件提供的映射信息來在這兩個階段重組媒體文件。
可將該技術(shù)的基本結(jié)構(gòu)可視化為由以下四層實現(xiàn):
1.CSP(參見圖1)將內(nèi)容提供商的媒體文件分為文件分片,可選地,對分片進行加密,并生成元數(shù)據(jù)文件,所述元數(shù)據(jù)文件具有如何能夠?qū)⒎制亟M為原始媒體文件的映射。元數(shù)據(jù)文件還保持以恰當(dāng)?shù)捻樞蚪M合分片所需的每個文件分片的順序的信息。
2.FEDP(參見圖1)使用產(chǎn)生不可識別的碎片的糾刪編碼將每個文件分片分割為文件分片片段。在示例性的實施例中,糾刪編碼增加了30%的數(shù)據(jù)冗余。第二元數(shù)據(jù)文件映射了如何將文件分片片段重組為文件分片。當(dāng)在客戶端設(shè)備上播放片段期間,第二元數(shù)據(jù)文件還保持以恰當(dāng)?shù)捻樞蚪M合分片所需的每個片段的順序的信息。
3.SNN(參見圖1)是用于分散數(shù)據(jù)片段的各個存儲節(jié)點。存儲節(jié)點不一定是云中的所有服務(wù)器。節(jié)點可以是數(shù)據(jù)中心、計算機中的硬盤、移動設(shè)備或能夠存儲數(shù)據(jù)的一些其他多媒體設(shè)備。這些存儲節(jié)點的數(shù)量和標(biāo)識可以由內(nèi)容提供商選擇,以利用具有最低平均延遲和最佳可用性的節(jié)點來優(yōu)化存儲配置的延遲和安全性。
4.可以在當(dāng)前技術(shù)的流媒體播放器軟件的頂層實現(xiàn)終端用戶客戶端解碼器(ECD)。該第四層向內(nèi)容提供商發(fā)起流媒體的請求,然后接收從層(1)和(2)形成的兩個元數(shù)據(jù)文件導(dǎo)出的映射文件,在層(1)和(2)之上允許ECD將文件分片片段組合為分片,并將分片組合為原始媒體文件以重放或者存儲媒體文件。顯然,必須按照媒體內(nèi)容的按需播放所需的恰當(dāng)順序來組合媒體文件。如果客戶端已經(jīng)購買了下載完整文件的流媒體的權(quán)限,則一旦完全下載,ECD就將播放和組合原始媒體文件。如果客戶端僅具有播放媒體文件的權(quán)限,ECD就將僅以恰當(dāng)?shù)捻樞虿シ琶襟w文件,同時存儲文件分片片段以用于可能的重放,而不必將它們組合成完整的文件。如果下載速度超過媒體播放速度(大部分時間都會發(fā)生),ECD還會將數(shù)據(jù)片段緩沖在客戶端設(shè)備上的存儲器中。ECD還可以與媒體播放器交互以接收并處理對媒體文件段的請求,所述請求可以位于媒體文件播放的當(dāng)前時間的之前或者之后。
其他性能考慮
如果多個客戶端對特定媒體文件都有著高需求,則可以采取兩種主要方法來滿足增加的需求:
首先,可以采用更大數(shù)量的片段存儲節(jié)點以分散經(jīng)過糾刪編碼后的數(shù)據(jù)片段。如果需求主要來自一個地理區(qū)域,則應(yīng)當(dāng)選擇對于該區(qū)域的客戶端來說數(shù)據(jù)吞吐率最佳的節(jié)點來分散。
其次,可以為糾刪編碼步驟選擇更高級別的冗余。例如,替代30%的冗余,更高級別的冗余將有助于確保更大可用的欠載。
可以動態(tài)地執(zhí)行這兩個步驟以當(dāng)它們實時發(fā)生時滿足特定需求和負載要求。
另外,可以挑出某些分片或片段來實現(xiàn)更高級別的冗余級別,以提高可用性。具體來說,應(yīng)當(dāng)給予媒體文件的第一段最高級別的冗余,以滿足增加的需求的需要。
盡管已經(jīng)根據(jù)某些示例性的實施例描述并示出了所公開的主題,但是本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,可以組合、重整和修改公開的實施例的特征,以產(chǎn)生落入本公開范圍內(nèi)的其他實施例,并且在不背離本發(fā)明的精神和范圍的情況下,可以作出各種其他修改、省略和添加。