欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

大有效負(fù)載文件的分段的實(shí)時(shí)并行交付方法和設(shè)備的制作方法

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

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


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

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

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

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