專利名稱:用于提供分布式、分散式數(shù)據(jù)存儲與檢索的系統(tǒng)和方法
技術領域:
本發(fā)明一般涉及用于提供分布式、分散式數(shù)據(jù)存儲與檢索的系統(tǒng)和方法。更
具體地,本發(fā)明涉及為激活基于對等結構的(peer-based)服務(例如,富媒體(rich media)廣告、照片和視頻共享與存儲以及視頻電子郵件)提供節(jié)省成本機制的分 布式存儲和檢索模型。
背景技術:
多種情形都可經(jīng)由基于對等結構的分布式存儲系統(tǒng)激活。這些情形的示例包 括基于對等結構的文本與富媒體廣告存儲/高速緩存/復制、基于對等結構的數(shù)字照 片和視頻的存儲與共享、以及基于對等結構的視頻電子郵件。這些情形在集中式服 務的情況下成本高的不切實際,因為在數(shù)據(jù)中心內(nèi)的存儲成本會變得極大。
許多網(wǎng)站正在朝帶高度目標化廣告的純粹基于廣告的模型轉(zhuǎn)變,其中上述高 度目標化的廣告基于先前向用戶學習的知識而出現(xiàn)。例如,已知能夠收集與人有關 的大量人口統(tǒng)計學數(shù)據(jù),并且單是基于在網(wǎng)站單擊流路徑(dickstream)中收集的 數(shù)據(jù)就能夠推斷出相當多的信息。高度目標化的廣告例如可以搜索關鍵詞為基礎。 這一情形通常需要大量存儲。
以集中化的方式存儲這些廣告已被在先實現(xiàn)。然而在諸如新興市場的某些市 場中存在著困難,這是因為需要不同的成本結構才能將這些廣告有效地存儲、發(fā)送 并高速緩存入本地機器。在許多情況下,集中這些廣告并支付在數(shù)據(jù)中心的存儲成 本會因為這些廣告通常定位于各種環(huán)球市場使得成本過高而難以實現(xiàn)。為面向全世 界發(fā)送廣告支付帶寬成本通常不是一個有效或經(jīng)濟的方法。
照片共享的現(xiàn)有解決方案分屬兩個陣營集中式存儲(例如,photos.msn.com) 或者點對點("P2P")照片共享(例如,Google "Picasa"的當前版本)。集 中式存儲具有明顯的局限性如果免費提供,則可用于照片存儲的總空間會變 得極為有限。另一方面,典型的使用費遠高于用戶僅購買屬于他們自己磁盤的 花費。如果他們購買屬于他們自己的磁盤,則他們需要對照片備份負責并且因為大多數(shù)寬帶連接限制了上傳速度,所以會極大地限制能瀏覽這些照片的人 數(shù)。
諸如Groove或Google Picasa當前版本的P2P照片共享解決方案使得所有 機器上的整個照片副本都得以參與一對等組。雖然該方法避開了上述的存儲成 本和帶寬問題,但是它也引入不同的問題。例如,如果參與該組的人數(shù)不多, 則在參與者照片本地副本丟失的情況下存在這些照片不可用的公平機率(取決 于各對等結構的正常運行時間)。此外,這種強力解決方案要求全部100%的 對等結構存儲全部100%的照片。這就導致整個對等組使用大量的冗余存儲, 并且無法衡量。
經(jīng)電子郵件遞送的視頻消息會遭受與以上結合照片共享所述問題相同的 許多問題,但是它們的更大(使得存儲成本更高)。除非服務來自中央數(shù)據(jù)中 心,否則遞送往往會不可靠。雖然現(xiàn)場P2P視頻電話會議沒有存儲問題(因為 視頻在發(fā)送同時就被消耗),但是在質(zhì)量(受帶寬所限)及通話方同步性上受 到進一步的限制。
于是,在本領域內(nèi)就需要能夠為激活基于對等結構的服務(例如,富媒體廣 告、照片/視頻共享/存儲、以及視頻電子郵件)提供節(jié)省成本機制的分布式存儲模 型。
發(fā)明概述
本發(fā)明提供用于提供分散式、分布式數(shù)據(jù)存儲與檢索的系統(tǒng)和方法。這一系 統(tǒng)包括互連的節(jié)點網(wǎng)絡。每一節(jié)點都具有在其上運行的一批一個或多個進程,這些 進程形成"本地高速緩存和傳輸層"、"流存儲層"、"組塊存儲層"、以及"碎 片存儲層"。 一批進程還可提供用于"塊"存儲。
本地高速緩存和傳輸層可以包括存儲服務和路由選擇服務。存儲服務可以接 收存儲請求以存儲任意長度的某一比特流。路由選擇服務可以將該比特流傳遞至任 何流存儲服務。該流存儲服務可以在本地永久存儲設備中存儲這些比特流用于隨后 的檢索,并且還將該比特流分成一個或多個"組塊"。該流存儲服務隨后將這些組 塊傳遞至各自的組塊存儲服務。組塊存儲服務可以在本地永久存儲設備中存儲這些 組塊用于隨后的檢索,并且還將該組塊分成一個或多個"碎片"。該組塊存儲服務 隨后可以將這些碎片編碼成檢驗塊并將它們傳遞至各自的碎片存儲服務。碎片存儲 服務可以在本地永久存儲設備中存儲這些碎片用于隨后的檢索。這樣,比特流就被分成多個檢驗塊,并且每一檢驗塊通常都被存儲在分布在這些節(jié)點的巨大網(wǎng)絡中的 不同網(wǎng)絡節(jié)點上。
這一分散式、對等式、分布式存儲系統(tǒng)可用于數(shù)字廣告的本地存儲和高速緩 存,即將這些數(shù)字廣告存儲并高速緩存在諸如位于瀏覽這些廣告的實際國家或城市 之內(nèi)的客戶機PC中。對于數(shù)字照片與視頻的存儲和共享而言,下層的分布式存儲 機制可以在無需請求大量冗余的情況下實現(xiàn)照片的極高可靠性和可用性。對于視頻 電子郵件而言,該分布式存儲模型則可建立適用于大型視頻消息的可靠郵件遞送系 統(tǒng)。
附圖簡述
圖1是示出了在其中可以實現(xiàn)本發(fā)明各方面的示例性計算環(huán)境的框圖。
圖2描繪了一個分布式網(wǎng)絡的示例。
圖3A和3B描繪了一個示例性的分布式存儲系統(tǒng)。
說明性實施例的詳述
示例性計算環(huán)境
圖1和隨后的討論旨在提供其中可實現(xiàn)本發(fā)明示例性實施例的合適計算環(huán)境 的簡要描述。然而應該理解的是也可考慮結合本發(fā)明使用手持、便攜以及其他所有 種類的計算設備。雖然下文中闡述通用計算機,但這只是一個示例。本發(fā)明還可以 在具有網(wǎng)絡服務器互操作性和交互性的瘦客戶機上使用。于是,本發(fā)明的示例性實 施例可以在其中包含很少或最少客戶機資源的網(wǎng)絡主機服務環(huán)境中實現(xiàn),而該網(wǎng)絡 主機服務環(huán)境指的是例如在其中客戶機設備僅用作萬維網(wǎng)的瀏覽器或界面的網(wǎng)絡 環(huán)境。
雖然不要求,但是本發(fā)明可經(jīng)由開發(fā)者或測試員使用的應用軟件編程接口 (API)實現(xiàn),和/或本發(fā)明可以包括在將在計算機可讀指令(諸如,程序模塊)的 語境中闡述的網(wǎng)絡瀏覽軟件內(nèi),這些軟件可由一個或多個計算機執(zhí)行(例如,客戶 機工作站、服務器或其他設備)。程序模塊通常包括可以執(zhí)行特定任務或?qū)崿F(xiàn)特定 抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結構等。通常在各實施例中,可以 按照需要結合或分配程序模塊功能。此外,本領域普通技術人員將會認識到還可使 用其他的計算機系統(tǒng)配置來實踐本發(fā)明。其他適合于本發(fā)明使用的已知的計算系統(tǒng)、環(huán)境和/或配置包括但不限于個人計算機(PC)、自動取款機、服務器計算機、 手持或膝上型設備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、可編程電子消費品、網(wǎng) 絡PC、小型機、大型機等等。本發(fā)明的實施例還可在其中任務由通過通信網(wǎng)絡或 其他數(shù)據(jù)傳輸介質(zhì)鏈接的遠程處理設備所執(zhí)行的分布式計算環(huán)境中實踐。在分布式 計算環(huán)境中,程序模塊可以位于包括了存儲器存儲裝置的本地和遠程計算機存儲介 質(zhì)上。
這樣圖1就示出了在其中可實現(xiàn)本發(fā)明的合適計算系統(tǒng)環(huán)境100的實例,雖 然如上所闡明的那樣,計算系統(tǒng)100僅作為合適計算環(huán)境的一個示例,并不意味著
對本發(fā)明的使用范圍和功能作出任何限制。也不應該將計算環(huán)境ioo解釋為對在示
例操作環(huán)境100中示出的組件中的任何一個或它們的組合具有任何依賴或要求。
參見圖1,一個用于實現(xiàn)本發(fā)明的示例性系統(tǒng)包括計算機110形式的通用計算 設備。計算機110的組件包括但不限于處理單元120、系統(tǒng)存儲器130、以及把 包括系統(tǒng)存儲器在內(nèi)的各種系統(tǒng)組件耦合至處理單元120的系統(tǒng)總線121。系統(tǒng)總 線121可以是任何類型的總線結構,包括存儲器總線或存儲器控制器、外圍總線和 使用各種的總線體系結構的任何一種本地總線。作為示例而非限制,這樣的體系結 構包括工業(yè)標準體系結構(ISA)總線、微通道體系結構(MCA)總線、擴展的ISA (EISA)總線、視頻電子技術標準協(xié)會(VESA)局部總線和外圍部件互連(PCI) 總線(也被稱為Mezzanine總線)。
計算機110通常包括各種計算機可讀介質(zhì)。計算機可讀介質(zhì)可以是能夠被計 算機IIO訪問的任何可用介質(zhì),且包括易失性和非易失性介質(zhì)、可移動和不可移動 介質(zhì)。作為示例而非限制,計算機可讀介質(zhì)可以包括計算機存儲介質(zhì)和通信介質(zhì)。 計算機存儲介質(zhì)包括以任何方法或技術實現(xiàn)的用于存儲諸如計算機可讀指令、數(shù)據(jù) 結構、程序模塊或其它數(shù)據(jù)等信息的易失性和非易失性、可移動和不可移動介質(zhì)。 計算機存儲介質(zhì)包括但不限于隨機存取存儲器(RAM)、只讀存儲器(ROM)、 電可擦除可編程只讀存儲器(EEPROM)、閃存或其它存儲器技術;致密盤只讀 存儲器(CDROM)、數(shù)字多功能盤(DVD)或其它光盤存儲;磁帶盒、磁帶、磁 盤存儲或其它磁性存儲設備;或能用于存儲所需信息且可以由計算機IIO訪問的任 何其它介質(zhì)。通信介質(zhì)通常具體化為諸如載波或其它傳輸機制等己調(diào)制數(shù)據(jù)信號中 的計算機可讀指令、數(shù)據(jù)結構、程序模塊或其它數(shù)據(jù),且包含任何信息傳遞介質(zhì)。 術語"已調(diào)制數(shù)據(jù)信號"指的是這樣一種信號,其一個或多個特征以在信號中編碼信息的方式被設定或更改。作為示例,而非限制,通信介質(zhì)包括諸如有線網(wǎng)絡或直 接線連接的有線介質(zhì),以及諸如聲學、射頻(RF)、紅外線和其它無線介質(zhì)的無 線介質(zhì)。上述中任一個的組合也應包括在計算機可讀介質(zhì)的范圍之內(nèi)。
系統(tǒng)存儲器130包括易失性或非易失性存儲器形式的計算機存儲介質(zhì),諸如 ROM 131和RAM 132?;据斎?輸出系統(tǒng)133 (BIOS)包含有助于諸如啟動時在 計算機110中元件之間傳遞信息的基本例程,它通常存儲在ROM 131中。RAM 132
通常包含處理單元120可以立即訪問和/或目前正在操作的數(shù)據(jù)和/或程序模塊。作 為示例而非限制,圖1示出了操作系統(tǒng)134、應用程序135、其它程序模塊136和 程序數(shù)據(jù)137。 RAM 132可以含有其他數(shù)據(jù)和/或程序模塊。
計算機110也可以包括其它可移動/不可移動、易失性/非易失性計算機存儲介 質(zhì)。僅作為示例,圖l示出了從不可移動、非易失性磁介質(zhì)中讀取或向其寫入的硬 盤驅(qū)動器141,從可移動、非易失性磁盤152中讀取或向其寫入的磁盤驅(qū)動器151, 以及從諸如CD ROM或其它光學介質(zhì)等可移動、非易失性光盤156中讀取或向其 寫入的光盤驅(qū)動器155。可以在示例性操作環(huán)境下使用的其它可移動/不可移動、易 失性/非易失性計算機存儲介質(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ū)動器及其相關聯(lián)的計算機存儲介質(zhì)為計算機 110提供了對計算機可讀指令、數(shù)據(jù)結構、程序模塊和其它數(shù)據(jù)的存儲。例如在圖 1中,硬盤驅(qū)動器141被示為存儲操作系統(tǒng)144、應用程序145、其它程序模塊146 和程序數(shù)據(jù)147。注意這些組件可以與操作系統(tǒng)134、應用程序135、其它程序模 塊136和程序數(shù)據(jù)137相同或不同。操作系統(tǒng)144、應用程序145、其它程序模塊 146和程序數(shù)據(jù)147在這里被標注了不同的標號是為了說明至少它們是不同的副 本。用戶可以通過輸入設備,諸如鍵盤162和定點設備161 (通常指鼠標、跟蹤球 或觸摸墊)向計算機110輸入命令和信息。其它輸入設備(未示出)可以包括麥克 風、操縱桿、游戲墊、圓盤式衛(wèi)星天線、掃描儀等。這些和其它輸入設備通常由耦 合至系統(tǒng)總線121的用戶輸入接口 160連接至處理單元120a-f,但也可以由其它接 口或總線結構,諸如并行端口、游戲端口或通用串行總線(USB)連接。
監(jiān)視器191或其它類型的顯示設備也經(jīng)由接口,諸如視頻接口 190連接至系 統(tǒng)總線121。除監(jiān)視器191以外,計算機也可以包括其它外圍輸出設備,諸如揚聲器197和打印機196,它們可以通過輸出外圍接口 195連接。
計算機110可在使用至一個或多個遠程計算機,諸如遠程計算機180的邏輯 連接的網(wǎng)絡化環(huán)境下操作。遠程計算機180可以是個人計算機、服務器、路由器、 網(wǎng)絡PC、對等設備或其它常見網(wǎng)絡節(jié)點,且通常包括上文相對于計算機IIO描述 的許多或所有元件,盡管在圖1中只示出存儲器存儲設備181。圖1中所示邏輯連 接包括局域網(wǎng)(LAN) 171和廣域網(wǎng)(WAN) 173,但也可以包括其它網(wǎng)絡。這樣 的連網(wǎng)環(huán)境在辦公室、企業(yè)范圍計算機網(wǎng)絡、內(nèi)聯(lián)網(wǎng)和因特網(wǎng)中是常見的。
當在LAN連網(wǎng)環(huán)境中使用時,計算機IIO通過網(wǎng)絡接口或適配器170連接至 LAN 171。當在WAN連網(wǎng)環(huán)境中使用時,計算機IIO通常包括調(diào)制解調(diào)器172或 用于在諸如因特網(wǎng)等WAN 173上建立通信的其它裝置。調(diào)制解調(diào)器172可以是內(nèi) 置或外置的,它可以通過用戶輸入接口 160或其它合適的機制連接至系統(tǒng)總線121。 在網(wǎng)絡化環(huán)境中,相對于計算機IIO描述的程序模塊或其部分可以存儲在遠程存儲 器存儲設備中。作為示例而非限制,圖1示出了遠程應用程序185駐留在存儲器設 備181上??梢岳斫馐境龅木W(wǎng)絡連接是示例性的,且可以使用在計算機之間建立通 信鏈路的其它手段。
本領域普通技術人員應該認識到計算機110或者其他客戶機設備可被布置為 計算機網(wǎng)絡的一部分。在此方面,本發(fā)明屬于具有任何數(shù)量存儲器或存儲單元的任 何計算機系統(tǒng),以及在任何存儲單元或巻上出現(xiàn)的任何數(shù)量的應用程序和進程。本
發(fā)明的實施例還可應用于帶有在具有遠程或本地存儲裝置的網(wǎng)絡環(huán)境中布置的服 務器計算機和客戶機計算機的環(huán)境。本發(fā)明也可應用于具有編程語言功能、解釋和 執(zhí)行能力的獨立計算設備。 分布式網(wǎng)絡
圖2描繪了含有多個網(wǎng)絡節(jié)點10A-H的分布式網(wǎng)絡的一個示例。這一節(jié)點例 如可以是個人計算機,或者包括處理和數(shù)據(jù)存儲能力的任何其他網(wǎng)絡設備,諸如服 務器、路由器、網(wǎng)絡PC、對等設備等。節(jié)點IOA-H可以是經(jīng)由諸如內(nèi)聯(lián)網(wǎng)或因特 網(wǎng)的局域網(wǎng)或廣域網(wǎng)彼此相連的對等結構。
每個節(jié)點IOA-H可分配有一個唯一地址。可以選擇該地址的長度以確保每個 節(jié)點都具有唯一地址。在一個示例中,在其中網(wǎng)絡預期包括數(shù)千萬節(jié)點的基于因特 網(wǎng)的系統(tǒng)可以使用160位地址。這一尋址方案可以在TCP頂部形成一路由覆蓋圖。
在各節(jié)點IOA-H之間分布的進程可以經(jīng)由簡單對象訪問協(xié)議("SOAP")消息通過網(wǎng)絡彼此通信。SOAP是一個周知、輕型、基于XML的分布式計算協(xié)議。 SOAP消息是包括SOAP包絡的XML文檔。該包絡包括可任選的SOAP報頭、以 及強制性的SOAP主體。SOAP消息的報頭表示該消息的元數(shù)據(jù)并且提供一個擴展 SOAP的方法。SOAP消息的主體是實際的消息有效負載。分布式進程可以通過在 網(wǎng)絡上放置SOAP分組來彼此通信。
進程可以是消息始發(fā)器(例如,如圖中節(jié)點IOA上所示)、預定的消息接收 器(例如,如圖中節(jié)點10G上所示)、或者是中間物(例如,如圖中節(jié)點10C上 所示)。消息始發(fā)器是最初將該SOAP消息放在網(wǎng)絡上的進程。預定的消息接收 器是該消息最終去往的進程。因此,起源于該消息始發(fā)器的SOAP消息可以包括 與預定的消息接收器相關聯(lián)的地址。
然而也可能出現(xiàn)消息始發(fā)器不知道預定的消息接收器的情況,特別是在大型 網(wǎng)絡中。實際上,消息始發(fā)器甚至可能不知道預定的消息接收器是否存在。因此, 為了獲得向預定接收器(在10G上)發(fā)送的消息,中間節(jié)點(10C)上的進程可以 接收該消息(12C),修改和/或復制該消息,并將該消息的一個或多個副本(12D-F) 放回網(wǎng)絡上。于是,該消息可以圍繞網(wǎng)絡"跳躍"直到消息(12G)最終跳至預定 的消息接收器(在10G上)。已經(jīng)發(fā)現(xiàn),對于一個具有約一千萬節(jié)點的網(wǎng)絡而言, 平均的跳躍記數(shù)約為3,而最大的跳躍記數(shù)約為5.8。
為了優(yōu)化將消息從始發(fā)器送至預定消息接收器所需的跳躍數(shù),各節(jié)點可以"閑 談"。即,各節(jié)點不時地把有關它們的信息傳送到網(wǎng)絡上。例如, 一節(jié)點可以閑談 它的正常運行時間或帶寬以及它鄰居們的狀態(tài)。各節(jié)點還聽取由它們鄰居傳送的這 類信息。因此,每個節(jié)點都知道并保有與其某些對等結構有關的信息。
這一閑談使得消息始發(fā)器能夠在不具備預定消息接收器地址的特別知識的情 況下將消息送至該預定的消息接收器。例如,如果消息始發(fā)器想要把消息送至某一 設備,則該消息始發(fā)器只需讓該消息盡可能接近該設備(例如,將其尋址至可能知 道有關該預定的消息接收器某些信息,或者知道有關該預定的消息接收器某些信息 的另一節(jié)點的某些信息的另一節(jié)點等等)。因為預定的消息接收器的鄰居們知道該 預定的消息接收器,所以該消息最終將會跳躍至該預定的消息接收器。于是,可以 建立一彈性網(wǎng)絡,該網(wǎng)絡即使在例如消息始發(fā)器不知道如何直接到達預定的消息接 收方或者因為例如防火墻之類的原因無法直接到達預定的消息接收方的情況下仍 然能夠遞送消息。
在每個節(jié)點10A-H上的服務還可以維護代表一個或多個相鄰節(jié)點的本地路由選擇表14A-H。如下將更為詳細地描述該本地路由選擇表。 用于分布式數(shù)據(jù)存儲的系統(tǒng)和方法
圖3A和3B描繪了用于分布式數(shù)據(jù)存儲的一個示例性系統(tǒng)。如圖所示,這一 系統(tǒng)可以包括互連的諸如上述節(jié)點的節(jié)點網(wǎng)絡(例如,30A、 30B……30N)。每 個節(jié)點30A-N都具有在其上運行的任何數(shù)目的進程。例如,每個節(jié)點30A-N都具 有在其上運行的形成"本地高速緩存和傳輸層"20的一批一個或多個進程、形成 "流存儲層"32的一批進程、形成"組塊存儲層"34的一批進程、以及形成"碎 片存儲層"36的一批進程。還包括用于檢驗塊存儲的一批進程(未示出)。
本地高速緩存和傳輸層20可以包括存儲服務22和路由選擇服務24。存儲服 務22和路由選擇服務24可以駐留在相同節(jié)點或不同節(jié)點上。存儲服務22可以經(jīng) 由網(wǎng)絡從相同節(jié)點或不同節(jié)點中接收存儲請求(比特流)。該存儲請求可以包括存 儲某一比特流的請求。這一比特流通??梢跃哂腥我忾L度M。路由選擇服務24可 以將該比特流傳遞至一個或多個流存儲服務32A-N中的任何服務。接收該比特流 的流存儲服務可以與路由選擇服務駐留在同一節(jié)點上,也可以駐留在不同節(jié)點上。
在接收節(jié)點(32A,如圖所示)處的流存儲服務可以接收包含該比特流的一個 或多個分組(即,該比特流可以長到需要一個以上的分組來將其傳遞至流存儲服 務)。流存儲服務32A可以在本地永久存儲設備中存儲比特流用于隨后的檢索。 流存儲服務32A還可以將該比特流分成一個或多個"組塊"。每個組塊的長度可 以是m (<M)位。在一個示例性實施例中,每個組塊的長度可以是約64K位。流 存儲服務32A隨后可以將這一個或多個組塊中的每個組塊傳遞至各自的組塊存儲 服務34A-N。接收組塊的組塊存儲服務可以與流存儲服務32A —樣駐留在同一節(jié) 點上,也可以駐留在不同節(jié)點上。
在接收節(jié)點(34A,如圖所示)處的組塊存儲服務可以接收含有該組塊的一個 或多個分組并且可以在本地永久存儲設備中存儲該組塊用于隨后的檢索,組塊存儲 服務34A還可以將該組塊分成一個或多個"碎片"。每個碎片的長度可以是1 (<M) 位。在一個示例性實施例中,每個碎片的長度可以是約2K位。該組塊存儲服務34A 隨后可以將這些碎片編碼成檢驗塊并將這一個或多個檢驗塊中的每個檢驗塊傳遞 至各自的碎片存儲服務36A-N。接收碎片的碎片存儲服務可以與組塊存儲服務34A 一樣駐留在同一節(jié)點上,也可以駐留在不同節(jié)點上。
在接收節(jié)點(36A,如圖所示)處的碎片存儲服務可以接收含有該碎片的一個 或多個分組并且可以在本地永久存儲設備中存儲這些碎片用于隨后的檢索。接收節(jié)點處的碎片存儲服務36A-N可以接收含有各自檢驗塊的一個或多個分組,并且每 個服務都可以在本地永久存儲設備中存儲各自的檢驗塊用于隨后的檢索。這樣,M 位比特流就被分成多個k位檢驗塊,并且每一檢驗塊通常都被存儲在分布在這些節(jié) 點的巨大網(wǎng)絡中的不同網(wǎng)絡節(jié)點上。
優(yōu)選地,每個組塊所分成的檢驗塊個數(shù)應該多到足以確??煽繖z索的程度。 可以利用任意種已知算法來確定應該被存儲的檢驗塊個數(shù),以便有完全把握確保能 夠從檢驗塊中重建原始比特流。這些算法是本領域普通技術人員已知的,因此無需 在此詳細描述。
為了確保數(shù)據(jù)檢索系統(tǒng)(如下所述)將能夠在隨后找到所存儲的數(shù)據(jù),可以 使用尋址方案來確定存儲該數(shù)據(jù)的位置(例如,在哪些節(jié)點上)。路由選擇服務例 如可以基于該比特流本身計算該比特流將路由到的節(jié)點地址。例如,在諸如上述通 過唯一地址識別每個節(jié)點的情形中,可以基于該比特流計算散列并且參考一散列表 來確定與散列值相對應的節(jié)點地址。
比特流可以具有比特流標識符。例如,比特流可以是一文件;該文件可以具 有文件名。因此,可以考慮將該文件名作為比特流標識符。用戶(即,設法存儲該 比特流的人)可具有用戶標識符。例如,存在與該用戶相關聯(lián)的公鑰。在一個示例 性實施例中,可以將比特流標識符和用戶標識符連在一起,并計算連接串的散列。 算出的散列值可用于確定該比特流所要送至的以供上述存儲和后續(xù)存儲處理的節(jié) 點的地址。類似地,可以為由該比特流分解成的每個組塊、碎片和檢驗塊計算各自 的散列值。隨后將各組塊、碎片和檢驗塊送至其地址與算出的散列值相對應的節(jié)點。
在具有數(shù)百萬節(jié)點的網(wǎng)絡環(huán)境中,每個節(jié)點存儲并保留包括與每個節(jié)點相關 聯(lián)的各地址的散列表是不切實際的(且不想要的)。因此,在一個示例性實施例中,
在每個IOA-H上的服務可以保留代表一個或多個相鄰節(jié)點(參見圖2)的本地路由 選擇表14A-H。優(yōu)選地,每個節(jié)點都了解地址空間(即,用于唯一識別各節(jié)點的尋 址方案),但是每個節(jié)點保留僅與其少數(shù)鄰居有關的路由選擇表。這樣,散列表就 可以在各節(jié)點之間分布。
通過使用分布式散列表,每個節(jié)點都能夠了解整個地址空間的一小部分。然 而如上所述,下層結構具有消息始發(fā)器無需知曉預定接收器地址的性質(zhì)。消息始發(fā) 器可以基于要存儲的比特流(或組塊、或碎片、或塊)計算散列,并參考其局部散 列表。如果找出該地址,則該消息始發(fā)器將該消息直接送至預定接收器。要不然, 該消息始發(fā)器就把消息放在該結構上,并且該消息跳躍通過一個或多個中間物直到其找出去往預定接收器的方法。
最終,如上所述,數(shù)據(jù)(例如,檢驗塊、碎片、組塊或比特流)在目的地節(jié) 點處被留存(即,在存儲設備中永久存儲)。當數(shù)據(jù)被留存時,目的地節(jié)點可將一 消息放在該結構上以通知始發(fā)節(jié)點該數(shù)據(jù)已被留存。當始發(fā)節(jié)點接收該信息消息 時,它認可該數(shù)據(jù)已被留存。
例如,當在目的地節(jié)點上留存檢驗塊時,碎片存儲服務向曾請求存儲檢驗塊 的組塊存儲服務報告檢驗塊已被留存。類似地,當與給定組塊相關聯(lián)的所有檢驗塊 都被留存時,該組塊存儲服務可以向曾請求存儲組塊的流存儲服務報告組塊存儲己 被留存等。最后,向在本地高速緩存和傳輸層處的路由選擇服務報告該比特流己被 存儲。
為了確認存儲已適當出現(xiàn),請求存儲的服務可以在發(fā)出數(shù)據(jù)以供存儲時起始 一定時器。例如,當組塊存儲服務發(fā)出其碎片以供存儲時,該組塊存儲服務可以起 始一碎片存儲確認定時器。如果組塊存儲服務未在定時器期滿之前接收到一特定碎 片已被存儲的確認,則該組塊存儲服務認定該碎片未被存儲,并嘗試在別處存儲該 碎片。
然而應該理解,上述分布式系統(tǒng)可以具備"變更"時間的能力。也就是說, 每個節(jié)點可以具有保持該節(jié)點時間相對于絕對系統(tǒng)時間的時間管理器。這樣,在一 特定節(jié)點上的時間相對于絕對系統(tǒng)時間以及其他節(jié)點的時間幀可以減慢、停止甚至 倒流。因此,因為在請求存儲的節(jié)點處的時間可以被其上要存儲數(shù)據(jù)的節(jié)點(或中 間節(jié)點)處的時間要跑地更快,則請求存儲的節(jié)點處的定時器在該數(shù)據(jù)被留存之前 就可能到期,即使在正常的存儲進程時間只不過跑的更慢的情況下。為適應該情況, 存儲節(jié)點能周期性地將一消息送至請求存儲的節(jié)點,以通知該請求存儲的節(jié)點即使 存儲尚未完成也不應該超時。
為了檢索比特流(或者如下所述,比特流的一部分),本地高速緩存和傳輸 層20中的路由選擇服務24可以將要從數(shù)據(jù)存儲所在的節(jié)點檢索該數(shù)據(jù)的消息放在 網(wǎng)絡上。為檢索該數(shù)據(jù),路由選擇服務24可以計算與該數(shù)據(jù)相關聯(lián)的關鍵字。例 如如上述,路由選擇服務可以計算比特流標識符和用戶標識符的散列。算出的散列 值可用于確定該比特流曾被送至的以供存儲和后續(xù)存儲處理的節(jié)點的地址。
該路由選擇服務隨后可以參考路由表以確定與該散列相關聯(lián)的地址(或者最 接近的鄰居地址),并請求來自該地址的比特流。如果該比特流仍然存儲在與流存 儲服務相關聯(lián)的本地髙速緩存中,則該流存儲服務用一個或多個分組將該比特流返回給請求它的節(jié)點。如果該比特流沒有仍然存儲在與流存儲服務相關聯(lián)的本地高速 緩存中,則該流存儲服務計算與該比特流所分解成的各組塊相關聯(lián)的散列值,并且 從存儲進程期間這些組塊送至的組塊存儲服務中請求這些組塊。
如果組塊保留在與該組塊存儲服務相關聯(lián)的本地高速緩存內(nèi),則將該組塊返 回給請求它的節(jié)點。如果不是,則組塊存儲服務計算與有關該組塊的碎片相關聯(lián)的 散列,并且從其上曾存儲有這些碎片的節(jié)點中請求這些碎片。
該進程繼續(xù)一一檢索檢驗塊以重構各碎片,檢索各碎片以重構各組塊,檢索 各組塊以重構該比特流,直到該比特流被重構并被返回給請求它的節(jié)點。如上所述, 下層結構的性質(zhì)是向關鍵字的路由選擇會將消息導向其上存儲數(shù)據(jù)的節(jié)點。
如上所述,可以將比特流分成多個連續(xù)的檢驗塊(碎片、組塊)。因此,檢 索進程無需檢索整個比特流,而只需檢索檢驗塊(碎片、組塊)的一個子集。 一般 而言,檢索進程可以從該比特流內(nèi)的任何檢驗塊(碎片、組塊)處開始,并且可以 在任何其他檢驗塊(碎片、組塊)處結束。為了只檢索比特流的一部分,該檢索服 務只需確定與組成比特流那一部分的各檢驗塊(碎片、組塊)相關聯(lián)的地址,并且 請求從那些檢驗塊(碎片、組塊)中重構比特流的那一部分。因為散列進程通過散 列該組塊的在前層和序數(shù)(即,偏移量)的標識符,即較低層中的檢驗塊來起作用, 所以有可能找出任何片的散列值。
可以預料當數(shù)據(jù)被檢索時,其上留存檢驗塊的節(jié)點可能不再位于網(wǎng)絡上(例 如,該數(shù)據(jù)可能己被蓋寫、刪除或破壞;該節(jié)點在請求該數(shù)據(jù)時可能不可用;該節(jié) 點可能已從網(wǎng)絡上永久移除等)。優(yōu)選地,如上所述,每個組塊所分成的檢驗塊個 數(shù)多到足以完全確??煽繖z索的程度,即使在多個檢驗塊無法恢復的情況下。還可 以預料可以在數(shù)據(jù)存儲和檢索時段內(nèi)將一個或多個節(jié)點添加至該網(wǎng)絡。如果一個更 接近關鍵字的新節(jié)點已被引入,則由于下層結構的性質(zhì),先前存在的節(jié)點(在存儲 數(shù)據(jù)時就存在的節(jié)點)將認識到這一新節(jié)點已被引入并且該新節(jié)點更接近想要檢索 的數(shù)據(jù)。因此,該新節(jié)點可以將一條或多條合適消息"推給"該新節(jié)點,從而使得 把消息跳躍至其上存儲數(shù)據(jù)的節(jié)點的進程得以繼續(xù)。
根據(jù)本發(fā)明的一個方面, 一種分散式、對等式、分布式存儲機制可用于廣告 的存儲和高速緩存,例如在駐留于這些廣告會被瀏覽的現(xiàn)實國家或城市內(nèi)的客戶機 PC中本地存儲并高速緩存這些廣告。以此方式,就能夠向指定的區(qū)域、街區(qū)或個 人存儲不僅僅是文本或標題廣告,還能夠存儲富媒體電視型廣告(如帶立體聲的全 運動視頻)。對于數(shù)字照片與視頻的存儲和共享而言,下層的分布式存儲機制可用來在無
需請求大量冗余的情況下(諸如,Google Picasa的當前版本)實現(xiàn)照片的極高可靠 性和可用性。這一情形在市場上出現(xiàn)越來越多基于電話的照相機的情況下將變得尤 為重要。即使是本身帶有大容量本地存儲的基于電話的照相機,用戶仍會面臨照片 備份和電子共享照片的問題。這在移動電話的使用由于無線基礎設施的擴建較易而 猛增的新興市場中尤為引人關注。
對于視頻電子郵件而言,該分布式存儲模型則可用來建立適用于大型視頻消 息的可靠郵件遞送系統(tǒng)。在這一系統(tǒng)中,質(zhì)量問題會因為該系統(tǒng)不再受到發(fā)送方或 接收方的帶寬限制而得以解決。它還允許不受同時同地限制的接收。該情形對于復 雜腳本使得難以用鍵盤打出文本消息以及高文盲率使得難以發(fā)送任何種類的文本 消息的新興市場而言相當重要。
這樣,業(yè)已描述了在可擴展SOAP環(huán)境中用以分布式、分散式數(shù)據(jù)存儲與檢 索的系統(tǒng)和方法。應理解的是,這些系統(tǒng)和方法不僅分散請求用于數(shù)據(jù)存儲和檢索 的帶寬,還分散計算要求。因此,這些系統(tǒng)和方法減輕了對一個節(jié)點進行所有存儲 和檢索處理的需要,并且不再需要單個節(jié)點發(fā)送或接收所有數(shù)據(jù)。
應該進一步理解的是,雖然已結合在各附圖中描繪的某些較佳實施例對本 發(fā)明做出了描述,但是仍可以使用其他類似的實施例,并且可以在不背離本發(fā) 明的情況下對描述的實施例做出修改或添加以實踐本發(fā)明。例如,可以在存儲 數(shù)據(jù)時對其進行加密、簽名等,從而使得該檢索進程可以驗證被檢索的數(shù)據(jù)實 際上就是期望的數(shù)據(jù)。因此,本發(fā)明不應限于任何單個實施例,而應該根據(jù)所 附權利要求書來解釋其寬度和范圍。
權利要求
1. 一種用于分散式、分布式數(shù)據(jù)存儲的基于網(wǎng)絡的系統(tǒng),所述系統(tǒng)包括本地高速緩存和傳輸層,用于接收存儲比特流的請求,并且將含有所述比特流的流存儲消息路由到所述網(wǎng)絡上;以及流存儲層,用于接收所述流存儲消息,將所述比特流分成多個組塊,并且將多個組塊存儲消息發(fā)送到所述網(wǎng)絡上,每個所述組塊存儲消息分別含有所述多個組塊之一;其中所述組塊中的每一個組塊分別被存儲在第一組網(wǎng)絡節(jié)點之一上。
2. 如權利要求l所述的系統(tǒng),其特征在于,還包括組塊存儲層,用于接收所述組塊存儲消息,將每個組塊分別分成多個碎片, 將所述碎片編碼成檢驗塊并且將多個碎片存儲消息發(fā)送到所述網(wǎng)絡上,每個所 述碎片存儲消息分別含有所述多個碎片之一;其中所述碎片中的每一碎片分別被存儲在第二組網(wǎng)絡節(jié)點之一上。
3. 如權利要求2所述的系統(tǒng),其特征在于,還包括碎片存儲層,用亍接收所述碎片存儲消息,并且將所述檢驗塊中的每-個 檢驗塊存儲在第三組網(wǎng)絡節(jié)點上。
4. 如權利要求3所述的系統(tǒng),其特征在F,所述比特流被存儲在與所述 流存儲層相關聯(lián)的網(wǎng)絡節(jié)點上。
5. 如權利要求2所述的系統(tǒng),其特征在于,所述每個碎片被編碼成的檢驗塊個數(shù)足以在預定的信任程度內(nèi)確保對所述碎片的檢索。
6. 如權利要求1所述的系統(tǒng),其特征在于,所述本地高速緩存和傳輸層 基于所述比特流計算散列值,并且其中所述散列值用于確定一地址,所述地址 與所述流存儲消息想要發(fā)送至的節(jié)點相關聯(lián)。
7. 如權利要求1所述的系統(tǒng),其特征在于,所述本地高速緩存和傳輸層 從所述流存儲層中接收所述比特流己被存儲的確認。
8. 如權利要求7所述的系統(tǒng),其特征在于,所述本地高速緩存和傳輸層 在所述比特流被發(fā)出用于存儲時起始-一定時器,并且如果所述本地高速緩存和 傳輸層在所述定時器期滿之前沒有從所述流存儲層中接收到所述比特流已被 存儲的確認,所述本地高速緩存和傳輸傳輸層就嘗試在一個不同的節(jié)點上存儲 所述比特流。
9. 如權利要求8所述的系統(tǒng),其特征在于,每個節(jié)點都具有相對于絕對系 統(tǒng)時間保持本節(jié)點時間的時間管理器,并且其中所述流存儲層報告所述本地高速緩 存和傳輸層不要超時,因為所述比特流仍然在正被存儲的進程中。
10. 如權利要求6所述的系統(tǒng),其特征在于,每個節(jié)點保有代表一個或多個相鄰節(jié)點的本地路由選擇表,所述本地路由選擇表中的至少一個含有用來確 定與所述流存儲消息預定發(fā)送到的所述節(jié)點相關聯(lián)的地址的所述散列值。
11. 如權利要求l所述的系統(tǒng),其特征在于,所述組塊存儲消息中的至少 一個通過在所述網(wǎng)絡中經(jīng)一個或多個中間網(wǎng)絡節(jié)點的跳躍而被遞送至預定的 消息接收器。
12. —種分散式、對等式、分布式存儲系統(tǒng),所述系統(tǒng)包括 第一批服務,用于接收存儲數(shù)字廣告的請求,并將含有與所述數(shù)字廣告相關聯(lián)的比特流的流存儲消息路由到所述網(wǎng)絡上;以及第二批服務,用于接收所述流存儲消息,將所述比特流分成多個檢驗塊, 并且將所述檢驗塊分別分布至多個網(wǎng)絡節(jié)點之一以供存儲。
13. 如權利要求12所述的系統(tǒng),其特征在于,所述網(wǎng)絡節(jié)點的至少一個包括駐留在要瀏覽所述廣告的本地地理位置范圍內(nèi)的存儲設備中。
14. 如權利要求12所述的系統(tǒng),其特征在于,所述廣告是文本廣告、標 題廣告、以及包括全運動視頻和立體聲音頻的富媒體廣告中的至少一種。
15. 如權利要求12所述的系統(tǒng),其特征在于,所述廣告定位于特定的地 理區(qū)域或者面向特定的個人。
16. —種分散式、對等式、分布式存儲系統(tǒng),所述系統(tǒng)包括 第一批服務,用于接收存儲數(shù)字照片和數(shù)字視頻中至少一個的請求,并將含有與所述數(shù)字照片或數(shù)字視頻相關聯(lián)的比特流的流存儲消息路由到所述網(wǎng) 絡上;以及第二批服務,用于接收所述流存儲消息,將所述比特流分成多個檢驗塊, 并且將所述檢驗塊分別分布至多個網(wǎng)絡節(jié)點之一以供存儲。
17. 如權利要求16所述的系統(tǒng),其特征在于,所述數(shù)字照片或數(shù)字視頻 來源于基于電話的照相機。
18. 如權利要求17所述的系統(tǒng),其特征在于,所述基于電話的照相機是 基于無線電話的照相機。
19. 一種分散式、對等式、分布式存儲系統(tǒng),所述系統(tǒng)包括第一批服務,用于接收存儲視頻電子郵件消息的請求,并將含有與所述視 頻電子郵件消息相關聯(lián)的比特流的流存儲消息路由到所述網(wǎng)絡上;以及第二批服務,用于接收所述流存儲消息,將所述比特流分成多個檢驗塊, 并且將所述檢驗塊分別分布至多個網(wǎng)絡節(jié)點之一以供存儲。
全文摘要
公開了在可擴展SOAP環(huán)境中用于分布式、分散式數(shù)據(jù)存儲與檢索的系統(tǒng)和方法。這些系統(tǒng)和方法不僅分散請求用于數(shù)據(jù)存儲和檢索的帶寬,還分散計算環(huán)境。因此,這些系統(tǒng)和方法減輕了對一個節(jié)點進行所有存儲和檢索處理的需要,并且不再需要單個節(jié)點發(fā)送或接收所有數(shù)據(jù)。
文檔編號G06F17/30GK101427246SQ200680013658
公開日2009年5月6日 申請日期2006年3月9日 優(yōu)先權日2005年4月20日
發(fā)明者G·M·摩爾, I·塞爾瑞 申請人:微軟公司