国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      大有效負載文件的分段的實時并行交付方法和設備的制作方法

      文檔序號:6475859閱讀:308來源:國知局
      專利名稱:大有效負載文件的分段的實時并行交付方法和設備的制作方法
      技術(shù)領域
      本發(fā)明涉及一種用于大有效負載文件的分段的實時并行交付的系統(tǒng)和方法。特別地,本發(fā)明提供一種用于存儲和向遠程用戶發(fā)送例如包含諸如音頻、視頻和/或其他數(shù)據(jù)的媒體內(nèi)容的文件的有效體系結(jié)構(gòu)和技術(shù)。
      背景技術(shù)
      在電信網(wǎng)絡通信和交換中的進展正以極大的速度向前推進。然而,在位置之間傳送大的文件(例如,諸如音頻和/或視頻文件的媒體內(nèi)容)仍然是會花費相當多的時間的一項任務。例如,在向一個用戶交付大的媒體文件、例如電影時,在可以開始使用該文件(例如,觀看電影)之前,傳送時間可以在很多分鐘到數(shù)小時的數(shù)量級上。
      用于避免在向用戶展示媒體內(nèi)容中的這種延遲的一種常規(guī)技術(shù)是在用戶“附近”的網(wǎng)絡中的各個位置復制該內(nèi)容的拷貝。雖然這可以解決延遲問題,但它是一種昂貴的解決方案,因為這需要過多的存儲空間來存儲該媒體文件的多個拷貝。它還需要一個媒體管理應用程序來供操作員管理內(nèi)容的復制拷貝。存儲器管理員必須仔細地管理存儲器資源,以確保各個地點不會充滿。如果一個地點的存儲器用盡,則將新內(nèi)容復制到該地點的嘗試將失敗。
      其他已知的技術(shù)包括應用級代理超高速緩存,例如網(wǎng)絡超高速緩存和流型超高速緩存。這種解決方案不需要部署難以管理的數(shù)目的存儲器。然而,只有當期望的內(nèi)容被超高速緩存在一個在申請用戶附近的位置時該解決方案才起作用。如果用戶要求未被超高速緩存的內(nèi)容,則該內(nèi)容必須從另一個位置中檢索,而這常常帶有不可接受的延遲。
      常規(guī)內(nèi)容交付系統(tǒng)的另一個問題是,每個系統(tǒng)處理器或節(jié)點必須處理數(shù)個同時進行的進程或線程。這些多個線程和進程常常需要對存儲在文件中的共享數(shù)據(jù)進行原子訪問。如果這些線程或進程在一單個機器上運行,則可以使用由操作系統(tǒng)提供的鎖定機制、例如互斥通信或旗語來實現(xiàn)原子性。然而,這樣的鎖定機制在一簇機器之間更加難以實現(xiàn)。此外,在使用網(wǎng)絡文件系統(tǒng)(NFS)來在一簇機器之間共享文件時,文件鎖定不可靠。對這個問題的一種解決方案是開發(fā)一個鎖定管理器來許可對其他進程或線程的鎖定。然而,設計一個可以處理故障(failover)的鎖定管理器是困難的。由于鎖定管理器必須記住它的客戶,所以重構(gòu)在故障之前的狀態(tài)可能是一個挑戰(zhàn)。
      所需要的是一種克服了已知系統(tǒng)的局限性的用于分布大文件的系統(tǒng)和方法。

      發(fā)明內(nèi)容
      本發(fā)明是一種處理大文件在諸如全球因特網(wǎng)的網(wǎng)絡上的分布的系統(tǒng)、方法和計算機程序產(chǎn)品。本發(fā)明的可伸縮內(nèi)容交付網(wǎng)絡(SCDN)將多個分布中心或通信站放在網(wǎng)絡上。并行下載機制確保一個被請求的文件及時地存在于一個通信站上以供用戶消費。這個機制用于為可以用于交付大文件、例如在視頻點播中遇到的那些文件的可讀寫綜合網(wǎng)絡文件系統(tǒng)解決內(nèi)容超高速緩存和存儲問題,這個問題通常被認為是工業(yè)上的一個難解決的問題。
      本發(fā)明的并行下載機制根據(jù)其中包含的數(shù)據(jù)的性質(zhì)將文件分成被稱為磁道(track)的更小單位。磁道被進一步分成被稱為塊文件的更小的相同尺寸的單位。這個劃分建立了并行下載的基礎。在并行下載中,網(wǎng)絡中的一個通信站從數(shù)個其他通信站并行地并以不鄰接的方式下載塊文件,從而實現(xiàn)高性能。另外,通信站從具有更高網(wǎng)絡帶寬的通信站下載較多的塊文件,從具有低網(wǎng)絡帶寬的通信站下載較少的(或不下載)塊文件。對哪些通信站具有高或低網(wǎng)絡帶寬的判定在運行時動態(tài)地完成。
      并行下載中的并行處理在兩級中實現(xiàn)進程級和線程級。在每個分布中心,多個分布服務器負責取出每個通信站中的隨選數(shù)據(jù)。一簇分布服務器存在于任一通信站中并共享下載一個文件的工作負荷,執(zhí)行進程級并行處理。此外,一單個分布服務器產(chǎn)生出數(shù)個線程來取出塊文件,執(zhí)行線程級并行處理。
      并行下載中涉及的各個線程和進程需要原子訪問存儲在共享文件中的元數(shù)據(jù)。序列服務器為多個線程或進程提供一個無鎖定(lock-free)機制來原子訪問數(shù)據(jù)。它允許客戶機獲得對數(shù)據(jù)的順序訪問,或弄清楚序列是否已經(jīng)被違反,以便可以重試其操作或采取校正行動。序列服務器通過將一個隨機“序列數(shù)”與每個共享數(shù)據(jù)項相關來實現(xiàn)這一點。共享數(shù)據(jù)項是一個單元或塊存儲器索引或標志,指示所請求的塊文件是被下載、未下載還是目前正在下載。當客戶機向序列服務器請求共享數(shù)據(jù)項的值并表明其修改該值的意圖時,序列服務器遞增與該數(shù)據(jù)相關的序列數(shù),并將數(shù)據(jù)以及(遞增的)序列數(shù)返回客戶機??蛻魴C修改數(shù)據(jù)值(即,標志),并將其與序列數(shù)一起返回給序列服務器。序列服務器將返回的序列數(shù)與它目前所具有的該數(shù)據(jù)項的序列數(shù)進行比較。如果數(shù)不同,意味著別的客戶機已經(jīng)同時請求了數(shù)據(jù)項的值并且?guī)в行薷乃囊鈭D。換句話說,第一客戶機的序列已經(jīng)被違反在它試圖執(zhí)行一個讀-修改-寫操作時,它不具有對該數(shù)據(jù)的獨占訪問。序列服務器因此拒絕來自第一客戶機的更新請求,并通知客戶機該序列違反。第一客戶機然后必須在需要時采取校正行動。根據(jù)客戶機之間的上下文和約定,它或者通過再次請求一個新的讀和一個新的序列數(shù)來重試操作,或者它讓另一個客戶機執(zhí)行該操作。
      本發(fā)明的系統(tǒng)包括網(wǎng)絡上的多個分布中心或通信站。每個分布中心包括一個具有多個分布服務器的分布服務器簇、一個負載均衡器和一個序列服務器。分布中心進一步包括一個控制單元、一個與一個或多個應用服務器接口的虛擬文件控制系統(tǒng)簇、一個存儲系統(tǒng)、一個存儲開關和一個通信站內(nèi)控制相關開關。
      本發(fā)明在分布中心只存儲文件的一部分。然后,當請求一個文件時,可以采用文件的本地存儲的部分立即開始交付。在文件的本地存儲的部分正在被交付時,分布中心可以從一個或多個其他分布中心取出文件的剩余部分。然后可以只響應于用戶請求來匯編該文件。這減少了所需要的本地文件存儲量,因為文件在每個分布站點都未被反射。
      依據(jù)本發(fā)明,匯編文件的方法包括如下步驟基于一個請求來確定哪些內(nèi)容組分(component)(即,塊文件)是匯編文件所必需的;如果所有內(nèi)容組分在第一節(jié)點都不存在,發(fā)送一個搜索請求以確定哪些其他節(jié)點具有內(nèi)容組分;從其他節(jié)點接收對搜索請求的回答,來自一個響應節(jié)點的每個回答指示哪些內(nèi)容組分可從響應節(jié)點得到;確定包括從其下載內(nèi)容組分的至少一個節(jié)點的一個期望的集合;從期望的集合下載內(nèi)容組分;以及,從下載的內(nèi)容組分來匯編文件。要下載的內(nèi)容組分或塊文件的數(shù)量至少部分地基于與文件相關聯(lián)的元數(shù)據(jù)來確定。
      當一個分布中心從其他分布中心請求塊文件時,采用一個分層樹結(jié)構(gòu)在分布中心之間有效地傳送數(shù)據(jù),同時限制請求必須被發(fā)送到的節(jié)點的數(shù)量。例如,分布中心的屬性對于其相鄰分布中心是已知的。類似地,任何文件請求包括被請求文件的分布標準。這允許每個分布中心比較屬性并只將文件請求通過樹結(jié)構(gòu)發(fā)送給適當?shù)姆植贾行摹@?,具有包括“只限美國”的分布標準的文件不需要被發(fā)送到位于歐洲并具有屬性“歐洲”的分布中心。
      本發(fā)明還包括一個包含計算機可用介質(zhì)的計算機程序產(chǎn)品,在介質(zhì)中包含有計算機可讀程序代碼裝置(means),用于使一個應用程序在計算機上執(zhí)行,以響應于從用戶發(fā)送給具有多個相連節(jié)點的網(wǎng)絡中的第一節(jié)點的請求來匯編一個文件。計算機可讀程序代碼裝置包括第一計算機可讀程序代碼裝置,用于使計算機基于請求來確定哪些內(nèi)容組分是匯編文件所必需的;第二計算機可讀程序代碼裝置,用于在所有內(nèi)容組分在第一節(jié)點上都不存在時,使計算機發(fā)送一個搜索請求以確定哪些其他節(jié)點具有內(nèi)容組分;第三計算機可讀程序代碼裝置,用于使計算機從其他節(jié)點接收對搜索請求的回答,來自一個響應節(jié)點的每個回答指示哪些內(nèi)容組分可從響應節(jié)點得到;第四計算機可讀程序代碼裝置,用于使計算機確定包括從其下載內(nèi)容組分的至少一個節(jié)點的一個期望的集合;第五計算機可讀程序代碼裝置,用于使計算機從期望的集合下載內(nèi)容組分;以及第六計算機可讀程序代碼裝置,用于使計算機從下載的內(nèi)容組分來匯編文件。
      本發(fā)明的優(yōu)點包括多個線程或進程通過并行下載文件的一部分來以高性能下載一個文件的能力、以及在不同的機器上運行的多個線程或進程在其之間同步并行下載的能力。本發(fā)明的這些和其他特征和優(yōu)點將在下面參考附圖詳細描述。


      在附圖中,類似的標號指示相同或大致相同的單元。此外,標號最左邊的數(shù)位指示首先使用該標號的附圖的編號。附圖顯示了本發(fā)明,并與說明書一起進一步用于解釋本發(fā)明的原理,并使相關領域的技術(shù)人員能夠作出和使用本發(fā)明。在附圖中圖1顯示了依據(jù)本發(fā)明的一個實施例的可伸縮內(nèi)容交付網(wǎng)絡(SCDN)100;圖2顯示了依據(jù)本發(fā)明的一個實施例來安排網(wǎng)絡100的節(jié)點的分層樹結(jié)構(gòu);圖3是依據(jù)本發(fā)明的一個實施例的樣本屬性位圖;圖4依據(jù)本發(fā)明的一個實施例的分布中心114的方框圖;圖5是依據(jù)本發(fā)明的一個實施例的分布中心114的更詳細的方框圖;圖6是顯示依據(jù)本發(fā)明的一個實施例的分布服務器簇406的方框圖;圖7顯示了依據(jù)本發(fā)明的一個實施例的文件用塊文件在網(wǎng)絡100中的多個分布中心114之間的分布;圖8顯示了依據(jù)本發(fā)明的一個實施例的塊文件在網(wǎng)絡100中的多個分布中心114之間的管理;圖9顯示了依據(jù)本發(fā)明的一個實施例搜索回答是如何被負載均衡到分布中心114中的不同分布服務器504的;圖10顯示了依據(jù)本發(fā)明的一個實施例如何由分布服務器504執(zhí)行并行下載的;圖11顯示了依據(jù)本發(fā)明的一個實施例的塊文件下載的時線;圖12是顯示依據(jù)本發(fā)明的一個實施例的用于檢索一個有效負載文件的塊文件以供重新匯編的步驟的流程圖;圖13是顯示依據(jù)本發(fā)明的一個實施例的序列服務器的操作的流程圖;以及圖14是提供本發(fā)明的一個代表性的實施環(huán)境的計算機系統(tǒng)1400的方框圖。
      具體實施例方式
      本發(fā)明針對一種用于存儲和分布大文件的方法和系統(tǒng)。特別地,本發(fā)明提供了用于處理、存儲和向用戶供應諸如媒體內(nèi)容的文件以用于教育、娛樂、商業(yè)或任何其他目的的高效的體系結(jié)構(gòu)和技術(shù)。依據(jù)本發(fā)明的方法、系統(tǒng)和計算機程序產(chǎn)品創(chuàng)建了一個將目錄展示和數(shù)據(jù)存儲分離開的先進的可讀寫綜合網(wǎng)絡文件系統(tǒng)。該方法和系統(tǒng)包括在不顯著延遲向用戶展示內(nèi)容的情況下文件的劃分、分布和重新匯編。本發(fā)明還包括綜合文件系統(tǒng)的創(chuàng)建和包括卷、目錄和文件的文件系統(tǒng)目標的分布。
      本發(fā)明的一個實施例提供了一種用于在計算機網(wǎng)絡(例如,諸如全球因特網(wǎng)的因特網(wǎng))中劃分和分布文件(稱為“有效負載”或“內(nèi)容”)改進的機制。本發(fā)明的另一個實施例提供了一種創(chuàng)建多個內(nèi)容節(jié)點(也稱為通信站或分布中心)的綜合文件系統(tǒng)視圖的方法。本發(fā)明的另一個實施例提供了一種分布、復制和同步諸如卷、目錄和文件的文件系統(tǒng)目標的更新的方法。在下面的描述中,闡述了許多具體細節(jié)以提供本發(fā)明的實施例的更全面的描述。這些描述并不意味著限制。例如,這里參考了因特網(wǎng)協(xié)議和UNIX,但可以使用任何包協(xié)議并且可以使用任何操作系統(tǒng)。
      術(shù)語“文件”在這里用于意味著一個數(shù)字數(shù)據(jù)或信息集合。對于術(shù)語“文件”,想要其既包括一個完全的文件,也包括一個文件的任何期望的部分。實例文件包括字處理文檔、工作簿、數(shù)據(jù)庫、電子表格、數(shù)字圖象(例如,JPEG、TIF、GIF、位圖等等)、電影(例如,MPEG文件)、音樂(例如,MP3和WAV文件)等等以及其任何部分。
      本發(fā)明以訪問文件系統(tǒng)目標的方式提供了最終用戶系統(tǒng),而不使由最終用戶用來發(fā)送數(shù)據(jù)的網(wǎng)絡超負載。在一個實施例中,系統(tǒng)通過將文件分解成多個部分(段或磁道)并將這些部分和其他文件系統(tǒng)目標存儲在遍及網(wǎng)絡分布的位置(例如,節(jié)點)中來完成這一點。利用一種提供文件系統(tǒng)目標和數(shù)據(jù)部分的智能管理的流程優(yōu)化技術(shù)來分布遍及網(wǎng)絡存儲的文件各部分和其他文件系統(tǒng)目標。這樣,文件系統(tǒng)目標和文件各部分被存儲在使將內(nèi)容交付給最終用戶系統(tǒng)所花時間最少的位置中。這些位置使與將數(shù)據(jù)交付給最終用戶系統(tǒng)相關的等待時間最少,在這里被稱為網(wǎng)絡的“邊緣”。
      在實現(xiàn)本發(fā)明的各個方面的網(wǎng)絡的邊緣的每個節(jié)點被配置為,當文件的各部分實際上存儲在遍及網(wǎng)絡的其他節(jié)點上時,看起來該節(jié)點好像具有本地存儲的文件。這在不消耗系統(tǒng)資源的情況下極大地增大了每個網(wǎng)絡節(jié)點的虛擬存儲容量。節(jié)點以使數(shù)據(jù)傳送效率最大同時使帶寬消耗最小的方式分布和復制數(shù)據(jù)塊和其他文件系統(tǒng)目標。當最終用戶系統(tǒng)發(fā)出對內(nèi)容(例如,一個文件)的請求時,將該請求發(fā)送給最近的節(jié)點,該節(jié)點以需要最少時間和成本的方式從其他節(jié)點引入所請求內(nèi)容的非常駐數(shù)據(jù)。最終結(jié)果是每個網(wǎng)絡節(jié)點可以到達眾多的或所有的文件系統(tǒng)目標(卷、目錄和文件),而不必在本地存儲和保持這些目標中的每一個的全部內(nèi)容。
      本發(fā)明提供了用于劃分一個文件以供存儲以及然后重構(gòu)該文件以供交付的高效方法和系統(tǒng)。劃分一個大文件的進程被稱為“程序分塊”,將在下面詳細描述。本發(fā)明還提供了一種從多個節(jié)點生成一個綜合文件系統(tǒng)的方法。本發(fā)明進一步提供了一種在網(wǎng)絡節(jié)點之間分布、復制和同步文件系統(tǒng)目標的方法,并提供了一種用于群集一組虛擬文件系統(tǒng)的方法和系統(tǒng)。一組虛擬文件系統(tǒng)的這種群集通過負載均衡提高了可靠性和可用性,同時增大了I/O帶寬。
      并行下載是在本發(fā)明的可伸縮內(nèi)容交付網(wǎng)絡(SCDN)中采用的機制,以確保一個被要求的文件及時地存在于通信站中以供用戶消費。這個機制用于解決用于交付諸如那些在視頻點播中遇到的大文件的內(nèi)容超高速緩存和存儲問題。
      在網(wǎng)絡中,根據(jù)其中包含的數(shù)據(jù)性質(zhì)將文件分成被稱為“磁道”的更小的單位。磁道進一步被劃分成被稱為“塊文件”的更小的相同尺寸的單位。術(shù)語“內(nèi)容組分”在這里用于意味著一個更大文件的一個或更多塊文件。這個劃分建立了在兩級實現(xiàn)的并行下載的基礎進程級和線程級。注意,每個進程可以包括多個線程。在網(wǎng)絡中,被稱為分布服務器的部件負責取出每個通信站中的隨選數(shù)據(jù)。一個分布服務器與其他分布服務器共同存在于其通信站中以共享取一個特定磁道的工作負載。通信站中的所有分布服務器進行合作以便一起取出塊文件,執(zhí)行一個進程級并行處理。此外,一單個分布服務器產(chǎn)生出數(shù)個線程來取出塊文件,執(zhí)行線程級并行處理。
      I.概述圖1提供了依據(jù)本發(fā)明的一個實施例的用于交付大有效負載的可伸縮內(nèi)容交付網(wǎng)絡(SCDN)100的視圖。網(wǎng)絡100可以是一個諸如因特網(wǎng)的網(wǎng)絡,在概念上包括一個網(wǎng)絡核心102(即,主干)、范圍在距離核心102“近”和“遠”之間的中間網(wǎng)絡段104?!敖焙汀斑h”與距離有關,想要指示距離核心102的相對路徑等待時間(分別為短或長),這種等待時間一般取決于被橫穿以到達形成網(wǎng)絡100的核心102的高速主干并通過其傳遞大量網(wǎng)絡通信的中間網(wǎng)絡集線器(hub)(例如,開關、路由器等等)。注意,每個中間網(wǎng)絡集線器在將通信傳送到下一網(wǎng)絡集線器之前可以執(zhí)行一些有限的處理,這增加了等待時間。出于例示目的,段104A和104C被指示為距離核心102遠,而段104B被指示為距離核心102近。
      網(wǎng)絡100包括多個內(nèi)容提供者客戶機(CPC)106、多個最終用戶客戶機(EUC)108和一個或更多內(nèi)容管理服務器(CMS)110,所有這些都位于網(wǎng)絡邊緣112之外。這種結(jié)構(gòu)是例示性的而非限制性的。例如,內(nèi)容提供者客戶機106、最終用戶客戶機108和/或內(nèi)容管理服務器110可以位于網(wǎng)絡中的任何地方,包括網(wǎng)絡邊緣之外、在網(wǎng)絡邊緣上或在網(wǎng)絡內(nèi)的任何位置、例如網(wǎng)絡段104或核心102內(nèi)。
      多個分布中心或通信站114放在遍及網(wǎng)絡100的各個位置。分布中心114負責管理內(nèi)容交付。
      一般地,每個內(nèi)容提供者客戶機106可以被連接(或指定)到一個內(nèi)容管理服務器110,該內(nèi)容管理服務器110依次連接到一個指定的分布中心114。或者,內(nèi)容提供者客戶機106可以連接(或指定)到任何分布中心114。在這種環(huán)境中,可以使用由網(wǎng)絡100支持的任何連接。這種連接的例子包括物理鏈路(在任何有線或無線媒體上)、數(shù)據(jù)鏈路、邏輯鏈路、永久虛擬電路、交換虛擬電路、面向連接的協(xié)議、無連接協(xié)議或任何其他直接或間接網(wǎng)絡連接和/或協(xié)議及其組合,但不限于這些。
      內(nèi)容提供者客戶機106可以是一個用于管理網(wǎng)絡中的內(nèi)容的應用程序,或者它可以是一個連接到分布中心114中的虛擬文件控制系統(tǒng)(未顯示)的一般的文件系統(tǒng)客戶機。內(nèi)容所有者通過一個相應的內(nèi)容提供者客戶機106創(chuàng)建、重命名、移動、刪除和管理卷和目錄。內(nèi)容所有者還通過他或她的內(nèi)容提供者客戶機106上載、讀取、更新和管理網(wǎng)絡100中的文件。最終用戶客戶機108提供最終用戶對網(wǎng)絡100中的文件的內(nèi)容訪問。例如,最終用戶客戶機108可以是在一個最終用戶的本地設備上運行的任何類型的瀏覽器(包括但不限于網(wǎng)絡瀏覽器或任何文件系統(tǒng)瀏覽器)??梢允褂弥С肿罱K用戶客戶機108的任何類型的最終用戶設備,包括但不限于計算機(例如,個人計算機、工作站或服務器)、機頂盒、電視機、電話或手持計算設備(例如,管理器、個人數(shù)據(jù)助手、掌上設備等等)網(wǎng)絡邊緣112可以遠離網(wǎng)絡核心102。然而,核心和邊緣之間的距離(即,路徑等待時間)可以不是均一的,對于一給定內(nèi)容提供者客戶機106或最終用戶客戶機108可以變化相當大。本發(fā)明的一個實施例為各個最終用戶客戶機108放置了用于在網(wǎng)絡100的邊緣112保留有效負載從而減少和消除等待時間的多個分布中心(DC)114A-114G。將來自內(nèi)容所有者的有效負載內(nèi)容從一個分布中心114推向在網(wǎng)絡100的邊緣112的其他分布中心114。從包含所期望內(nèi)容的最近的分布中心114(經(jīng)由網(wǎng)絡文件系統(tǒng)客戶機或應用服務器)為一個尋求訪問特定有效負載內(nèi)容的最終用戶提供服務。由路徑因素引起的等待時間被最小化,因為內(nèi)容經(jīng)由位于網(wǎng)絡邊緣112的多個分布中心114被分布給最終用戶(例如,一個相應的最終用戶客戶機108)。因此,分布包含從一個內(nèi)容提供者客戶機106獲得任何文件系統(tǒng)目標和在地理上將這些目標或每個目標的各部分放在通常接近于網(wǎng)絡邊緣定位的分布中心114。
      圖1的網(wǎng)絡100中的分布中心114A-114G例如以如圖2所示的樹的形式虛擬布置。這個虛擬樹的布置主要用于控制信息和信號在網(wǎng)絡100的節(jié)點(即,分布中心114)之間的通信。數(shù)據(jù)下載可以從具有期望的數(shù)據(jù)的網(wǎng)絡中的任何節(jié)點、最好是從最近的節(jié)點(在網(wǎng)絡距離上)來執(zhí)行。圖2的節(jié)點A到I代表多個分布中心114(例如,分布中心114A-114G加上兩個其他的節(jié)點H和I)。節(jié)點以邏輯順序安排。例如,假設節(jié)點B代表歐洲-英國,則歐洲中的邏輯子節(jié)點可以為歐洲-法國(例如,節(jié)點D)和歐洲-德國(例如,節(jié)點E),歐洲-法國的子節(jié)點可以是歐洲-意大利(例如,節(jié)點H)。在這個例子中,樹的左邊代表歐洲,右邊代表亞洲。節(jié)點A是根節(jié)點,可以代表一個中央控制通信站(例如,圖1中的中央控制通信站114A)。
      如下所述,當一個分布中心114從其他分布中心114請求塊文件時,采用分層樹結(jié)構(gòu)來在分布中心之間高效地傳送數(shù)據(jù),同時限制請求所必須發(fā)送到的節(jié)點的數(shù)量。例如,分布中心的屬性(例如,位置、訪問權(quán)限、樹中的父和子節(jié)點、一般內(nèi)容等等)對于所有其他分布中心是已知的。類似地,任何文件請求包括所請求文件的分布標準(例如,文件類型,截止時間,等等)。這允許每個分布中心來比較屬性并只將文件請求通過樹結(jié)構(gòu)發(fā)送給適當?shù)姆植贾行?。例如,一個具有包括“只限美國”的分布標準的文件不需要被發(fā)送給位于歐洲的并具有屬性“歐洲”的分布中心。
      在一個或多個實施例中,樹中的每個節(jié)點具有一個代表節(jié)點名字的唯一的屬性集。一個節(jié)點的屬性集被存儲在節(jié)點中,并且可以在任何方便的數(shù)據(jù)結(jié)構(gòu)中表示。例如,屬性集可以表示為一個可變位圖(位圖是一個目標、例如一個數(shù)的二進制表示)。每個節(jié)點還包含節(jié)點的子、孫、曾孫等(即,從作為根節(jié)點的該節(jié)點發(fā)出的所有節(jié)點-直系子代)中的每一個的屬性集的表示。這個表示被稱為“屬性的積累(rollup)集”,可以使用任何方便的數(shù)據(jù)結(jié)構(gòu)來存儲。因此,一個節(jié)點的積累集是其子節(jié)點的積累集的表示。例如,可以使用作為所有節(jié)點的子節(jié)點的積累屬性(rolled up)位圖的組合的“積累位圖”。“積累位圖”可以被定義為節(jié)點的子節(jié)點的積累屬性的“二進制OR”(又稱逐位OR)。
      圖3是依據(jù)本發(fā)明的一個實施例的屬性位圖和積累位圖的圖示。出于圖示的目的,位圖300、310、320、330、340和350使用16位,但由于位圖是可變的,所以它們可以根據(jù)需要而變化,以識別每個節(jié)點并提供其他必需的信息。位圖300代表圖2的節(jié)點B的屬性集,并且,作為其標識,使其位1、4和13設置為1以及使所有其他位設置為0。例如,將位1設置為表明節(jié)點B是A的子節(jié)點,將位4設置為代表歐洲,將位13設置為代表英國。位圖310代表圖2的節(jié)點D、B的一個子節(jié)點的屬性集,并使其位1、4和14設置為1,使其所有其他位設置為0。位14例如代表法國。位圖320代表圖2的節(jié)點E、也是B的一個子節(jié)點的屬性集,并使其位1、4和15設置為1,使其所有其他位設置為0。位15例如可以代表德國。位圖330代表圖2的節(jié)點H、D的一個子節(jié)點的屬性集,并使其位1、4和16設置為1,使其所有其他位設置為0。位16例如可以代表意大利。如前面所討論的,節(jié)點D的積累位圖(例如,340)將是節(jié)點H的屬性位圖(因為H不具有任何子節(jié)點),節(jié)點B的積累位圖(例如,350)將是位圖310、320和330的二進制OR。二進制OR的結(jié)果是在位圖310、320和330中設置的所有位也在積累位圖350中設置(即,位1、4、14、15和16)。
      內(nèi)容管理服務器110可以連接到樹上的任何節(jié)點。因此,雖然內(nèi)容管理服務器110和分布中心114典型地將不設在同一位置,但內(nèi)容管理服務器110給內(nèi)容所有者一個將文件系統(tǒng)目標引入分布中心114并管理網(wǎng)絡100中的文件系統(tǒng)目標的載體(vehicle)。內(nèi)容管理客戶機106可以直接連接到一個分布中心114以執(zhí)行由內(nèi)容管理服務器110提供的類似的功能。在一個實施例中,內(nèi)容管理服務器110是處理內(nèi)容所有者的文件系統(tǒng)目標以供在網(wǎng)絡100中分布的計算機。在另一個實施例中,內(nèi)容管理服務器110例如可以是允許網(wǎng)絡100中的文件系統(tǒng)目標的管理、分布、訪問和控制的工具(例如,與機器無關的目標)的子集;因此,這些工具可以被嵌入內(nèi)容所有者的計算機中來用于網(wǎng)絡中的大有效負載文件的處理和分布。在又一個實施例中,內(nèi)容提供者客戶機106可以是一個直接連接到分布中心114的虛擬文件控制系統(tǒng)的標準文件系統(tǒng)客戶機,同時處理工具可以嵌入到虛擬文件控制系統(tǒng)中。在內(nèi)容提供者客戶機106將一個文件系統(tǒng)目標加載到內(nèi)容管理服務器110之后,內(nèi)容管理服務器110可以處理該目標并將其發(fā)送給分布中心114。
      II.分布中心圖4和5顯示了一個代表性的分布中心114。注意,分布中心114也被稱為通信站(STN)或數(shù)據(jù)中心。分布中心114包括分布服務器簇(DSC)406、應用服務器簇(ASC)408、控制單元(CU)402、共享存儲系統(tǒng)414、存儲開關412和通信站內(nèi)控制相關開關410??刂茊卧?02包括一個本地存儲器404。分布服務器簇406利用通信鏈路407和411通過存儲開關412與存儲系統(tǒng)414進行通信。應用服務器簇408使用通信鏈路409和413通過存儲開關412與存儲系統(tǒng)414進行通信??刂茊卧?02、分布服務器簇406和應用服務器簇408都通過與存儲開關412通信的通信站內(nèi)控制相關開關410進行通信。
      A.應用服務器簇如圖5所示,應用服務器簇408包括負載均衡和路由選擇塊506、多個應用服務器508、負載均衡和路由選擇塊510和虛擬文件控制系統(tǒng)(VFCS)服務器512。在第一實施例中,應用服務器508實際上不是分布中心114的一部分,僅僅以這種方式例示以便于解釋。在這個實施例中,應用服務器508典型地與數(shù)據(jù)中心中的分布服務器114位于同一位置。應用服務器508是本發(fā)明的網(wǎng)絡100的用戶。例如,應用服務器508可以是流型視頻服務器。分布中心114用作對流型視頻服務器的接口。在這個例子中,流型視頻服務器將實際使用分布中心114和網(wǎng)絡100來檢索要交付的內(nèi)容(或媒體有效負載)。同樣,負載均衡和路由選擇塊506典型地也不是分布中心114的一部分,而是外部的,并且管理進入應用服務器的通信量。
      在第二實施例中,應用服務器508是以軟件實現(xiàn)的,實際上可以是分布中心114的一部分。
      VFCS服務器512經(jīng)由負載均衡和路由選擇塊510從應用服務器508接收文件請求。VFCS服務器512然后提供對分布服務器簇406的接口以取出所請求的文件。所請求的文件然后經(jīng)由VFCS服務器512返回應用服務器508。以這種方式,分布中心114用作應用服務器508的文件或目錄系統(tǒng)。
      B.分布服務器簇如圖5所示,多個分布服務器504可以在分布中心114中群集在一起,以均衡其工作負載。分布服務器簇406尤其提供系統(tǒng)容錯和可伸縮性。雖然在一個分布中心114中有多個分布服務器504,但它們作為對其他分布中心的一個接口。負載均衡器502向外部網(wǎng)絡提供分布服務器504的接口。負載均衡器502在了解每個分布服務器的當前工作負載的情況下將請求調(diào)度給分布服務器504。
      圖6是分布服務器簇406的圖示。分布服務器簇406包括多個分布服務器504-1到504-N(合稱為504)和一個本地均衡器502。每個分布服務器504經(jīng)由開關412訪問共享存儲系統(tǒng)414中的存儲卷603-1到603-V(合稱為603)上的數(shù)據(jù)(例如,塊文件)。分布服務器簇406中的分布服務器504(例如,分布服務器504-1)可以經(jīng)由作為出站通信量604的組分的請求向相鄰的分布中心504的分布服務器504發(fā)出一個請求(例如,搜索請求)。類似地,相鄰分布中心114的分布服務器504可以經(jīng)由作為入站通信量606的組分的請求向分布服務器簇406內(nèi)的分布服務器504發(fā)出一個請求(例如,學習請求)。負載均衡器502將入站通信量606調(diào)度到分布服務器504-1到504-N中的一個。負載均衡器502可以實現(xiàn)為一個與標準路由器進行各種拓撲組合的負載均衡路由器,并且還可以處理來自分布服務器504的出站通信量604。
      每個分布服務器504將其請求(搜索,學習,等等)視為要執(zhí)行的工作。工作在每個相應的分布服務器504的存儲器(例如,隨機存取存儲器)中的工作隊列601-1到601N(合稱為601)中存儲和管理。分別對應于工作隊列601-1到601-N的工作隊列圖象602-1到602-N(合稱為602)被存儲在存儲系統(tǒng)414的數(shù)據(jù)庫中。如下面所討論的,分布中心的控制單元402管理存儲系統(tǒng)414中的這個和數(shù)個其他數(shù)據(jù)庫。注意,僅僅為了方便圖示才將包含工作隊列圖象602的數(shù)據(jù)庫映射到存儲卷603上。對于本領域普通技術(shù)人員來說顯然的是,工作隊列圖象數(shù)據(jù)庫和其他網(wǎng)絡100相關數(shù)據(jù)庫可以被映射到任何可用的存儲卷上。
      每個分布服務器504周期性地在存儲系統(tǒng)414中的控制單元數(shù)據(jù)庫中登記一個“心跳(heartbeat)”。周期性地,每個分布服務器504可以在數(shù)據(jù)庫中檢查其他分布服務器的心跳。在啟動(例如,加電)期間,分布服務器簇406中的每個分布服務器504投票贊成一個“主服務器”。如果例如分布服務器504-1缺少了h個心跳,其中h是一個可配置的參數(shù),則假設分布服務器504-1不再起作用。主服務器然后將與分布服務器504-1相關的工作重新分布給分布服務器簇406內(nèi)的有效的(即,活動的)分布服務器504。如果主服務器停止工作,則所有活動的分布服務器504投票贊成一個新的主服務器。新的主服務器然后重新分布前一主服務器遺留的工作,如果有的話。
      在控制單元數(shù)據(jù)庫不再可訪問的情況下,分布服務器504正常工作,除非其工作隊列被反映到每個單個分布服務器504的本地存儲單元(未顯示)。在此期間,或者分布服務器的工作隊列數(shù)據(jù)庫不能被訪問,或者分布服務器崩潰。如果任一個事件發(fā)生,則特定分布服務器將最終需要被重新啟動。然后將讀出和重新恢復在故障之前在其本地存儲器(即存儲系統(tǒng)414)中保存的所有工作。
      III.文件的分布和檢索并行下載是在網(wǎng)絡100中采用的確保一個所要求的文件及時出現(xiàn)在一個分布中心114以供用戶消費的機制。在并行下載中,根據(jù)其中包含的數(shù)據(jù)性質(zhì)將文件分成被稱為“磁道”的更小的單位。磁道進一步被劃分成被稱為“塊文件”的更小的相同尺寸的單位。這個劃分建立了在兩級實現(xiàn)的并行下載的基礎進程級和線程級。分布服務器504共享取一個特定磁道的工作負荷。分布中心114中的所有分布服務器504可以進行合作以便一起取出塊文件,執(zhí)行一個進程級并行處理。此外,一單個分布服務器504可以產(chǎn)生出數(shù)個線程來取出塊文件,執(zhí)行線程級并行處理。
      為了使存儲器使用最小化,文件不作為一個整體存儲在每個分布中心114中。對于每個磁道,只有其少量塊文件被前置。剩余的塊文件根據(jù)需要從具有塊文件的其他分布中心114取出。這個概念在圖7中進行了顯示。在圖7中,一特定文件的磁道已經(jīng)被分成多個塊文件,并分布給網(wǎng)絡100中的五個分布中心114-1到114-5。由于該特定文件在每個分布中心的不同觀看方式,分布的比例在分布中心114之間是不同的。例如,分布中心114-1存儲全部十個文件塊,而通信站114-4只存儲一個塊。
      在操作中,如果分布中心114-1被調(diào)用來交付文件,則它可以沒有延遲地這樣做,因為所有塊都是本地存儲的。類似地,雖然分布中心114-2只本地存儲了文件的前五塊,但它也可以沒有長時間延遲地交付文件。這是通過交付(本地存儲在分布中心114-2的)前五塊同時從分布中心114-1取出剩余五塊來完成的。其他分布中心114的操作類似。例如,分布中心114-4交付唯一的局部存儲的塊文件,同時從一個或多個其他分布中心114取出其余九個塊文件。
      A.文件分布協(xié)議(FDP)網(wǎng)絡100中的分布中心114通過一個被稱為文件分布協(xié)議(FDP)的協(xié)議相互通信。FDP的子集(即,準備、搜索和獲取)包含在并行下載中。圖8-10顯示了網(wǎng)絡100中的分布中心114如何通過采用FDP交換數(shù)據(jù)來相互通信。
      首先,由應用服務器簇408(參見圖5)中的一個虛擬文件控制系統(tǒng)(VFCS)服務器響應于一個用戶請求產(chǎn)生一個PREPARE(準備)請求。PREPARE請求從VFCS服務器512經(jīng)由開關410發(fā)送到分布服務器504。PREPARE請求觸發(fā)一個分布服務器504來產(chǎn)生一個搜索一特定文件的磁道的缺少塊文件的線程。如果為整個文件發(fā)出一個PREPARE請求,服務于請求的分布服務器504將產(chǎn)生與該特定文件中的磁道數(shù)目同樣多的線程來分別取出每個磁道的塊文件。然后,每個線程向網(wǎng)絡100發(fā)出一個SEARCH(搜索)請求,要求來自存儲有期望的磁道的分布中心114的回答。從其他分布中心114返回的回答將對它們?yōu)槠谕拇诺浪鶕碛械膲K文件的范圍編碼?;卮鹂梢缘竭_分布服務器簇406中的任何一個分布服務器504,而不必僅僅到達發(fā)送搜索的初始分布服務器504。
      接收一個搜索回答的分布服務器504然后向回答的分布中心114發(fā)送一個GET請求,要求回答的分布中心114發(fā)送回答的分布中心所擁有的塊文件的范圍。這在圖8中進行了例示,圖8例如顯示了從分布中心114-1、114-2、114-3和114-5接收搜索回答的請求分布中心114-4。對于它所接收的每個搜索回答,分布服務器114-4產(chǎn)生一個從相應的分布中心114取出塊文件的線程。由于網(wǎng)絡中的分布中心114對于一特定磁道可以具有重疊的塊文件范圍,所以有可能許多搜索回答可以是用于塊文件的同一范圍的。序列服務器505(參見圖5)確保只有一個線程試圖從任何其他分布中心下載一特定塊文件。
      由于負載均衡器502對不同分布中心114發(fā)送的搜索回答進行負載均衡,所以搜索回答將被均勻地發(fā)送給同一分布中心114上的不同分布服務器504。這在圖9中進行了圖示。在搜索回答到達一個不同于搜索請求的啟動者的分布服務器504的情況下,接收者分布服務器504將自動從回答的分布中心114取出塊文件,其中假設同一分布中心上的一個分布服務器504啟動了該搜索。因此,這個分布服務器可以與也接收到對同一請求的搜索回答的其他分布服務器并行地取出塊文件。下面描述不同進程和線程如何使用序列服務器505來在其間劃分取出與一個磁道有關的塊文件的工作負載的細節(jié)。接收搜索回答的所有分布服務器504進行合作來取出塊文件,直到所有所需的塊文件都被下載。這在圖10中進行了圖示。
      B.塊文件并行下載塊文件為分布服務器504提供了足夠的間隔尺寸來共享其負載。由線程采用塊文件鎖定機制來主張從一個遠程分布中心114取出一塊的權(quán)利。這些塊文件中的每一個可以相對于一個分布中心114中的所有分布服務器504上的每一個線程在全局級上鎖定。當被委托取出同一范圍的塊文件時,分布服務器504上的不同線程首先嘗試為下一個缺少的塊文件獲得鎖定。如果一個線程成功獲得鎖定,則它著手從發(fā)出搜索回答的同等的分布中心取出該塊。如果一個線程未能獲得下一個缺少的塊文件的鎖定,這意味著有它自己的進程中的另一個線程或另一個分布服務器504已經(jīng)獲得該鎖定。在遇到一個鎖定的情況下,線程著手嘗試獲得下一個缺少的塊文件的鎖定。
      圖11是顯示不同進程如何共享其負載的時線。在這個環(huán)境中,一個進程可以包括一個線程或類似的操作。注意,因為一個進程可以包括一個或多個線程,所以在討論由一個線程或進程實現(xiàn)的功能時,術(shù)語“進程”和“線程”可以互換使用。為了容易圖示,假設搜索回答大約在同一時間到來。如圖所示,分布服務器DS1接收到兩個搜索回答。分布服務器DS2和DS3都只接收到一個搜索回答。對于每個回答,產(chǎn)生一個線程來與一個回答分布中心114對等。線程然后進行合作來從對等的分布中心114下載塊文件。注意,線程1未能競爭到塊文件1、2和3,因為線程2、3和4在獲得鎖定方面更快。線程1贏得了對塊4、5、6、8、9和10的鎖定并將其下載。線程2只成功獲得了對塊文件1和8的鎖定。最快的線程、線程1完成了大多數(shù)下載。
      C.文件服務操作圖12是顯示依據(jù)本發(fā)明的一個實施例的用于服務文件的步驟的流程圖。在步驟1202中,一個分布服務器從VFCS服務器512接收一個PREPARE請求(響應于一個用戶請求)。在步驟1204中,分布服務器504響應于PREPARE請求產(chǎn)生一個線程來服務該請求。在步驟1205,該線程以被稱為DSSearchReplyCollector的在分布服務器504中的另一個線程進行登記。基于DSSearchReplyCollector,分布服務器504(在步驟1208)確定是否已經(jīng)有另一個線程來服務一個先前的覆蓋已經(jīng)被請求的塊文件的范圍的請求。如果是,PREPARE請求被撤消,該方法在步驟1226結(jié)束。否則,該線程被視為有效,該方法繼續(xù)進行到步驟1210。
      在步驟1210,線程向其他分布中心發(fā)出SEARCH請求,以搜索所請求的塊文件。在步驟1212,線程等待對SEARCH請求的回答。在步驟1214,將等待間隔與一個預定的超時期間進行比較。如果超時期間已經(jīng)結(jié)束,該方法進行到步驟1216。否則,線程繼續(xù)等待。超時期間用于測量一個搜索請求是否已經(jīng)花了太長的時間來獲得回答。如果具有期望的塊文件的其他分布中心距離搜索分布中心非常遠或者如果搜索回答都被發(fā)送給簇406中的其他分布服務器504,則會發(fā)生這種情況。
      在步驟1216,啟動GET請求來從回答的分布中心取出所請求的塊文件。為每個GET請求啟動一個新的線程。注意,在一個最佳實施例中,步驟1216可以在步驟1214之前執(zhí)行。即,即使搜索線程仍然在等待來自遠方的分布中心的另外的回答,也可以啟動GET請求。
      在步驟1218,確定是否仍然缺少任何所請求的塊文件。即,如果超時期間已經(jīng)結(jié)束并且仍然不知道一些塊文件在何處,則搜索線程采取行動來從已知具有期望的塊文件的先前指定的分布中心取出剩余的塊文件。這在步驟1220中指示出。在其他分布服務器504已經(jīng)獲得搜索回答的情況下,本地線程將與那些分布服務器504中的線程進行合作來執(zhí)行并行下載。在這兩種情況下,步驟1222都等待所有線程結(jié)束。
      為了對諸如分布服務器504的故障的情況進行容錯,在所產(chǎn)生的取出塊文件的線程的返回之后,在步驟1224運用一個“明智”測試。如果有由一個出故障的分布服務器引起的任何缺少的塊文件,該線程將產(chǎn)生一個新的線程來從一個指定的分布中心114取出缺少的塊。這由對步驟1220的返回所指示。
      在取出了所有被請求的塊文件之后,該方法在步驟1226結(jié)束。
      IV.序列服務器在每個分布中心114,有許多同時發(fā)生的進程或線程。例如,有在一個應用服務器簇408中的不同物理機器上運行的多個VFCS(虛擬文件控制系統(tǒng))服務器512,每個VFCS服務器512具有多個線程。類似地,有在不同物理機器上運行的多個分布服務器504,每個分布服務器504具有多個線程。這些多個線程和進程經(jīng)常需要對共享數(shù)據(jù)進行原子訪問。例如,當多個分布服務器504線程在下載塊文件時,最好只有一個線程下載同一塊文件。
      如果線程或進程在一單個機器上運行,則可以使用由操作系統(tǒng)提供的鎖定機制、例如互斥通信或旗語來實現(xiàn)原子性。然而,這樣的鎖定機制在一簇機器之間不起作用。雖然由一個共享文件系統(tǒng)提供的文件鎖定可以用作一簇機器之間的鎖定機制,但通常使用的網(wǎng)絡文件系統(tǒng)(NFS)不具有可靠的文件鎖定。如果使用一個向線程許可鎖定的單獨的鎖定管理器進程,則難以處理諸如在一個客戶機獲得鎖定然后消失時的故障情況。在本發(fā)明的一個最佳實施例中,序列服務器505為在一簇的不同機器上運行的線程和進程提供一個無鎖定的方法來對數(shù)據(jù)進行原子訪問。無鎖定的訪問便于故障處理。
      A.序列服務器描述如上所述,序列服務器505為在不同機器上運行的多個線程或進程提供一個無鎖定的機制來自動訪問數(shù)據(jù)。它允許客戶機獲得對數(shù)據(jù)的順序訪問或發(fā)現(xiàn)該序列是否已經(jīng)被違反,以使得客戶機可以重試其操作或采取校正行動。序列服務器通過將一個隨機“序列數(shù)”與每個共享的數(shù)據(jù)項相關來實現(xiàn)這一點。當客戶機向序列服務器505請求共享數(shù)據(jù)項的值并表明其修改該值的意圖時,序列服務器505遞增與該數(shù)據(jù)相關的序列數(shù),并將數(shù)據(jù)以及(遞增的)序列數(shù)返回客戶機??蛻魴C修改數(shù)據(jù)值,并將其與序列數(shù)一起返回給序列服務器505。序列服務器505然后將返回的序列數(shù)與它目前所具有的該數(shù)據(jù)項的序列數(shù)進行比較。如果數(shù)不同,意味著別的客戶機已經(jīng)同時請求了數(shù)據(jù)項的值并且?guī)в行薷乃囊鈭D。換句話說,第一客戶機的序列已經(jīng)被違反在它試圖執(zhí)行一個讀-修改-寫操作時,它不具有對該數(shù)據(jù)的獨占訪問。序列服務器505因此拒絕來自第一客戶機的更新請求,并通知客戶機該序列違反。第一客戶機然后必須在需要時采取校正行動。根據(jù)客戶機之間的上下文和約定,它或者通過再次請求一個新的讀和一個新的序列數(shù)來重試操作,或者它僅僅讓另一個客戶機執(zhí)行該操作。
      圖13是顯示兩個線程如何使用序列服務器505來在一個共享數(shù)據(jù)項上執(zhí)行原子讀-修改-寫操作的流程圖。步驟1301-1306代表第一線程,步驟1307-1312代表第二線程。在步驟1301和1307,這兩個線程都從序列服務器505請求該數(shù)據(jù)和一個序列數(shù)。響應于來自線程1的請求,序列服務器505遞增序列數(shù),并將數(shù)據(jù)和序列數(shù)首先返回線程1(步驟1302)。然后,響應于來自線程2的請求,它再次遞增序列數(shù),并將數(shù)據(jù)和新的序列數(shù)返回線程2(步驟1308)。其結(jié)果是,這兩個線程都具有該數(shù)據(jù),但具有不同的序列數(shù)。
      接著,如步驟1303和1309所示,兩個線程都修改數(shù)據(jù),并返回修改的數(shù)據(jù)和給其的序列數(shù)。在步驟1304和1310,序列服務器505將線程返回的序列數(shù)與當前值進行比較。如果序列數(shù)匹配,如同線程2的情況一樣,則序列服務器505接受新數(shù)據(jù)(參見步驟1311和1312)。如果序列數(shù)不匹配,如同線程1的情況一樣,則序列服務器505拒絕新數(shù)據(jù)(參見步驟1305和1306)。線程1然后返回步驟1301并重試這一系列步驟。以這種方式,保證了每個線程的讀-修改-寫操作的原子性。
      下面提供一個例子來解釋原子訪問的需要和序列服務器505的操作。作為背景,當一個文件要被存儲時,有一個被稱為文件“程序分塊”的將文件分成多個塊以及描述塊的元數(shù)據(jù)的進程。程序分塊在2001年5月17日申請的美國專利申請No.09/681,665中更加詳細地描述了。分布服務器504以與真實數(shù)據(jù)的狀態(tài)相一致的方式更新與一個塊文件相關的元數(shù)據(jù)。換句話說,在時間上的任何瞬時,元數(shù)據(jù)必須精確地代表真實性。否則,在元數(shù)據(jù)不反映真實性的(小)間隔期間,存在著另一個線程可以訪問不精確的元數(shù)據(jù)并且采取不正確的行動的風險。
      在一個例子中,分布服務器504將一個存儲器索引分配給每個塊文件。存儲器索引用于確定到文件的全路徑。這個概念用于允許不同的塊文件被存儲在不同的存儲設備上以獲得更高的性能。例如,如果有n個存儲設備,存儲器索引為從1到n,分布服務器504以在存儲設備之間均衡負載的方式將索引分配給塊文件。在一個實施例中,采用循環(huán)法分布來實現(xiàn)負載均衡。
      此外,在這個例子中,分布服務器504使用下面的約定存儲器索引0意味著該塊文件在磁盤上不存在;負的存儲器索引意味著該塊正在被寫或刪除,但操作還未完成(換句話說,它現(xiàn)在忙,其他設備此時不能使用該塊);以及,正的索引數(shù)意味著該塊文件在磁盤上可得到,該數(shù)可以用于確定文件的全路徑名。
      在沒有序列服務器的情況下,(由分布服務器504)下載并將一個塊文件保存到存儲系統(tǒng)414中的一組本地存儲卷中的算法如下讀出該塊的存儲器索引如果索引是0{/*塊不存在*/i=get_new_index()
      將索引設置到-i/*負意味著忙*/下載塊文件再次檢查存儲器索引/*在另一個線程也在做同一事情的情況下*/如果索引是-i{將索引設置到+i}否則{刪除該文件/*因為別的線程也正在下載它*/}}注意,如果兩個線程為同一塊文件運行上述算法,則將發(fā)生下面的事件序列

      由于存儲在元數(shù)據(jù)中的最終的數(shù)是2,因此有一個在存儲器索引1下載的孤立文件,在元數(shù)據(jù)中沒有它的記錄。在多個線程試圖下載一個文件時(如同響應于一個SEARCH-REPLY(搜索回答)在分布服務器504中所發(fā)生的),存在著具有這種孤立文件的可能。
      這個問題的出現(xiàn)是因為兩個測試-和-設置操作—首先從0到-1然后從-1到+1不是原子的。因此,需要一種機制,使得多個線程可以在需要時自動訪問數(shù)據(jù)。序列服務器5050提供了一種在不使用鎖定的情況下實現(xiàn)原子訪問的方式。
      B.序列服務器操作基本思想是使所有線程通過序列服務器505訪問存儲系統(tǒng)414中的存儲器索引。如上所述,序列服務器505將一個隨機序列數(shù)與每個存儲器索引相關。例如

      當一個線程在存儲器索引上進行“帶有修改意圖的讀”時,序列服務器505遞增序列數(shù),并返回索引值以及(遞增的)序列數(shù)。線程然后可以修改該值,并將新值與序列數(shù)一起返回序列服務器505。序列服務器505檢查序列數(shù)是否匹配該存儲器索引的當前序列數(shù)。如果是,它接受該修改的值。如果否,這意味著或者別的線程已經(jīng)在中間讀取了該值,或者序列服務器505剛剛從一次崩潰中恢復,已經(jīng)產(chǎn)生了新的序列數(shù)。在任何一種情況,序列服務器505拒絕更新并返回一個失敗。線程然后必須根據(jù)它正在嘗試做的什么操作以某些方式處理該失敗。它可以不做任何事,或者可以休眠一小段預定的或隨機的時間,然后重試讀-修改-更新。
      序列服務器505在存儲器(例如,隨機存取存儲器)中存儲存儲器索引,在本地磁盤上或存儲系統(tǒng)414中的文件中存儲一個拷貝。對索引的任何改變也在“直寫”的基礎上在文件中更新。序列數(shù)不存儲在文件中。在崩潰的情況下,序列服務器505僅僅被重新啟動,并從文件讀出存儲器索引,產(chǎn)生新的序列數(shù)。
      當序列服務器505用于對存儲器索引元數(shù)據(jù)的原子更新時,下載和保存一個塊文件的算法變?yōu)閺男蛄蟹掌髯x出該塊的存儲器索引“index”和序列數(shù)“Seq”
      如果index是0{/*塊不存在*/i=get_new_index()結(jié)果=在序列服務器以Seq將index設置為-i{/*負意味著忙*/}如果結(jié)果是okay{/*Seq與在序列服務器的數(shù)相匹配,并設置index*/}下載塊文件從序列服務器讀出該塊的存儲器索引“index”和“Seq”在序列服務器以Seq將存儲器索引設置為+I}否則{退出/*其他人正在下載該塊*/}}現(xiàn)在,如果兩個線程為同一塊文件運行上述算法,則將發(fā)生下面的事件序列

      C.故障設計有一些要處理的故障模式將存儲器索引設置為一個負數(shù)(意味著該塊被認為是忙)的序列服務器505的故障和客戶機(線程)的故障。序列服務器505的故障是直接的,因為沒有鎖定。采用常規(guī)技術(shù)監(jiān)視序列服務器505的心跳。如果序列服務器505停止運轉(zhuǎn)(例如,其心跳消失),它可以僅僅被重新啟動。在它重新啟動時,它從文件(如果存在的話)讀入存儲器索引,并產(chǎn)生一個新的(隨機)序列數(shù)的集合。如果任何客戶機試圖以舊的序列數(shù)更新存儲器索引,則操作將失敗,客戶機將必須以通常方式進行重試。
      如果在為存儲器索引設置了一個負數(shù)(指示一個未完成的操作)之后客戶機崩潰,其他客戶機不能永遠等待存儲器索引改變到0或一個正數(shù)(表明一個完成的操作)。序列服務器505處理這個情況如下。假定客戶機A為一特定塊文件將存儲器索引設置為-1,然后停止運轉(zhuǎn)。如果另一個客戶機、假定客戶機B讀出存儲器索引并發(fā)現(xiàn)它為-1,則如果可以的話(取決于它正在做的工作)它以其正常的行動過程繼續(xù)。例如,它可以轉(zhuǎn)移到下載下一個塊文件。然而,如果客戶機B直到這個負數(shù)改變之后才能繼續(xù),則它休眠一段足夠表明客戶機A已經(jīng)停止運轉(zhuǎn)的時間,然后假定A已經(jīng)停止運轉(zhuǎn)。這之后的行動過程再次取決于客戶機B正在試圖做什么。例如,如果它正在做一個明智檢查以查看是否已經(jīng)下載了所有塊,則它繼續(xù)前進并下載該塊。
      V.計算環(huán)境本發(fā)明可以以軟件、硬件或其組合來實現(xiàn),并且可以采用一個或多個計算機系統(tǒng)或其他處理系統(tǒng)來實現(xiàn)。可以用于實現(xiàn)例如內(nèi)容管理服務器110、內(nèi)容提供者客戶機106、分布通信站114、控制單元402、分布服務器504、應用服務器508、序列服務器505或任何其他計算平臺(這里也被稱為“機器”或“服務器”)的計算機系統(tǒng)的一個例子是如圖14所示的計算機系統(tǒng)1400。計算機系統(tǒng)1400包括一個或多個處理器、例如處理器1404。處理器1404連接到一個通信基礎結(jié)構(gòu)1406(例如,總線或網(wǎng)絡)。可以用這個例示計算機系統(tǒng)來描述各個實施例。然而,在閱讀了這個描述之后,如何使用其他計算機系統(tǒng)和/或計算機體系結(jié)構(gòu)實現(xiàn)本發(fā)明對于相關領域的普通技術(shù)人員來說變得顯而易見。
      計算機系統(tǒng)1400還包括一個主存儲器1408、最好是隨機存取存儲器(RAM),還可以包括一個輔助存儲器1410。輔助存儲器1410例如可以包括一個硬盤驅(qū)動器1412和/或一個代表軟盤驅(qū)動器、磁帶驅(qū)動器、光盤驅(qū)動器等的可移動存儲驅(qū)動器1414??梢苿哟鎯︱?qū)動器1414以一種公知的方式從可移動存儲單元1418讀和/或向其寫??梢苿哟鎯卧?418代表軟盤、磁帶、光盤等等。如同所理解的,可移動存儲單元1418包括其中存儲有計算機軟件和/或數(shù)據(jù)的計算機可用存儲介質(zhì)。
      輔助存儲器1410還可以包括其他類似的用于允許計算機程序或輸入數(shù)據(jù)被裝入計算機系統(tǒng)1400的裝置。這種裝置例如可以包括可移動存儲單元1422和接口1420。這樣的例子可以包括程序盒式磁帶及盒式磁帶接口(例如在電視游戲設備中找到的)、可移動存儲芯片(例如EPROM或PROM)和相關插座以及其他允許將軟件和數(shù)據(jù)從可移動存儲單元1422傳送到計算機系統(tǒng)1400的可移動存儲單元1422和接口1420。
      計算機系統(tǒng)1400還可以包括一個通信接口1424。通信接口1424允許軟件和數(shù)據(jù)在計算機系統(tǒng)1400和外部設備之間傳送。通信接口1424的例子可以包括調(diào)制解調(diào)器、網(wǎng)絡接口(例如一個以太網(wǎng)卡)、通信端口、PCMCIA插槽和卡等等。經(jīng)由通信接口1424傳送的軟件和數(shù)據(jù)是采取信號1428的形式的,信號1428可以是能夠由通信接口1424接收的電子、電磁、光學或其他信號。這些信號1428經(jīng)由通信路徑(即,信道)1426提供給通信接口1424。這個信道1426將信號1428載入和載出計算機系統(tǒng)1400,并且可以用電線或電纜、光纖、電話線、移動電話鏈路、RF鏈路和其他通信信道來實現(xiàn)。
      在本發(fā)明的一個實施例中,信號1428可以輸送由在計算機系統(tǒng)1400上運行的進程產(chǎn)生的文件內(nèi)容或各種信號,以便取出/發(fā)送塊文件和管理文件有效負載的匯編。
      在這個文本中,術(shù)語“計算機程序介質(zhì)”和“計算機可用介質(zhì)”被用于普遍地指諸如可移動存儲驅(qū)動器1414、安裝在硬盤驅(qū)動器1412中的硬盤和信號1428的介質(zhì)。這些計算機程序產(chǎn)品是用于向計算機系統(tǒng)1400提供軟件的裝置。本發(fā)明包括這種計算機程序產(chǎn)品。
      計算機程序(也稱為計算機控制邏輯)被存儲在主存儲器1408和/或輔助存儲器1410中。計算機程序也可以通過通信接口1424接收。如這里所討論的,這種計算機程序在執(zhí)行時使計算機系統(tǒng)1400執(zhí)行本發(fā)明的特征。特別地,計算機程序在執(zhí)行時使處理器1404執(zhí)行本發(fā)明的特征。因此,這種計算機程序代表計算機系統(tǒng)1400的控制器。
      VI.結(jié)論雖然上面已經(jīng)描述了本發(fā)明的各種實施例,但應該理解,這是以例子的方式展示的,而非限制性的。在不偏離本發(fā)明的精神和范圍的情況下在其中作出各種詳細修改對于相關領域的技術(shù)人員來說是顯而易見的。因此,本發(fā)明不應該被上述例示性的實施例限制,而是僅僅依據(jù)下面的權(quán)利要求書及其等效方案來限定。
      權(quán)利要求
      1.在具有多個連接節(jié)點的網(wǎng)絡中匯編文件以響應從用戶發(fā)送到第一節(jié)點的請求的一種方法,包括如下步驟基于所述請求來確定哪些內(nèi)容組分是匯編此文件所必需的;如果所有內(nèi)容組分在第一節(jié)點上都不存在,發(fā)送一個搜索請求以確定哪些其他節(jié)點具有內(nèi)容組分;從所述其他節(jié)點接收對所述搜索請求的回答,來自一個響應節(jié)點的每個回答指示哪些內(nèi)容組分可從所述響應節(jié)點得到;確定從中下載這些內(nèi)容組分的至少一個節(jié)點的一個期望的集合;從期望的集合中下載這些內(nèi)容組分;以及從下載的內(nèi)容組分中來匯編此文件。
      2.如權(quán)利要求1所述的方法,其中所述內(nèi)容組分是塊文件,以及其中所述第一確定步驟包括至少部分地基于與此文件相關的元數(shù)據(jù)來確定所必需的塊文件的數(shù)量。
      3.如權(quán)利要求1所述的方法,其中所述發(fā)送步驟進一步包括參考一個屬性集合和一個積累屬性集合來識別多個節(jié)點之中的每一個節(jié)點。
      4.如權(quán)利要求1所述的方法,其中在一個虛擬樹中組織這些節(jié)點,并且所述發(fā)送步驟包括向虛擬樹中的相鄰節(jié)點發(fā)送一個通知以確定這些內(nèi)容組分的存在,其中所述通知包括至少一個內(nèi)容組分的分布標準。
      5.如權(quán)利要求4所述的方法,其中所述發(fā)送步驟進一步包括向滿足分布標準的網(wǎng)絡中的至少一個節(jié)點傳播搜索請求。
      6.如權(quán)利要求4所述的方法,其中所述發(fā)送步驟進一步包括由接收到所述搜索請求的每個相鄰節(jié)點將所述通知發(fā)送到與每個相鄰節(jié)點是鄰居關系的除了從中接收到所述搜索請求的相鄰節(jié)點之外的鄰近節(jié)點。
      7.如權(quán)利要求1所述的方法,其中所述接收步驟包括從所述其他節(jié)點中接收對所述搜索請求的回答,來自一個響應節(jié)點的每個回答指示哪些內(nèi)容組分可從所述響應節(jié)點中得到以及所述響應節(jié)點的性能特性。
      8.如權(quán)利要求1所述的方法,其中所述下載步驟包括從第一響應節(jié)點中下載內(nèi)容組分的第一部分,同時并行地從第二響應節(jié)點中下載內(nèi)容組分的第二部分。
      9.如權(quán)利要求1所述的方法,其中所述第二確定步驟包括確定從中下載內(nèi)容組分的至少一個節(jié)點的一個期望的集合,其中所述至少一個節(jié)點是至少部分地基于第一節(jié)點的鄰近來選擇的。
      10.如權(quán)利要求1所述的方法,其中所述下載步驟包括在所述第一節(jié)點上生成代表從具有內(nèi)容組分的至少一個節(jié)點對一個內(nèi)容組分的請求的進程。
      11.如權(quán)利要求10所述的方法,其中所述下載步驟包括在所述第一節(jié)點生成多個進程,每個進程代表從所述多個節(jié)點中的一個節(jié)點對一個內(nèi)容組分的請求。
      12.如權(quán)利要求11所述的方法,其中所述下載步驟進一步包括將一個標志與要下載的每個內(nèi)容組分相關,所述標志指示一個相關的內(nèi)容組分是已經(jīng)被下載、還未被下載還是當前正在被下載;將一個唯一的序列數(shù)與每個標志相關;響應于讀出所述標志以確定所述相關的內(nèi)容組分是否已經(jīng)被下載的所述多個進程中的一個進程,遞增所述序列數(shù)并將所述遞增的序列數(shù)傳送到所述讀出進程;響應于所述讀出進程的修改所述標志以指示所述相關的內(nèi)容組分當前正在被下載的請求,將傳送到所述讀出進程的所述遞增序列數(shù)和與所述標志相關的所述遞增序列數(shù)進行比較;如果傳送到所述讀出進程的所述遞增序列數(shù)匹配與所述標志相關的所述遞增序列數(shù),接受對所述標志的所述修改;以及如果傳送到所述讀出進程的所述遞增序列數(shù)不匹配與所述標志相關的所述遞增序列數(shù),拒絕對所述標志的所述修改,從而當不止一個進程嘗試下載同一內(nèi)容組分時,避免競爭條件。
      13.一種包含計算機可用介質(zhì)的計算機程序產(chǎn)品,在所述介質(zhì)中包含有計算機可讀程序代碼裝置,用于使一個應用程序在計算機上執(zhí)行,為響應于從用戶發(fā)送給具有多個相連節(jié)點的網(wǎng)絡中的第一節(jié)點的請求而匯編一個文件,所述計算機可讀程序代碼裝置包括第一計算機可讀程序代碼裝置,用于使計算機基于所述請求來確定哪些內(nèi)容組分是匯編文件所必需的;第二計算機可讀程序代碼裝置,用于在所有內(nèi)容組分在第一節(jié)點上都不存在時使計算機發(fā)送一個搜索請求,以確定哪些其他節(jié)點具有內(nèi)容組分;第三計算機可讀程序代碼裝置,用于使計算機從所述其他節(jié)點接收對所述搜索請求的回答,來自一個響應節(jié)點的每個回答指示哪些內(nèi)容組分可從所述響應節(jié)點得到;第四計算機可讀程序代碼裝置,用于使計算機確定包括從中下載內(nèi)容組分的至少一個節(jié)點的一個期望的集合;第五計算機可讀程序代碼裝置,用于使計算機從期望的集合中下載內(nèi)容組分;以及第六計算機可讀程序代碼裝置,用于使計算機從下載的內(nèi)容組分中匯編此文件。
      14.如權(quán)利要求13所述的計算機程序產(chǎn)品,其中所述內(nèi)容組分是塊文件,以及其中所述第一計算機可讀程序代碼裝置包括用于至少部分地基于與此文件相關的元數(shù)據(jù)來確定所必需的塊文件的數(shù)量的裝置。
      15.如權(quán)利要求13所述的計算機程序產(chǎn)品,其中在一個虛擬樹中組織這些節(jié)點,以及其中所述第二計算機可讀程序代碼裝置包括用于向虛擬樹中的相鄰節(jié)點發(fā)送一個通知以確定內(nèi)容組分的存在的裝置,其中所述通知包括至少一個內(nèi)容組分的分布標準。
      16.如權(quán)利要求13所述的計算機程序產(chǎn)品,其中所述第三計算機可讀程序代碼裝置包括用于從所述其他節(jié)點接收對所述搜索請求的回答的裝置,來自一個響應節(jié)點的每個回答指示哪些內(nèi)容組分可從所述響應節(jié)點得到以及所述響應節(jié)點的性能特性。
      17.如權(quán)利要求13所述的計算機程序產(chǎn)品,其中所述第五計算機可讀程序代碼裝置包括用于從第一響應節(jié)點下載內(nèi)容組分的第一部分、同時并行地從第二響應節(jié)點下載內(nèi)容組分的第二部分的裝置。
      18.如權(quán)利要求13所述的計算機程序產(chǎn)品,其中所述第四計算機可讀程序代碼裝置包括用于確定從中下載內(nèi)容組分的至少一個節(jié)點的一個期望的集合的裝置,其中所述至少一個節(jié)點是至少部分地基于第一節(jié)點的鄰近來選擇的。
      19.如權(quán)利要求13所述的計算機程序產(chǎn)品,其中所述第五計算機可讀程序代碼裝置包括用于在所述第一節(jié)點上生成多個進程的裝置,每個進程代表從所述多個節(jié)點中的一個節(jié)點對一個內(nèi)容組分的請求;用于將一個標志與要下載的每個內(nèi)容組分相關的裝置,所述標志指示一個相關的內(nèi)容組分是已經(jīng)被下載、還未被下載還是當前正在被下載;用于將一個唯一的序列數(shù)與每個標志相關的裝置;用于響應于讀出所述標志以確定所述相關的內(nèi)容組分是否已經(jīng)被下載的所述多個進程中的一個進程來遞增所述序列數(shù)并將所述遞增的序列數(shù)傳送到所述讀出進程的裝置;用于響應于所述讀出進程的修改所述標志以指示所述相關的內(nèi)容組分當前正在被下載的請求而將傳送到所述讀出進程的所述遞增序列數(shù)和與所述標志相關的所述遞增序列數(shù)進行比較的裝置;用于在傳送到所述讀出進程的所述遞增序列數(shù)匹配與所述標志相關的所述遞增序列數(shù)時接受對所述標志的所述修改的裝置;以及用于在傳送到所述讀出進程的所述遞增序列數(shù)不匹配與所述標志相關的所述遞增序列數(shù)時拒絕對所述標志的所述修改的裝置,從而當不止一個進程嘗試下載同一內(nèi)容組分時,避免競爭條件。
      20.一種基于計算機的系統(tǒng),用于響應于從用戶發(fā)送給具有多個相連節(jié)點的網(wǎng)絡中的第一節(jié)點的請求來匯編一個文件,所述系統(tǒng)包括用于基于所述請求來確定哪些內(nèi)容組分是匯編此文件所必需的裝置;用于在所有的內(nèi)容組分在第一節(jié)點上都不存在時發(fā)送一個搜索請求以確定哪些其他節(jié)點具有內(nèi)容組分的裝置;用于從所述其他節(jié)點接收對所述搜索請求的回答的裝置,來自一個響應節(jié)點的每個回答指示哪些內(nèi)容組分可從所述響應節(jié)點得到;用于確定從中下載內(nèi)容組分的至少一個節(jié)點的一個期望的集合的裝置;用于從期望的集合下載內(nèi)容組分的裝置;以及用于從下載的內(nèi)容組分中匯編文件的裝置。
      21.如權(quán)利要求20所述的基于計算機的系統(tǒng),其中所述內(nèi)容組分是塊文件,以及其中所述第一確定裝置包括用于至少部分地基于與此文件相關的元數(shù)據(jù)來確定所必需的塊文件的數(shù)量的裝置。
      22.如權(quán)利要求20所述的基于計算機的系統(tǒng),其中在一個虛擬樹中組織這些節(jié)點,以及其中所述發(fā)送裝置包括用于向虛擬樹中的相鄰節(jié)點發(fā)送一個通知以確定內(nèi)容組分的存在的裝置,其中所述通知包括至少一個內(nèi)容組分的分布標準。
      23.如權(quán)利要求20所述的基于計算機的系統(tǒng),其中所述接收裝置包括用于從所述其他節(jié)點接收對所述搜索請求的回答的裝置,來自一個響應節(jié)點的每個回答指示哪些內(nèi)容組分可從所述響應節(jié)點得到以及所述響應節(jié)點的性能特性。
      24.如權(quán)利要求20所述的基于計算機的系統(tǒng),其中所述下載裝置包括用于從第一響應節(jié)點下載內(nèi)容組分的第一部分、同時并行地從第二響應節(jié)點下載內(nèi)容組分的第二部分的裝置。
      25.如權(quán)利要求20所述的基于計算機的系統(tǒng),其中所述第二確定裝置包括用于確定從中下載內(nèi)容組分的至少一個節(jié)點的一個期望的集合的裝置,其中所述至少一個節(jié)點是至少部分地基于第一節(jié)點的鄰近來選擇的。
      26.如權(quán)利要求20所述的基于計算機的系統(tǒng),其中所述下載裝置包括用于在所述第一節(jié)點上生成多個進程的裝置,每個進程代表從所述多個節(jié)點中的一個節(jié)點對一個內(nèi)容組分的請求;用于將一個標志與要下載的每個內(nèi)容組分相關的裝置,所述標志指示一個相關的內(nèi)容組分是已經(jīng)被下載、還未被下載還是當前正在被下載;用于將一個唯一的序列數(shù)與每個標志相關的裝置;用于響應于讀出所述標志以確定所述相關的內(nèi)容組分是否已經(jīng)被下載的所述多個進程中的一個進程而遞增所述序列數(shù)并將所述遞增的序列數(shù)傳送到所述讀出進程的裝置;用于響應于所述讀出進程的修改所述標志以指示所述相關的內(nèi)容組分當前正在被下載的請求而將傳送到所述讀出進程的所述遞增序列數(shù)和與所述標志相關的所述遞增序列數(shù)進行比較的裝置;用于在傳送到所述讀出進程的所述遞增序列數(shù)匹配與所述標志相關的所述遞增序列數(shù)時接受對所述標志的所述修改的裝置;以及用于在傳送到所述讀出進程的所述遞增序列數(shù)不匹配與所述標志相關的所述遞增序列數(shù)時拒絕對所述標志的所述修改的裝置,從而當不止一個進程嘗試下載同一內(nèi)容組分時,避免競爭條件。
      全文摘要
      一個可伸縮的內(nèi)容交付網(wǎng)絡(SCDN)采用一個并行下載機制來確保一個被請求的文件及時地存在于一個通信站上以供用戶消費。這個機制用于為諸如視頻點播的應用解決內(nèi)容超高速緩存和存儲問題,這個問題通常被認為是工業(yè)上的一個難解決的問題。在網(wǎng)絡中,根據(jù)其中包含的數(shù)據(jù)的性質(zhì)將文件分成被稱為磁道的更小單位。磁道被進一步分成被稱為塊文件的更小的相同尺寸的單位。這個劃分建立了并行下載的基礎。序列服務器為多個線程或進程提供一個無鎖定機制來原子地訪問數(shù)據(jù)。序列服務器允許客戶機獲得對數(shù)據(jù)的順序訪問,或弄清楚序列是否已經(jīng)被違反,以便可以重試其操作或采取校正行動。本發(fā)明的優(yōu)點包括處理大文件的分布和進程定序的能力。
      文檔編號G06F17/30GK1481636SQ01820815
      公開日2004年3月10日 申請日期2001年10月26日 優(yōu)先權(quán)日2000年10月26日
      發(fā)明者D·C·-H·陳, D C -H 陳, S·Y·辛, 辛, R·塔庫爾, 舛, T·伊薩克森, 松, W·D·格羅普, 格羅普 申請人:普里斯梅迪亞網(wǎng)絡有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1