專利名稱:在對等網(wǎng)絡(luò)中限制存儲消息的制作方法
絡(luò)中限制存儲消息技術(shù)領(lǐng)域
本申請一般地涉及對等網(wǎng)絡(luò),更具體地涉及對存儲消息的廣播泛洪(flooding) 進(jìn)行限制。
背景技術(shù):
對等網(wǎng)絡(luò)是覆蓋在另一網(wǎng)絡(luò)(在此情況中,因特網(wǎng))上的(有限量的對等設(shè)備的) 網(wǎng)絡(luò)的一個(gè)示例。在這樣的網(wǎng)絡(luò)中,通常是如下這種情況一個(gè)對等者所需的內(nèi)容片段或服 務(wù)可由該覆蓋型網(wǎng)絡(luò)中的一個(gè)以上的其它節(jié)點(diǎn)提供。
示例對等網(wǎng)絡(luò)可以包括基于分布式散列表(DHT)的網(wǎng)絡(luò)。DHT是一類分散化 (decentralized)的分布式系統(tǒng),這些系統(tǒng)提供類似于散列表的查找服務(wù)多個(gè)(名稱, 值)對存儲在DHT中,并且任意參與節(jié)點(diǎn)都能夠高效地取回(retrieve)與給定名稱相 關(guān)聯(lián)的值。維護(hù)從名稱到值的映射的責(zé)任以使得參與者集合的改變引起最少量的破壞 (disruption)的方式分布在節(jié)點(diǎn)之間。這有利地使得DHT可以擴(kuò)大到極大量的節(jié)點(diǎn)并且可 以處理不間斷的節(jié)點(diǎn)到達(dá)、離開和失敗。DHT形成了可用于構(gòu)建更復(fù)雜服務(wù)的基礎(chǔ)設(shè)施,所 述更復(fù)雜服務(wù)例如是分布式文件系統(tǒng)、對等文件共享和內(nèi)容分布系統(tǒng)、協(xié)作的web緩存、多 播、任意播、域名服務(wù)和即時(shí)消息傳遞。
參考附圖可以最佳地理解本發(fā)明在結(jié)構(gòu)和操作二者上的細(xì)節(jié),附圖中相似標(biāo)號指 示相似部分,并且其中
圖1是根據(jù)本發(fā)明原理的示例系統(tǒng)的框圖2是圖1所示系統(tǒng)的一部分的框圖3是用于PUT的示例邏輯的流程圖;以及
圖4是用于GET的示例邏輯的流程圖。
具體實(shí)施方式
概述
在此可以理解,可通過在對等化的DHT之間廣播Put (放入)和Get (取得)消息 (分別地,力圖放置數(shù)據(jù)的消息和力圖獲取數(shù)據(jù)的消息)來實(shí)現(xiàn)DHT之間的對等化(例如, 在實(shí)現(xiàn)DHT的服務(wù)提供商之間的對等化,與之形成對照的是在單個(gè)服務(wù)提供商領(lǐng)域內(nèi)的各 個(gè)客戶端之間的對等化)。如果所有DHT與所有其它DHT直接相連,則廣播是直接的,但是 在此可以理解,如果進(jìn)行對等化的DHT之間的關(guān)系在拓?fù)渖细訌?fù)雜,使得一些DHT不與其 它DHT直接相連(與在多個(gè)服務(wù)提供商之間的對等化的情況一樣),則泛洪Put和Get消息 可能是昂貴的。事實(shí)上,在此可進(jìn)一步理解,在所有其它DHT環(huán)中復(fù)制記錄的這種要求極大 地增大了各個(gè)DHT環(huán)中通過廣播PUT而放置的記錄的數(shù)目,這不利地影響了數(shù)據(jù)庫查找等 待時(shí)間。此外,廣播GET消息導(dǎo)致在每一個(gè)DHT環(huán)中查找,這增大了消息傳遞開銷。考慮到這些認(rèn)知,提供了以下描述。
在第一實(shí)施例中,一種裝置具有在網(wǎng)絡(luò)系統(tǒng)中的第一網(wǎng)絡(luò)中的處理器。系統(tǒng)中的 這些網(wǎng)絡(luò)并不完全彼此網(wǎng)合(mesh)。一種計(jì)算機(jī)可讀存儲介質(zhì)承載指令,用以使得處理器 通過生成指示出內(nèi)容片段的存儲位置的內(nèi)容描述符來對該內(nèi)容的存儲作出響應(yīng)。內(nèi)容由內(nèi) 容提供商來提供,內(nèi)容提供商僅將內(nèi)容存儲在網(wǎng)絡(luò)系統(tǒng)中的網(wǎng)絡(luò)子集中。內(nèi)容描述符僅被 發(fā)送到該網(wǎng)絡(luò)子集,而該網(wǎng)絡(luò)子集的描述符僅被公布給網(wǎng)絡(luò)系統(tǒng)中的希望網(wǎng)絡(luò)。這些希望 網(wǎng)絡(luò)由內(nèi)容提供商來限定。
在一些示例中,使用PUT來公布網(wǎng)絡(luò)子集的描述符??墒褂枚嗖UT將內(nèi)容描述 符僅發(fā)送到網(wǎng)絡(luò)子集的各個(gè)根節(jié)點(diǎn)。網(wǎng)絡(luò)系統(tǒng)可以是覆蓋型分布式散列表(DHT)網(wǎng)絡(luò),并 且如果需要,僅在網(wǎng)絡(luò)子集改變時(shí)才將網(wǎng)絡(luò)子集的描述符公布給這些希望網(wǎng)絡(luò)。
在一些非限制性示例中,如果內(nèi)容提供商“b”創(chuàng)建了內(nèi)容“a”,則內(nèi)容“a”與具有 Xri://a.b形式的可擴(kuò)展資源指示符(xri)相關(guān)聯(lián)。xri可以被散列化以生成內(nèi)容描述符 鍵。具體而言,可通過運(yùn)算hash (xri://a. b)來生成內(nèi)容描述符鍵,其中,網(wǎng)絡(luò)子集的描述 符由通過對xri中的內(nèi)容提供商字符串進(jìn)行散列化而生成的內(nèi)容提供商鍵來索引。具體而 言,可通過運(yùn)算hash (xri //b)來生成網(wǎng)絡(luò)子集的內(nèi)容提供商描述符鍵。
在另一實(shí)施例中,有形的計(jì)算機(jī)可讀介質(zhì)承載可由與覆蓋型網(wǎng)絡(luò)中用于從請求者 接收對來自內(nèi)容提供商的內(nèi)容的請求的節(jié)點(diǎn)相關(guān)聯(lián)的計(jì)算機(jī)處理器執(zhí)行的指令。響應(yīng)于該 請求,內(nèi)容的可擴(kuò)展資源標(biāo)識符(xri)被散列化來生成內(nèi)容鍵,并且該內(nèi)容鍵被執(zhí)行GET。 如果該內(nèi)容在該節(jié)點(diǎn)上可得,則取回該內(nèi)容的內(nèi)容位置描述符并將其發(fā)送到請求者。否則, 生成內(nèi)容提供商標(biāo)識(CPI)鍵,該CPI鍵指示出覆蓋型網(wǎng)絡(luò)中來自內(nèi)容提供商的內(nèi)容所存 儲在的存儲節(jié)點(diǎn)的子集。對CPI鍵執(zhí)行GET以獲得這些存儲節(jié)點(diǎn)的子集的標(biāo)識,并將內(nèi)容 鍵的GET轉(zhuǎn)發(fā)到與這些存儲節(jié)點(diǎn)的子集的標(biāo)識相關(guān)聯(lián)的節(jié)點(diǎn)。
在一些示例實(shí)施例中,指令還可使得處理器從存儲節(jié)點(diǎn)的子集中的至少一個(gè)節(jié)點(diǎn) 取回指示出要從其下載內(nèi)容的相應(yīng)資源的相應(yīng)內(nèi)容位置描述符。如果GET失敗,則處理器 可生成去往所有其它對等節(jié)點(diǎn)的廣播GET以找到內(nèi)容。如果需要,取回內(nèi)容的處理器可以 在本地DHT中公布內(nèi)容的內(nèi)容位置描述符,以指示出其自身為資源,從而允許同一DHT內(nèi)的 其它請求在本地找到內(nèi)容。
在另一實(shí)施例中,一種計(jì)算機(jī)實(shí)現(xiàn)的方法設(shè)想了將指示出來自內(nèi)容提供商的內(nèi)容 的實(shí)際存儲位置的內(nèi)容位置描述符僅放入(PUT)與內(nèi)容提供商相關(guān)聯(lián)的根分布式散列表 (DHT)。該方法包括將指示出來自內(nèi)容提供商的內(nèi)容可能存儲在的DHT環(huán)的子集的輔助鍵 (secondary key)僅放入內(nèi)容提供商希望內(nèi)容在其中可得的DHT環(huán)。當(dāng)接收到對內(nèi)容的GET 時(shí),根據(jù)內(nèi)容鍵來判斷是否可在本地提供內(nèi)容,并且如果不能,則從輔助鍵獲得與DHT環(huán)的 子集相關(guān)聯(lián)的標(biāo)識信息。隨后將針對該內(nèi)容的GET轉(zhuǎn)發(fā)到相應(yīng)的根DHT。
示例實(shí)施例
本文中使用了如下首字母縮寫詞和定義
自治DHT(AD)獨(dú)立于其它DHT而操作的DHT,其中,AD中的節(jié)點(diǎn)服務(wù)于整個(gè)DHT ID鍵空間。
對等網(wǎng)關(guān)DHT中的指定節(jié)點(diǎn),該節(jié)點(diǎn)具有與其它AD中的一個(gè)或多個(gè)對等網(wǎng)關(guān)的 因特網(wǎng)協(xié)議(IP)連通性,并且在本地DHT和(一個(gè)或多個(gè))對等者之間轉(zhuǎn)發(fā)Put、Get和對Get的響應(yīng)。
本源或原宿D(zhuǎn)HT 內(nèi)容片段最初存儲在的DHT,其是該內(nèi)容的權(quán)威性源。
本發(fā)明的原理適用于一個(gè)或多個(gè)使用情形。例如,在一個(gè)情形中,在單個(gè)提供商內(nèi) 提供了多個(gè)自治系統(tǒng)。更具體地,出于操作的原因,單個(gè)服務(wù)提供商可以選擇將網(wǎng)絡(luò)操作為 自治系統(tǒng)(AS)的集合。各個(gè)AS可由不同的組織來運(yùn)行。這些AS在路由的意義上不一定 必須是真實(shí)AS。例如,AS可以是“自治DHT”(AD)。自治DHT是形成自己的獨(dú)立DHT環(huán)并且 與在很大程度上獨(dú)立于其它AD而操作的一群節(jié)點(diǎn)。每一個(gè)AD有權(quán)訪問完整的DHT ID空 間,但是可以存儲或者可以不存儲其它AD中所存儲的內(nèi)容。在此情況中希望可選擇性地從 一個(gè)AD訪問位于另一個(gè)AD中的內(nèi)容。這種情形存在許多變體,例如,提供商具有一個(gè)作為 提供商的內(nèi)容的宿主(host)的AD,以及多個(gè)服務(wù)于不同區(qū)域或者不同類別的客戶(例如, 移動、DSL等)的AD。
另一使用情形是在提供商之間的對等化,其中,操作DHT的服務(wù)提供商可能希望 彼此對等化。這種情形與前一種情況的不同主要在于如下事實(shí)無法在競爭的提供商之間 假設(shè)高度協(xié)作或信任。因此,這種情形要求提供商之間適當(dāng)水平的隔離和策略控制。這種 情形的變體包括一些提供商其主要功能是作為內(nèi)容的宿主,它們隨后與主要功能是將客戶 連接到內(nèi)容的提供商進(jìn)行對等。其它變體可以包括一些提供商提供小型提供商與“主干”提 供商之間的連通性。在上面兩種使用情形中,提供商的圖譜都不應(yīng)當(dāng)被假定為具有任意特 定結(jié)構(gòu)。
因此,現(xiàn)在轉(zhuǎn)向圖1,網(wǎng)絡(luò)12的系統(tǒng)10被組織成了層級,可以預(yù)期該層級在對等內(nèi) 容提供商之間發(fā)展。不應(yīng)當(dāng)假設(shè)嚴(yán)格的層級(在網(wǎng)絡(luò)12當(dāng)中僅具有單個(gè)根,并且每一個(gè)網(wǎng) 絡(luò)是至多一個(gè)父網(wǎng)絡(luò)的子網(wǎng)絡(luò)),因?yàn)檫@種假設(shè)在實(shí)際情況中太有限制性。每一個(gè)網(wǎng)絡(luò)12 可以建立分布式散列表(DHT)。
如圖所示,每一個(gè)網(wǎng)絡(luò)12可以包括如圖所示的相應(yīng)多個(gè)DHT存儲節(jié)點(diǎn)14。每一個(gè) DHT存儲節(jié)點(diǎn)14可以是DHT本身或者可以是另一個(gè)如同DHT的實(shí)體,該實(shí)體盡管在內(nèi)部可 能以某種其它方式來實(shí)現(xiàn),但是仍支持DHT的Put/Get接口。在一個(gè)示例實(shí)施例中,每一個(gè) 網(wǎng)絡(luò)可以服務(wù)于完整的DHT鍵空間中的任意鍵的放入和取得。
每一個(gè)網(wǎng)絡(luò)12包括相應(yīng)的網(wǎng)關(guān)節(jié)點(diǎn)16(下面將進(jìn)一步論述),其與其它網(wǎng)絡(luò)12的 一個(gè)或多個(gè)網(wǎng)關(guān)節(jié)點(diǎn)通信。因此,不是所有的存儲節(jié)點(diǎn)14都與其它網(wǎng)絡(luò)通信;而是,僅僅各 個(gè)網(wǎng)絡(luò)12的網(wǎng)關(guān)節(jié)點(diǎn)16與其它網(wǎng)絡(luò)通信。通常,網(wǎng)關(guān)16執(zhí)行下面的邏輯,但是如果需要, 則網(wǎng)絡(luò)12中的節(jié)點(diǎn)14可以代表網(wǎng)絡(luò)執(zhí)行該邏輯的全部或一部分。
在圖1所示的示例實(shí)施例中,網(wǎng)絡(luò)12標(biāo)有字母“A”- “F”,并且圖1圖示出可以不 在網(wǎng)絡(luò)12之間實(shí)現(xiàn)嚴(yán)格的自頂向下的層級。取代之,如圖所示,網(wǎng)絡(luò)“A”與網(wǎng)絡(luò)“B”和“C” 直接通信并且不與其它網(wǎng)絡(luò)直接通信,而網(wǎng)絡(luò)“B”與網(wǎng)絡(luò)“A”、“E”和“F”直接通信。網(wǎng)絡(luò) “E”和“F”彼此直接通信。網(wǎng)絡(luò)“C”除了如上所述與網(wǎng)絡(luò)“A”直接通信之外,還與僅僅一個(gè) 其它網(wǎng)絡(luò)(即,網(wǎng)絡(luò)“D”)直接通信,而網(wǎng)絡(luò)“D”不再與其它網(wǎng)絡(luò)直接通信。
于是,現(xiàn)在可以了解,DHT之間的對等可以是選擇性的,就如同因特網(wǎng)服務(wù)提供商 之間的對等是選擇性的一樣。因此,DHT之間的對等關(guān)系的圖譜是任意的而不是完全網(wǎng)合, 因?yàn)椴⒉皇敲恳粋€(gè)DHT都與系統(tǒng)10中的每一個(gè)其它DHT直接通信,盡管系統(tǒng)中的所有DHT 都可通過其它DHT彼此間接通信。
圖2示出了一個(gè)網(wǎng)絡(luò)(在此情況中,來自圖1的網(wǎng)絡(luò)A)的簡化視圖。如圖所示, 網(wǎng)絡(luò)可以包括多個(gè)成員18 (例如,上述DHT存儲節(jié)點(diǎn)14之一),每一個(gè)成員18通常具有一 個(gè)或多個(gè)處理器20,處理器20訪問一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲介質(zhì)22,例如但不限于固態(tài) 存儲裝置和盤存儲裝置。通常,網(wǎng)絡(luò)還包括至少一個(gè)相應(yīng)網(wǎng)關(guān)M (例如,上述網(wǎng)關(guān)節(jié)點(diǎn)16), 網(wǎng)關(guān)M具有其自身的處理器沈和計(jì)算機(jī)可讀存儲介質(zhì)觀,介質(zhì)觀可以包含由處理器沈 執(zhí)行的當(dāng)前邏輯。邏輯的其它部分可以由網(wǎng)絡(luò)的一個(gè)或多個(gè)其它成員來實(shí)現(xiàn)。網(wǎng)絡(luò)成員18 可以包括但不限于端用戶客戶端設(shè)備、因特網(wǎng)服務(wù)器、路由器、交換機(jī)等。
起初,通過執(zhí)行PUT (鍵,值)操作來將數(shù)據(jù)存儲在DHT中;值被存儲在通常是一個(gè) 并且僅僅一個(gè)DHT存儲節(jié)點(diǎn)中由PUT消息的固定長度鍵字段指示的位置處。使用GET (鍵) 操作來取回?cái)?shù)據(jù),這返回存儲在由GET消息中的鍵字段指示的位置處的值。略加詳細(xì)而言, 通過對內(nèi)容的可擴(kuò)展資源標(biāo)識符(xri)進(jìn)行散列化以生成鍵來索引內(nèi)容。鍵的值是包含內(nèi) 容所存儲的位置(資源)的描述符。隨后可通過如下方式來定位內(nèi)容對該xri進(jìn)行散列 化并且對生成的鍵執(zhí)行GET以取回描述符,然后從描述符所列出的資源下載內(nèi)容。在一些 示例實(shí)施例中,單個(gè)平坦的鍵空間由所有DHT共用,并且所有DHT都可以PUT和GET通過該 鍵空間中的鍵而索引的值。
本發(fā)明的原理認(rèn)識到可擴(kuò)展資源標(biāo)識符(xri)通常不僅僅包含內(nèi)容的名稱,而且 包含附加信息,包括內(nèi)容提供商的標(biāo)識。在此還認(rèn)識到,內(nèi)容提供商的數(shù)目通常遠(yuǎn)小于內(nèi)容 片段的數(shù)目,并且很可能內(nèi)容提供商和DHT運(yùn)營商(服務(wù)提供商)將對內(nèi)容公布達(dá)成協(xié)議, 這意味著特定內(nèi)容提供商將僅在DHT環(huán)的子集并且是不會頻繁改變的子集中公布內(nèi)容。
因此,現(xiàn)在轉(zhuǎn)向圖3,不是使用廣播PUT而是使用如下所述的多播PUT來在覆蓋型 網(wǎng)絡(luò)(例如,上述的一個(gè)覆蓋型網(wǎng)絡(luò))中公布內(nèi)容。在塊30,內(nèi)容提供商/服務(wù)提供商對內(nèi) 容的xri進(jìn)行散列化以生成內(nèi)容鍵。于是,例如,由內(nèi)容提供商“b”創(chuàng)建的內(nèi)容“a”具有形 式為xri://a. b的xri,并且xri被散列化以生成內(nèi)容鍵=hash (xri //a. b)。該內(nèi)容鍵指 示出內(nèi)容位置描述符的實(shí)際存儲位置。
在塊32,對xri中嵌入的內(nèi)容提供商字符串進(jìn)行散列化以生成輔助鍵,在此稱為 “內(nèi)容提供商id” (CPI)鍵=hash (xri://b)。CPI鍵為內(nèi)容提供商描述符提供索引,該內(nèi) 容提供商描述符指示出覆蓋型網(wǎng)絡(luò)中來自相應(yīng)內(nèi)容提供商的內(nèi)容可能存儲在的存儲節(jié)點(diǎn) (例如,DHT環(huán))的子集。作不同表述,CPI鍵利用指向內(nèi)容提供商(在上面的示例中,內(nèi)容 提供商“b”)已經(jīng)放置或者有望放置內(nèi)容的DHT的鏈接來為描述符提供索引。這些鏈接可以 是這些DHT的公知對等節(jié)點(diǎn)(類似于BGP中的邊界網(wǎng)關(guān)),或者它們可以是環(huán)標(biāo)識。在一些 實(shí)施例中,通過CPI鍵建立的描述符對于不同DHT可以不同。例如,如果DHT“C”與DHT“B” 具有特殊的對等關(guān)系,則在DHT “C”中公布的描述符(CPI鍵)可以僅僅包含到DHT “B”的 鏈接,從而輔助基于每一個(gè)內(nèi)容提供商存在復(fù)雜的對等關(guān)系。
移至塊34,將第一鍵(內(nèi)容鍵)PUT到至少一個(gè)“根” DHT。“根” DHT的數(shù)目少于 覆蓋型網(wǎng)絡(luò)中DHT的總數(shù)目,因而在塊34處的PUT并非廣播PUT而僅僅是多播PUT。實(shí)質(zhì) 上,第一(內(nèi)容)鍵被PUT到特定服務(wù)提供商在其中公布的那些DHT環(huán)的根DHT,并且僅僅 被PUT到那些根DHT。
另一方面,在塊36,將第二鍵(CPI鍵)PUT到內(nèi)容提供商希望內(nèi)容在其中可得的所 有DHT環(huán)。在此可以理解,雖然在塊36處PUT看起來是廣播PUT,但是內(nèi)容提供商在其中公布的DHT環(huán)的集合不可能頻繁地改變,因而該P(yáng)UT操作僅在內(nèi)容提供商希望從其可搜索環(huán) 的列表中添加/刪除DHT環(huán)時(shí)才是必需的。
因此,由CPI鍵表示的描述符建立了供內(nèi)容提供商用來控制對其內(nèi)容的訪問的策 略機(jī)制。預(yù)期內(nèi)容提供商的數(shù)目遠(yuǎn)小于內(nèi)容片段的數(shù)目,因而預(yù)期內(nèi)容提供商描述符的數(shù) 目將招致較小的存儲開銷。
此外,雖然每次內(nèi)容提供商公布新的內(nèi)容片段或者移動內(nèi)容片段時(shí),需要將內(nèi)容 鍵多播PUT到內(nèi)容提供商的“根"DHT,但是在諸如該內(nèi)容提供商的“根"DHT改變之類的時(shí)間 之前,即,在諸如內(nèi)容提供商在其中公布內(nèi)容的環(huán)的列表改變之類的時(shí)間之前,不需要PUT CPI 鍵。
圖4圖示出如何使用多播GET在上述覆蓋型網(wǎng)絡(luò)中取回內(nèi)容。在塊38,DHT中處 理對內(nèi)容的請求的節(jié)點(diǎn)在塊40對內(nèi)容的全部公布的xri進(jìn)行散列化并且對生成的內(nèi)容鍵 執(zhí)行GET。如果判定菱形塊42指示出內(nèi)容在該DHT中可得,則在塊44取回內(nèi)容的描述符。 否則(即,在判定菱形塊42處,GET失敗),邏輯流至塊46以對(根據(jù)上述原理得出的)CPI 鍵執(zhí)行GET,因而取回來自該提供商的內(nèi)容可能可得的DHT的列表。在塊48,經(jīng)由多播將對 內(nèi)容鍵的GET轉(zhuǎn)發(fā)到在塊46發(fā)現(xiàn)的“根” DHT。在塊50,取回一個(gè)或多個(gè)內(nèi)容位置描述符, 這些描述符指示出要從其下載內(nèi)容的資源,并且將這(一個(gè)或多個(gè))描述符返回到發(fā)起GET 的節(jié)點(diǎn)。
于是,從根DHT取回的不是鍵而是由鍵所索引的描述符,如上所述,描述符是通過 對內(nèi)容的xri進(jìn)行散列而生成的。當(dāng)經(jīng)由門戶(portal)來廣告內(nèi)容時(shí),使得xri對于作出 請求的服務(wù)節(jié)點(diǎn)可得。
在陳舊的CPI描述符或者對等DHT不向特定DHT提供內(nèi)容的策略的情況下,圖4中 的GET可能失敗。如果這種情況發(fā)生,則節(jié)點(diǎn)可借助于去往所有其它對等DHT的廣播GET, 作為查找內(nèi)容的最后嘗試。
在一些示例實(shí)現(xiàn)方式中,作為進(jìn)一步的增強(qiáng),取回內(nèi)容的節(jié)點(diǎn)隨后基于策略以其 自身作為資源在其本地DHT中公布內(nèi)容的描述符,從而允許來自同一 DHT的其它請求在本 地找到內(nèi)容并避免多播GET。所生成的這個(gè)描述符的壽命/刷新率可以取決于通過用于該 內(nèi)容提供商的描述符而強(qiáng)加的策略。例如,如果內(nèi)容提供商指定“單次使用”,則該本地描述 符將不被生成。
如果需要,節(jié)點(diǎn)不必將其DHT添加作為該內(nèi)容提供商的可能“根”,因?yàn)閮?nèi)容提供 商已經(jīng)通過將其添加到內(nèi)容提供商描述中的DHT列表來完成這個(gè)動作。這消除了在從一個(gè) DHT向另一個(gè)DHT傳遞內(nèi)容時(shí)在所有DHT中再次公布CPI描述符的需要。
在一些實(shí)施例中,可以建立CPI鍵的結(jié)構(gòu)/內(nèi)容來建立對等關(guān)系、優(yōu)選順序、使用 限制和其它策略細(xì)節(jié)。例如,CPI鍵可被用來不僅建立根節(jié)點(diǎn)的列表,而且例如通過從最優(yōu) 選到最不優(yōu)選的順序?qū)Ω?jié)點(diǎn)排序來建立對于訪問由鍵表示的DHT的順序的偏好。
雖然在此示出并詳細(xì)描述了具體的“在對等網(wǎng)絡(luò)中限制存儲消息”,但是應(yīng)當(dāng)了 解,本公開所包含的主題僅由權(quán)利要求來限制。
權(quán)利要求
1.一種裝置,包括在網(wǎng)絡(luò)系統(tǒng)中的第一網(wǎng)絡(luò)中的處理器,所述系統(tǒng)中的網(wǎng)絡(luò)不是完全彼此網(wǎng)合; 計(jì)算機(jī)可讀存儲介質(zhì),承載了用于使得處理器執(zhí)行如下操作的指令 通過生成指示出內(nèi)容片段的存儲位置的內(nèi)容描述符來對該內(nèi)容的 存儲作出響應(yīng),所述內(nèi)容是通過內(nèi)容提供商在所述網(wǎng)絡(luò)系統(tǒng)中的網(wǎng)絡(luò) 子集中存儲內(nèi)容來提供的,所述網(wǎng)絡(luò)子集不是整個(gè)網(wǎng)絡(luò)系統(tǒng); 將所述內(nèi)容描述符僅發(fā)送到所述網(wǎng)絡(luò)子集;以及 將所述網(wǎng)絡(luò)子集的描述符僅公布到所述網(wǎng)絡(luò)系統(tǒng)中除了所述網(wǎng)絡(luò) 子集之外的希望網(wǎng)絡(luò),所述希望網(wǎng)絡(luò)由所述內(nèi)容提供商限定。
2.根據(jù)權(quán)利要求1所述的裝置,其中,所述網(wǎng)絡(luò)子集的描述符是使用PUT來公布的。
3.根據(jù)權(quán)利要求1所述的裝置,其中,所述內(nèi)容描述符被使用多播PUT僅發(fā)送到所述網(wǎng) 絡(luò)子集中的各個(gè)根節(jié)點(diǎn)。
4.根據(jù)權(quán)利要求1所述的裝置,其中,所述網(wǎng)絡(luò)系統(tǒng)是覆蓋型分布式散列表(DHT)網(wǎng)
5.根據(jù)權(quán)利要求1所述的裝置,其中,所述網(wǎng)絡(luò)子集的描述符僅在所述網(wǎng)絡(luò)子集改變 時(shí)才被公布到所述希望網(wǎng)絡(luò)。
6.根據(jù)權(quán)利要求1所述的裝置,其中,如果由內(nèi)容提供商“b”創(chuàng)建了內(nèi)容“a”,則該內(nèi) 容“a”與形式為xri://a. b的可擴(kuò)展資源指示符(xri)相關(guān)聯(lián),并且使用hash (xri //a. b) 對該xri進(jìn)行散列以生成所述內(nèi)容描述符,所述網(wǎng)絡(luò)子集的描述符是使用hash(Xri://b) 生成的。
7.一種有形的計(jì)算機(jī)可讀介質(zhì),承載著可由與覆蓋型網(wǎng)絡(luò)中的節(jié)點(diǎn)相關(guān)聯(lián)的計(jì)算機(jī)處 理器執(zhí)行來進(jìn)行如下操作的指令從請求者接收對來自內(nèi)容提供商的內(nèi)容的請求;對所述內(nèi)容的可擴(kuò)展資源標(biāo)識符(xri)進(jìn)行散列以生成內(nèi)容鍵;對所述內(nèi)容鍵執(zhí)行GET;如果所述內(nèi)容在所述節(jié)點(diǎn)中可得,則取回所述內(nèi)容的內(nèi)容位置描述符并將該內(nèi)容位置 描述符發(fā)送到所述請求者;否則生成內(nèi)容提供商標(biāo)識(CPI)鍵,該CPI鍵指示出所述覆蓋型網(wǎng)絡(luò)中來自所述內(nèi)容提供 商的內(nèi)容所存儲在的存儲節(jié)點(diǎn)的子集;對所述CPI鍵執(zhí)行GET以獲得所述存儲節(jié)點(diǎn)的子集的標(biāo)識;以及將所述內(nèi)容鍵的GET轉(zhuǎn)發(fā)到與所述存儲節(jié)點(diǎn)的子集的標(biāo)識相關(guān)聯(lián)的節(jié)點(diǎn)。
8.根據(jù)權(quán)利要求7所述的介質(zhì),其中,所述指令還使得所述處理器從所述存儲節(jié)點(diǎn)的子集中的至少一個(gè)節(jié)點(diǎn)取回指示出自其下載所述內(nèi)容的相應(yīng)資源 的相應(yīng)內(nèi)容位置描述符;以及將一個(gè)或多個(gè)所述內(nèi)容位置描述符返回到所述請求者。
9.根據(jù)權(quán)利要求8所述的介質(zhì),其中,所述覆蓋型網(wǎng)絡(luò)是DHT網(wǎng)絡(luò)。
10.根據(jù)權(quán)利要求9所述的介質(zhì),其中,所述內(nèi)容位置描述符被轉(zhuǎn)發(fā)到所述存儲節(jié)點(diǎn)的 子集中的根DHT。
11.根據(jù)權(quán)利要求7所述的介質(zhì),其中,如果GET失敗,則所述處理器生成去往所有其它對等節(jié)點(diǎn)的廣播GET以找到所述內(nèi)容位置描述符。
12.根據(jù)權(quán)利要求7所述的介質(zhì),其中,取回所述內(nèi)容的所述處理器在將自身指示為資 源的情況下在本地公布所述內(nèi)容的內(nèi)容位置描述符,從而允許來自同一請求者的其它請求 在本地找到所述內(nèi)容。
13.一種計(jì)算機(jī)實(shí)現(xiàn)的方法,包括將指示出來自內(nèi)容提供商的內(nèi)容的實(shí)際存儲位置的內(nèi)容鍵僅PUT到與該內(nèi)容提供商 相關(guān)聯(lián)的根分布式散列表(DHT);將指示出來自所述內(nèi)容提供商的內(nèi)容可能存儲在的DHT環(huán)的子集的輔助鍵僅PUT到所 述內(nèi)容提供商希望可得所述內(nèi)容的DHT環(huán);當(dāng)接收到針對所述內(nèi)容的GET時(shí),根據(jù)所述內(nèi)容鍵來判斷是否可在本地提供所述內(nèi) 容,如果不能,則從所述輔助鍵獲得與所述DHT環(huán)的子集相關(guān)聯(lián)的標(biāo)識信息并將針對所述 內(nèi)容的GET轉(zhuǎn)發(fā)到相應(yīng)的根DHT。
14.根據(jù)權(quán)利要求13所述的方法,其中,所述方法由DHT的網(wǎng)關(guān)組件中的處理器執(zhí)行。
15.根據(jù)權(quán)利要求13所述的方法,其中,如果GET失敗,則所述方法生成去往所有其它 對等節(jié)點(diǎn)的廣播GET以找到所述內(nèi)容。
16.根據(jù)權(quán)利要求13所述的方法,包括使用多播PUT來發(fā)送所述內(nèi)容鍵。
17.根據(jù)權(quán)利要求13所述的方法,包括僅在所述DHT環(huán)的子集改變時(shí)才PUT所述輔助鍵。
18.根據(jù)權(quán)利要求13所述的方法,其中,如果由內(nèi)容提供商“b”創(chuàng)建了內(nèi)容“a”,則該 內(nèi)容“a”與形式為Xri://a.b的可擴(kuò)展資源指示符(xri)相關(guān)聯(lián),并且對該xri進(jìn)行散列 以生成形式為hash(Xri://a.b)的內(nèi)容鍵,所述輔助鍵是通過對xri中的內(nèi)容提供商字符 串進(jìn)行散列以產(chǎn)生形式為hash(Xri://b)的描述符來生成的。
19.根據(jù)權(quán)利要求13所述的方法,其中,所述輔助鍵是內(nèi)容提供商標(biāo)識鍵。
20.根據(jù)權(quán)利要求13所述的方法,其中,所述內(nèi)容鍵是每次所述內(nèi)容提供商公布新的 內(nèi)容片段或者移動內(nèi)容片段時(shí)放入的。全文摘要
在不是彼此完全網(wǎng)合的DHT環(huán)的系統(tǒng)中,通過如下方式來限制PUT和GET消息的泛洪將指示出來自內(nèi)容提供商的內(nèi)容的實(shí)際存儲位置的內(nèi)容鍵僅PUT到與該內(nèi)容提供商相關(guān)聯(lián)的根DHT,并且將指示出來自該內(nèi)容提供商的內(nèi)容可能存儲在的DHT環(huán)的子集的輔助鍵僅PUT到內(nèi)容提供商希望內(nèi)容在其中可得的DHT環(huán)。當(dāng)DHT接收到GET時(shí),其首先根據(jù)內(nèi)容鍵來判斷其是否可提供內(nèi)容,如果不能,則DHT從輔助鍵獲得DHT環(huán)的子集并將對內(nèi)容鍵的GET轉(zhuǎn)發(fā)到相應(yīng)的根DHT。
文檔編號H04L29/08GK102037711SQ201080001586
公開日2011年4月27日 申請日期2010年5月17日 優(yōu)先權(quán)日2009年5月18日
發(fā)明者濟(jì)寧·田, 馬尼什·巴德瓦耶 申請人:思科技術(shù)公司