專利名稱:內(nèi)容節(jié)點雙向聚類的系統(tǒng)、裝置及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,尤其涉及一種內(nèi)容節(jié)點雙向聚類的系統(tǒng)、裝置及方法。
背景技術(shù):
對等網(wǎng)絡(luò)P2P (Peer-to-Peer)提供了一種分布式內(nèi)容共享的有效途徑,可以根據(jù) 所需內(nèi)容的關(guān)鍵屬性,找到所需的內(nèi)容,并可以獲得擁有所需內(nèi)容的一組節(jié)點。但隨著用戶 的不斷增加,網(wǎng)絡(luò)中的節(jié)點數(shù)、內(nèi)容數(shù)以及內(nèi)容的副本數(shù)也在不斷增加,內(nèi)容查找和副本管 理的復(fù)雜度也在加大。目前主要通過降低內(nèi)容查找的通信量,縮短內(nèi)容查找所需的時間,來 優(yōu)化分布式網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)。比如基于DHT (Distributed Hash Table,分布式哈希表)結(jié) 構(gòu)的Chord、 Pastry等P2P網(wǎng)絡(luò)結(jié)構(gòu),還有基于混合結(jié)構(gòu)的P2P網(wǎng)絡(luò),如SWOP,這些模型都 通過構(gòu)建額外的路由表優(yōu)化拓?fù)洌岣邇?nèi)容查找的效率。 例如,現(xiàn)有方案一中,基于語義或本體論的模型首先通過語義或本體論的方式對 內(nèi)容或興趣進(jìn)行劃分,構(gòu)建成一個語義網(wǎng)絡(luò)或一個本體樹,預(yù)定義兩點之間的關(guān)聯(lián)和邊的 權(quán)重,或者直接使用已有的詞典或本體樹,并將這些知識存儲在所有的節(jié)點上或放置在一 個所有節(jié)點都可以查詢的位置。這樣每個節(jié)點都可以根據(jù)這些知識對內(nèi)容和節(jié)點的興趣 進(jìn)行描述和關(guān)聯(lián),并計算節(jié)點之間的關(guān)聯(lián)度,然后根據(jù)興趣形成聚類。在這種聚類結(jié)構(gòu)中, 由于關(guān)聯(lián)的內(nèi)容一般位于相同的聚類之內(nèi),所以這種方式一定程度可以提高內(nèi)容查找的效 率,特別是關(guān)聯(lián)內(nèi)容查找的效率。 又如,現(xiàn)有方案二中,基于行為或歷史信息的方式使用用戶的行為或歷史記錄進(jìn) 行分析,獲取內(nèi)容和節(jié)點之間的關(guān)聯(lián),在此基礎(chǔ)上形成聚類,加速查找。 在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下缺陷現(xiàn)有的方案雖 然在一定程度上提高了內(nèi)容查找的效率,但并沒有充分利用用戶之間以及內(nèi)容之間的固有 關(guān)聯(lián),在動態(tài)變化的網(wǎng)絡(luò)和不斷更新的內(nèi)容下,內(nèi)容的查找效率依然不高,也無法適應(yīng)多副 本的應(yīng)用環(huán)境。
發(fā)明內(nèi)容
有鑒于此,有必要提供一種內(nèi)容節(jié)點雙向聚類的系統(tǒng)、裝置及方法,以便在當(dāng)前網(wǎng)
絡(luò)規(guī)模不斷增加的情況下,仍能進(jìn)行高效的內(nèi)容查詢、關(guān)聯(lián)列表更新或內(nèi)容更新。
本發(fā)明實施例提供一種內(nèi)容節(jié)點雙向聚類系統(tǒng),包括節(jié)點層和內(nèi)容層;所述節(jié)點
層中,請求同一內(nèi)容的節(jié)點之間通過節(jié)點對內(nèi)容的查詢形成節(jié)點松散聚類;所述內(nèi)容層中,
被同一個節(jié)點請求的內(nèi)容之間根據(jù)節(jié)點的需求形成內(nèi)容松散聚類。 本發(fā)明實施例還提供一種查詢獲取內(nèi)容的方法,包括 請求節(jié)點向自身關(guān)聯(lián)列表中的節(jié)點發(fā)送對某內(nèi)容的第一查詢請求; 所述接收所述第一查詢請求的第一 目標(biāo)節(jié)點根據(jù)所述第一查詢請求進(jìn)行處理; 如果所述請求節(jié)點接收到所述第一目標(biāo)節(jié)點反饋查詢成功,則為所述查詢的內(nèi)容
建立一個臨時的下載地址列表并下載所述查詢的內(nèi)容;
6
如果所述請求節(jié)點接收到所述第一目標(biāo)節(jié)點反饋查詢失敗,則向自身當(dāng)前鄰居中
距離所述第一目標(biāo)節(jié)點鍵值最近的節(jié)點發(fā)送第二查詢請求。 本發(fā)明實施例還提供一種關(guān)聯(lián)列表更新的方法,包括 獲取關(guān)聯(lián)列表中某節(jié)點當(dāng)前的內(nèi)容列表; 計算請求節(jié)點與所述關(guān)聯(lián)列表中某節(jié)點的關(guān)聯(lián)相似度; 根據(jù)計算得到的關(guān)聯(lián)相似度更新請求節(jié)點的關(guān)聯(lián)列表。 本發(fā)明實施例還提供一種內(nèi)容更新的方法,包括 請求內(nèi)容更新的節(jié)點向產(chǎn)生和發(fā)布內(nèi)容的節(jié)點發(fā)送更新請求; 所述產(chǎn)生和發(fā)布內(nèi)容的節(jié)點對接收的更新請求進(jìn)行審核,并根據(jù)審核結(jié)果進(jìn)行處理; 所述產(chǎn)生和發(fā)布內(nèi)容的節(jié)點在更新后發(fā)布更新結(jié)果和新的版本號。
本發(fā)明實施例還提供一種查詢獲取內(nèi)容的系統(tǒng),包括 請求節(jié)點,用于向關(guān)聯(lián)列表中的第一目標(biāo)節(jié)點發(fā)送第一查詢請求、在接收到所述第一查詢請求查詢失敗的反饋時向鍵值距離所述第一目標(biāo)節(jié)點鍵值最近的第二目標(biāo)節(jié)點發(fā)送第二查詢請求,以及根據(jù)所述第一或第二目標(biāo)節(jié)點反饋的內(nèi)容列表為查詢的內(nèi)容建立臨時的下載地址列表并下載所述內(nèi)容; 目標(biāo)節(jié)點,包括第一目標(biāo)節(jié)點或第二目標(biāo)節(jié)點,分別用于接收所述第一或第二查詢請求,并根據(jù)所述查詢請求進(jìn)行處理。 本發(fā)明實施例還提供一種關(guān)聯(lián)列表更新的裝置,包括 獲取單元,用于獲取關(guān)聯(lián)列表中某節(jié)點當(dāng)前的內(nèi)容列表; 計算單元,用于計算請求節(jié)點與所述關(guān)聯(lián)列表中某節(jié)點的關(guān)聯(lián)相似度; 更新單元,用于根據(jù)計算得到的關(guān)聯(lián)相似度更新請求節(jié)點的關(guān)聯(lián)列表。 通過本發(fā)明實施例提供的技術(shù)方案,在當(dāng)前網(wǎng)絡(luò)規(guī)模不斷增加的情況下,通過第
一查詢提高關(guān)聯(lián)內(nèi)容的查詢效率,增加返回的滿足查詢的節(jié)點數(shù);并通過第二查詢提高普
通內(nèi)容的查詢效率,并保證在第一查詢失敗時至少能返回一個滿足查詢的節(jié)點,這樣使得
即使用戶的關(guān)聯(lián)內(nèi)容集處于動態(tài)變化之中,也能夠迅速的找到符合查詢條件的節(jié)點。此外,
能夠適合當(dāng)前多內(nèi)容副本的應(yīng)用環(huán)境,能在動態(tài)變化的網(wǎng)絡(luò)和不斷更新的內(nèi)容下,保證副
本的一致性和有效性。
圖1是本發(fā)明實施例一一種內(nèi)容節(jié)點雙向聚類的系統(tǒng)的原理示意2是本發(fā)明實施例一中一個內(nèi)容的關(guān)聯(lián)節(jié)點之間關(guān)系示意圖;圖3是本發(fā)明實施例一中關(guān)聯(lián)列表的數(shù)據(jù)結(jié)構(gòu)示意圖;圖4是本發(fā)明實施例一中節(jié)點的數(shù)據(jù)結(jié)構(gòu)示意圖;圖5是本發(fā)明實施例二一種查詢獲取內(nèi)容的方法的具體流程示意6是本發(fā)明實施例二中查詢請求的數(shù)據(jù)結(jié)構(gòu)示意圖;圖7是本發(fā)明實施例三一種關(guān)聯(lián)列表更新的方法的流程示意圖;圖8是本發(fā)明實施例三中獲取當(dāng)前內(nèi)容列表的具體流程示意圖;圖9是本發(fā)明實施例四一種內(nèi)容更新的方法的流程示意 圖10是本發(fā)明實施例五一種查詢獲取內(nèi)容的系統(tǒng)的結(jié)構(gòu)示意 圖11是本發(fā)明實施例六一種關(guān)聯(lián)列表更新的裝置的結(jié)構(gòu)示意圖。
具體實施例方式
在實際網(wǎng)絡(luò)中,用戶的需求是有趨向性的,用戶在一段時間內(nèi)頻繁需求的內(nèi)容可以視為用戶在該時刻的關(guān)聯(lián)內(nèi)容集,也就是節(jié)點的興趣集。這些內(nèi)容彼此之間會存在相似性或其他的關(guān)聯(lián),可以視為一個內(nèi)容間的松散聚類。而同一內(nèi)容也會被需求它的用戶緩存,從而在網(wǎng)絡(luò)中擁有很多副本。存儲了這些副本的用戶由于請求了同一內(nèi)容,所以他們的關(guān)聯(lián)內(nèi)容集在不同程度上有所交叉,從而在這些用戶之間形成了關(guān)聯(lián),可以視為一個節(jié)點間的松散聚類。這兩種聚類分別描述了內(nèi)容之間的關(guān)聯(lián)和用戶之間的關(guān)聯(lián),而內(nèi)容和用戶之間的需求關(guān)系則在這兩種松散聚類之間建立了連接。 內(nèi)容是存儲在節(jié)點之上,內(nèi)容之間的松散聚類客觀上形成了存儲內(nèi)容節(jié)點之間的
松散聚類,這些節(jié)點之間的關(guān)聯(lián)是建立在關(guān)聯(lián)內(nèi)容集相似的基礎(chǔ)上。因此可以利用這種關(guān)
聯(lián)提高內(nèi)容查找的效率。另一方面,節(jié)點間的松散聚類是建立在對同一內(nèi)容的需求之上,這
個聚類可以被用來對內(nèi)容的副本進(jìn)行管理,在盡量低的通信量之下保證內(nèi)容的更新發(fā)布以及副本的有效性和一致性。 以下結(jié)合附圖對本發(fā)明實施例進(jìn)行詳細(xì)描述。 如圖1所示,本發(fā)明實施例一內(nèi)容節(jié)點雙向聚類系統(tǒng)包括節(jié)點層和內(nèi)容層,所述節(jié)點層中,請求同一內(nèi)容的節(jié)點之間通過節(jié)點對內(nèi)容的查詢形成節(jié)點松散聚類;所述內(nèi)容層中,被同一個節(jié)點請求的內(nèi)容之間根據(jù)節(jié)點的需求形成內(nèi)容松散聚類。例如,節(jié)點P1,P2,P3, P4, P6形成了針對內(nèi)容A的節(jié)點松散聚類;而內(nèi)容A, D, E則是由節(jié)點P4的需求而形成的內(nèi)容松散聚類。 節(jié)點之間采用CAN(Content-Addressable Network,內(nèi)容尋址網(wǎng)絡(luò))路由構(gòu)建了 d維空間;而內(nèi)容則根據(jù)DHT機(jī)制分配到鍵值最接近的節(jié)點之上。 每個內(nèi)容通過DHT映射到一個鍵值最接近的節(jié)點上,這個節(jié)點稱為該內(nèi)容的CAN
負(fù)責(zé)節(jié)點(CAN Peer:CP),如圖l中的節(jié)點Pl是內(nèi)容A的CP。 CP本身并不負(fù)責(zé)內(nèi)容的管
理和更新,而是作為一個備份節(jié)點保存內(nèi)容的信息,并作為查詢時的索引節(jié)點。 每個內(nèi)容可能會被其他節(jié)點需要,這些節(jié)點對內(nèi)容進(jìn)行訪問,存儲了內(nèi)容的副本,
并可能對內(nèi)容進(jìn)行操作或更新,這些節(jié)點稱為該內(nèi)容的復(fù)制節(jié)點(R印lica Peer :RP),如圖
1中,節(jié)點P2、P3、P4、P6都是內(nèi)容A的RP。 RP之間通過建立層次結(jié)構(gòu)完成對內(nèi)容以及副本
的維護(hù)和更新。RP分為三類虛擬服務(wù)器(Virtual Server :VS)、強(qiáng)一致節(jié)點(Consistent
R印lica Peer :CRP)、弱一至文節(jié)點(Inconsistent R印lica Peer:IRP)。 VS是產(chǎn)生和發(fā)布內(nèi)容的節(jié)點,負(fù)責(zé)對內(nèi)容進(jìn)行更新并發(fā)布。VS和CP保持雙向連
接,并周期性的探測存活。 CRP是和VS保持強(qiáng)一致的節(jié)點,CRP上存儲的內(nèi)容副本一直保持最新的版本,在內(nèi)容更新后,CRP會接收到VS發(fā)布的更新信息。CRP和VS之間保持雙向連接,并保持定時器,在一定周期內(nèi)若沒有交互信息,則會主動發(fā)送信息探測存活。 IRP是和VS保持弱一致的節(jié)點,IRP上存儲的副本可能是陳舊的版本,在內(nèi)容發(fā)生更新后,不會接收到VS發(fā)布的更新信息。在IRP使用內(nèi)容前,需要先向VS驗證版本信息來
8保持內(nèi)容的一致性。 本發(fā)明實施例根據(jù)節(jié)點對內(nèi)容的需求以及歷史信息,在內(nèi)容之間以及節(jié)點之間建 立了兩種松散聚類結(jié)構(gòu),并利用節(jié)點對內(nèi)容的需求在兩種松散聚類之間建立了連接,從而 形成了內(nèi)容節(jié)點的雙向聚類拓?fù)浣Y(jié)構(gòu)。在這個雙向松散聚類拓?fù)湎?,具有相似關(guān)聯(lián)內(nèi)容集 的節(jié)點之間以較大的概率建立連接。本發(fā)明實施例通過利用這些連接提高了內(nèi)容查找的能 力范圍和響應(yīng)速度,特別是關(guān)聯(lián)內(nèi)容的查詢效率。此外,本發(fā)明實施例還可通過利用請求同 一個內(nèi)容的節(jié)點之間形成的松散聚類對副本進(jìn)行管理,在內(nèi)容更新的情況下保證了副本的 一致性和有效性。 同一內(nèi)容的關(guān)聯(lián)節(jié)點之間的關(guān)系如圖2所示,節(jié)點根據(jù)自身的需求和性能決定是 成為CRP還是IRP。 CP和VS之間、VS和CRP之間的連接是雙向的,VS和IRP之間的連接是 單向的,從IRP指向VS。此外,網(wǎng)絡(luò)中還隨機(jī)存在著若干在查詢路由時建立的由IRP或CRP 發(fā)起的指向CRP的單向連接。這些連接都是遠(yuǎn)程連接。 由于VS、 CRP、 IRP這三種節(jié)點存儲內(nèi)容或其副本這個行為都是建立在節(jié)點本身對 這個內(nèi)容的需求之上,所以這些節(jié)點的關(guān)聯(lián)內(nèi)容集包含了這個內(nèi)容,即它們的興趣具有相 似性。 可以使用節(jié)點上存儲的內(nèi)容作為節(jié)點的關(guān)聯(lián)內(nèi)容集,用兩個節(jié)點共同存儲的內(nèi)容 數(shù)表示這兩個節(jié)點當(dāng)前的關(guān)聯(lián)內(nèi)容相似度,即 節(jié)點的關(guān)聯(lián)內(nèi)容相似度=兩個節(jié)點重復(fù)存儲的內(nèi)容個數(shù) (1) 每個節(jié)點保持一個關(guān)聯(lián)列表,存儲了和自己當(dāng)前關(guān)聯(lián)內(nèi)容相似度最高的Nm個節(jié)
點。在關(guān)聯(lián)列表中,對于每個節(jié)點都記載了該節(jié)點的標(biāo)識符、IP地址、關(guān)聯(lián)內(nèi)容相似度、該節(jié)
點關(guān)聯(lián)內(nèi)容相似度最近一次更新的時間、該節(jié)點擁有的內(nèi)容總數(shù)、最近一段時間通過該節(jié)
點進(jìn)行路由成功召回結(jié)果的次數(shù)以及節(jié)點的綜合性能。關(guān)聯(lián)列表的數(shù)據(jù)結(jié)構(gòu)如圖3所示。 關(guān)聯(lián)列表中節(jié)點的綜合性能和節(jié)點當(dāng)前的關(guān)聯(lián)內(nèi)容相似度、擁有的內(nèi)容總數(shù)、以
及最近一段時間滿足查詢的次數(shù)相關(guān)。節(jié)點當(dāng)前的關(guān)聯(lián)內(nèi)容相似度越高、擁有的內(nèi)容數(shù)越
多、最近一段時間滿足查詢的次數(shù)越多,則該節(jié)點在以后的查詢中能夠返回所需內(nèi)容的可
能性越大,則該節(jié)點當(dāng)前的綜合性能越好。 可以使用下列公式來計算節(jié)點的綜合性能 <formula>formula see original document page 9</formula>
其中Pf(Px)是節(jié)點Px的綜合性能,Ns(P》是節(jié)點Px和節(jié)點自身的關(guān)聯(lián)內(nèi)容相似 度(由公式(1)可得),NT(PX)是節(jié)點Px擁有的內(nèi)容數(shù),NK(PX)是節(jié)點Px在最近一段時間 滿足查詢的次數(shù)。a 、 P 、 x是人工設(shè)置的常量。應(yīng)當(dāng)理解,如果調(diào)整上述三個因素(節(jié)點 關(guān)聯(lián)內(nèi)容相似度、擁有的內(nèi)容數(shù),以及最近一段時間滿足查詢的次數(shù))之間的權(quán)重比例,或 選擇其中一到兩個因素使用,作為綜合性能計算公式,原理仍是相同,仍然屬于本發(fā)明的保 護(hù)范圍。 對任意普通節(jié)點而言,只要它所負(fù)責(zé)的鍵值空間內(nèi)有內(nèi)容存在,它即作為CP負(fù)責(zé) 這些內(nèi)容。當(dāng)它需要其他內(nèi)容并需要持續(xù)保持這些內(nèi)容時,它將成為內(nèi)容的RP。所以,一個 普通節(jié)點對于相關(guān)內(nèi)容有且僅有以下CP、VS、CRP、 IRP這些身份中的一個。
普通節(jié)點中存儲的信息可以包括自身的鍵值、鍵值空間范圍、CAN路由表、需求 內(nèi)容表和關(guān)聯(lián)列表,其中
CAN路由表由CAN協(xié)議產(chǎn)生,記錄所有與本節(jié)點邏輯鄰接的節(jié)點的鍵值和地址信 息; 需求內(nèi)容表記錄了該節(jié)點所需的所有內(nèi)容的鍵值,內(nèi)容的具體信息,該內(nèi)容所在 的CP和VS的鍵值和地址信息; 關(guān)聯(lián)列表存儲了和自己關(guān)聯(lián)內(nèi)容相似度最高的Nm個節(jié)點的相關(guān)屬性。
本發(fā)明實施例二 由實施例一可知,節(jié)點上不僅在CAN路由表中存儲了 CAN鄰居節(jié)點的信息,還因為
節(jié)點對內(nèi)容的需求而在需求內(nèi)容列表中存儲了一些遠(yuǎn)處節(jié)點的信息,此外在關(guān)聯(lián)列表中還
存儲了 一些和自身關(guān)聯(lián)內(nèi)容相似度較高的節(jié)點。 節(jié)點對內(nèi)容的查詢可以分為3類 1、一個節(jié)點查詢一個指定內(nèi)容; 2、一個節(jié)點查詢兩個相互關(guān)聯(lián)的內(nèi)容; 3、兩個節(jié)點查詢同一個內(nèi)容; 本實施例利用實施例一所述的內(nèi)容節(jié)點雙向聚類系統(tǒng),采用"二元查詢"實現(xiàn)對內(nèi) 容的查找和獲取。二元查詢包括(l)第一查詢即向位于關(guān)聯(lián)列表中的節(jié)點并行的發(fā)送 "一步"查詢作為"關(guān)聯(lián)查詢",用于加速關(guān)聯(lián)內(nèi)容查詢效率,增加返回的滿足查詢的節(jié)點數(shù), 從而以較高的概率實現(xiàn)了第2類、第3類查詢;(2)第二查詢即通過將遠(yuǎn)程連接和CAN路
由相結(jié)合作為小世界模型中的"捷徑",采用"貪心查詢",提高普通內(nèi)容的查詢效率,從而保 證了第1類查詢的高效性,并保證在關(guān)聯(lián)查詢失敗時至少能返回一個滿足查詢的節(jié)點。 具體的,關(guān)聯(lián)查詢是并發(fā)的向關(guān)聯(lián)列表中的若干個節(jié)點發(fā)送查詢信息,關(guān)聯(lián)列表 中的節(jié)點在接收到消息之后會檢索自身存儲的內(nèi)容如果有滿足查詢的內(nèi)容則返回;如果 沒有,則直接丟棄查詢信息,而不會進(jìn)一步轉(zhuǎn)發(fā)。由于關(guān)聯(lián)列表中的節(jié)點和查詢節(jié)點自身在 關(guān)聯(lián)內(nèi)容集上具有相似性,所以關(guān)聯(lián)列表中的節(jié)點會以較高概率擁有滿足查詢的內(nèi)容,通 過查詢關(guān)聯(lián)列表中的節(jié)點可以加速關(guān)聯(lián)內(nèi)容的查詢速度,并可以在較短的時間內(nèi)返回盡量 多的滿足查詢請求的節(jié)點。而在關(guān)聯(lián)查詢失敗時,不繼續(xù)轉(zhuǎn)發(fā)信息查詢,則可以避免查詢信 息在網(wǎng)絡(luò)中呈指數(shù)增長。此外,由于關(guān)聯(lián)列表中節(jié)點的關(guān)聯(lián)列表所存儲的節(jié)點和查詢節(jié)點 的關(guān)聯(lián)內(nèi)容相似度會進(jìn)一步降低,再繼續(xù)轉(zhuǎn)發(fā)查詢信息,成功的概率只會進(jìn)一步降低,所以 關(guān)聯(lián)查詢信息在查詢失敗的情況下不會被轉(zhuǎn)發(fā)。 貪心查詢是從CAN路由表中的節(jié)點信息以及需求列表中的節(jié)點信息中,選擇節(jié)點 鍵值距離目標(biāo)鍵值最近的節(jié)點發(fā)送貪心查詢請求,如此反復(fù),直到找到擁有滿足查詢請求 內(nèi)容的節(jié)點。這種查找過程不同于CAN在鍵值空間連續(xù)的逼近目的地,而是通過利用網(wǎng)絡(luò) 中的遠(yuǎn)程連接作為"捷徑"的跳躍式逼近,可以在最初一兩跳(hop)內(nèi)迅速地跳到目標(biāo)節(jié)點 附近,然后再通過局部的精確定位找到目標(biāo)節(jié)點。 請參照圖5所示,本實施例查詢獲取內(nèi)容的方法的具體流程如下 步驟51,請求節(jié)點PA向關(guān)聯(lián)列表中性能較好的NK個節(jié)點發(fā)送第一查詢請求——
關(guān)聯(lián)查詢請求,如圖6所示,查詢請求包括目標(biāo)內(nèi)容的鍵值,請求節(jié)點標(biāo)識符,請求節(jié)點生
成的隨機(jī)數(shù),請求節(jié)點IP地址,關(guān)聯(lián)路由和貪心路由的標(biāo)識位??梢酝ㄟ^一個布爾值標(biāo)識
一個查詢請求是關(guān)聯(lián)路由還是貪心路由。其中,請求節(jié)點標(biāo)識符和請求節(jié)點生成的隨機(jī)數(shù)
可以唯一標(biāo)示一個查詢請求。
步驟52,接收所述第一查詢請求的節(jié)點,根據(jù)所述查詢請求進(jìn)行處理。 每個節(jié)點擁有一個請求緩存棧,用于暫存最近一段時間接收到的查詢請求。該請
求緩存棧記錄了查詢請求的請求節(jié)點標(biāo)識符和請求節(jié)點生成的隨機(jī)數(shù),根據(jù)先進(jìn)先出FIFO
原則替換。 進(jìn)一步的,步驟52具體包括 步驟521,當(dāng)一個節(jié)點接收到查詢請求之后,首先根據(jù)查詢請求中的請求節(jié)點標(biāo)識 符以及請求節(jié)點生成的隨機(jī)數(shù)檢索請求緩存棧,判斷自身是否已經(jīng)接收過這個查詢請求 如果已經(jīng)接收過,則丟棄;否則,轉(zhuǎn)入步驟522。 步驟522,所述節(jié)點查看自身的需求內(nèi)容列表中是否有節(jié)點PA所查詢的內(nèi)容如 果有滿足查詢的內(nèi)容,則轉(zhuǎn)入步驟523 ;否則轉(zhuǎn)入步驟524。 步驟523,所述節(jié)點擁有滿足查詢的內(nèi)容,根據(jù)自身相對于所述內(nèi)容的身份決定發(fā) 送的信息 a、如果是CP或CRP,則自身存儲的內(nèi)容本身就是最新的版本,可以直接將自身的 地址信息以及所述內(nèi)容VS的地址作為可用下載地址,并攜帶上自身當(dāng)前的內(nèi)容列表發(fā)送 給節(jié)點PA ; b、如果是VS,則直接將自身的地址信息以及存儲的所述內(nèi)容所有CRP地址作為可 用下載地址,并攜帶上自身當(dāng)前的內(nèi)容列表發(fā)送給節(jié)點PA ; c、如果是IRP,由于自身存儲的內(nèi)容可能不是最新的版本,則將所述內(nèi)容的VS地
址作為可用下載地址,并攜帶上自身當(dāng)前的內(nèi)容列表發(fā)送給節(jié)點PA。 步驟524,所述節(jié)點沒有滿足查詢的內(nèi)容,則直接丟棄查詢信息,反饋查詢失敗。
步驟53,如果節(jié)點PA接收到查詢成功的反饋,則為所述查詢的內(nèi)容建立一個臨時 的下載地址列表并下載內(nèi)容。 節(jié)點PA在接收到其他節(jié)點的反饋信息后,將反饋信息中的可用下載地址存儲到下 載地址列表中。下載地址列表中已經(jīng)包含的地址,不會重復(fù)存儲。此后,節(jié)點PJ吏用下載 地址列表中的地址建立連接,開始下載。本實施例中節(jié)點PA接收到查詢成功的反饋即是指 接收到反饋的所查詢內(nèi)容的可用下載地址。 CP、 VS或CRP作為反饋節(jié)點向請求節(jié)點返回查詢信息時,會主動捎帶自身的內(nèi)容 列表,如果CP、 VS或CRP并不在請求節(jié)點PA的關(guān)聯(lián)列表中,則請求節(jié)點PA將計算反饋節(jié)點 綜合性能,如果反饋節(jié)點的綜合性能優(yōu)于當(dāng)前關(guān)聯(lián)列表中綜合性能最差的節(jié)點,則用反饋 節(jié)點替換該節(jié)點。 步驟54,如果節(jié)點PA接收到查詢失敗的反饋,則請求節(jié)點PA將向當(dāng)前鄰居中鍵值 距離目標(biāo)鍵值最近的節(jié)點發(fā)出第二查詢請求——貪心查詢請求。 例如上述步驟524中,該節(jié)點沒有滿足查詢的內(nèi)容,則向節(jié)點PA反饋查詢失敗,此 時節(jié)點PA將再發(fā)起第二查詢請求,以保障第一查詢請求失敗時能返回至少一個滿足查詢的 節(jié)點。 步驟55,接收所述查詢請求的節(jié)點,根據(jù)所述查詢請求進(jìn)行處理。
與步驟52類似,步驟55具體包括 步驟551,當(dāng)一個節(jié)點接收到查詢請求之后,首先根據(jù)查詢請求中的請求節(jié)點標(biāo)識 符以及請求節(jié)點生成的隨機(jī)數(shù)檢索請求緩存棧,判斷自身是否已經(jīng)接收過這個查詢請求如果已經(jīng)接收過,則丟棄;否則,轉(zhuǎn)入步驟552。 步驟552,所述節(jié)點查看自身的需求內(nèi)容列表中是否有節(jié)點PA所查詢的內(nèi)容如 果有滿足查詢的內(nèi)容,則轉(zhuǎn)入步驟553 ;否則轉(zhuǎn)入步驟554。 步驟553,所述節(jié)點擁有滿足查詢的內(nèi)容,根據(jù)自身相對于所述內(nèi)容的身份決定發(fā) 送的信息 a、如果是CP或CRP,則自身存儲的內(nèi)容本身就是最新的版本,可以直接將自身的 地址信息以及所述內(nèi)容VS的地址作為可用下載地址,并攜帶上自身當(dāng)前的內(nèi)容列表發(fā)送 給節(jié)點PA ; b、如果是VS,則直接將自身的地址信息以及存儲的所述內(nèi)容所有CRP地址作為可 用下載地址,并攜帶上自身當(dāng)前的內(nèi)容列表發(fā)送給節(jié)點PA ; c、如果是IRP,由于自身存儲的內(nèi)容可能不是最新的版本,則將所述內(nèi)容的VS地
址作為可用下載地址,并攜帶上自身當(dāng)前的內(nèi)容列表發(fā)送給節(jié)點PA。 步驟554,所述節(jié)點沒有滿足查詢的內(nèi)容,則根據(jù)鍵值最近的原則進(jìn)一步轉(zhuǎn)發(fā)。
步驟56,節(jié)點PA為所述查詢的內(nèi)容建立一個臨時的下載地址列表。 節(jié)點PA在接收到其他節(jié)點的反饋信息后,將反饋信息中的可用下載地址存儲到下
載地址列表中。下載地址列表中已經(jīng)包含的地址,不會重復(fù)存儲。此后,節(jié)點PJ吏用下載 地址列表中的地址建立連接,開始下載。 CP、 VS或CRP作為反饋節(jié)點向請求節(jié)點返回查詢信息時,會主動捎帶自身的內(nèi)容 列表,如果CP、 VS或CRP并不在請求節(jié)點PA的關(guān)聯(lián)列表中,則請求節(jié)點PA將計算反饋節(jié)點 綜合性能,如果反饋節(jié)點的綜合性能優(yōu)于當(dāng)前關(guān)聯(lián)列表中綜合性能最差的節(jié)點,則用反饋 節(jié)點替換該節(jié)點。 本實施例提高了內(nèi)容的查詢能力,可以同時解決前述第1、2、3三類查詢,例如
對于第2類查詢,一個節(jié)點查詢兩個相互關(guān)聯(lián)的內(nèi)容如節(jié)點Pl查詢兩個相互關(guān) 聯(lián)的內(nèi)容A和B。在節(jié)點P1查詢第一個內(nèi)容A時,節(jié)點P1通過節(jié)點P2獲得了內(nèi)容A。如 果節(jié)點Pl和P2的內(nèi)容列表具有較高的相似性,則節(jié)點Pl會將節(jié)點P2添加到關(guān)聯(lián)列表中。 在節(jié)點P1要尋找和內(nèi)容A相互關(guān)聯(lián)的內(nèi)容B時,由于內(nèi)容A和內(nèi)容B相互關(guān)聯(lián),所以節(jié)點 P2很可能同時存儲內(nèi)容A和B。節(jié)點Pl通過向關(guān)聯(lián)列表中的P2發(fā)送關(guān)聯(lián)查詢請求,就可 以僅通過一個hop就直接獲得內(nèi)容B。 對于第3類查詢,兩個節(jié)點查詢同一個內(nèi)容如節(jié)點Pl和P2都查詢內(nèi)容A。在節(jié) 點Pl查詢了內(nèi)容A后,內(nèi)容A會緩存在節(jié)點Pl的內(nèi)容列表中。當(dāng)節(jié)點P2查詢內(nèi)容A時, 由于節(jié)點Pl和P2請求了同一個內(nèi)容,節(jié)點Pl和P2可能是相互關(guān)聯(lián)的節(jié)點,可能在彼此的 關(guān)聯(lián)列表中,節(jié)點P2通過向節(jié)點Pl發(fā)送關(guān)聯(lián)查詢請求,即可以僅通過一個hop就直接獲得 內(nèi)容A。 通過本實施例的二元查詢中的第一查詢,本實施例可以在第1個hop之后就返回 一部分滿足查詢請求的節(jié)點,從而開始下載;此時,二元查詢中的第二查詢繼續(xù)在網(wǎng)絡(luò)中路 由,直到找到內(nèi)容的VS,從而返回VS以及所有的CRP節(jié)點,增加可以下載的源節(jié)點。也就是 說,本實施例內(nèi)容的下載分為兩步先在第1個hop找到少量的節(jié)點開始下載,再通過第二 查詢增加下載源。 本實施例可以以更快的速度開始下載,從而減少用戶的等待時間。特別是當(dāng)網(wǎng)絡(luò)
12中的節(jié)點數(shù)很多的時候,這種差異更加明顯。比如網(wǎng)絡(luò)中有10000個節(jié)點時,CAN模型的平 均查詢路徑長度是16. 49,本實施例是2. 63。也就是說,CAN模型要在平均16. 49跳之后才 能返回第一個滿足查詢的節(jié)點,而本實施例在第1個hop之后就可以返回一小部分節(jié)點開 始下載,而在2.63跳之后,進(jìn)一步增加下載源。本實施例的反應(yīng)速度比CAN快了 13.49瑕L 可以大幅降低用戶的等待時間。 并且,隨著網(wǎng)絡(luò)中節(jié)點數(shù)目的增加,本實施例這種第1跳就能夠返回一部分節(jié)點 開始下載的能力并不會發(fā)生變化,本實施例可以提高查詢響應(yīng)速度的能力反而會更加明顯。 由于本實施例在二元查詢的第一查詢中并發(fā)地發(fā)送了 ~個關(guān)聯(lián)查詢消息,但這~
個通信量只是從請求節(jié)點發(fā)送到關(guān)聯(lián)列表中的節(jié)點,并不會在網(wǎng)絡(luò)中轉(zhuǎn)發(fā),不會增加中轉(zhuǎn)
節(jié)點的通信量,而是僅僅增加了客戶端的通信量。而客戶的請求并不是一個頻繁的過程,而
是相對稀疏的,對于每次查詢多承擔(dān)一點通信量并不會對客戶的性能產(chǎn)生影響。所以,第一
查詢所增加的通信量并不會對本實施例的性能帶來負(fù)面的影響,是可以忽略的。 本發(fā)明實施例三 為了保證實施例二中第一查詢能夠以較高的概率獲得滿足查詢請求的節(jié)點,關(guān)聯(lián) 列表中的節(jié)點應(yīng)該和請求節(jié)點自身保持較高的關(guān)聯(lián)內(nèi)容相似度。由于節(jié)點的需求處于動態(tài) 變化之中,節(jié)點上存儲的內(nèi)容也在動態(tài)變化,此外網(wǎng)絡(luò)上的內(nèi)容也隨著節(jié)點的加入離開而 不斷變化,所以節(jié)點之間的關(guān)聯(lián)內(nèi)容相似度也是處于變化中的,需要對關(guān)聯(lián)列表進(jìn)行更新, 以便能夠精確的描述節(jié)點當(dāng)前的需求,使得節(jié)點之間能根據(jù)需求形成較好的聚類。
請參照圖7所示,本實施例關(guān)聯(lián)列表更新的方法,包括
步驟71,獲取關(guān)聯(lián)列表中某節(jié)點當(dāng)前的內(nèi)容列表;
具體的獲取方式有兩種 1、在例如實施例二的查詢內(nèi)容的流程中獲??; 由實施例二可知,在CP、VS或CRP向請求節(jié)點返回查詢信息時,會主動捎帶自身的 內(nèi)容列表,這種在網(wǎng)絡(luò)中現(xiàn)有消息的基礎(chǔ)上有選擇的附帶上節(jié)點自身的內(nèi)容列表,可以盡 量減少增加的通信量。 由于只有CP、VS或CRP有最新版本的內(nèi)容信息,所以當(dāng)請求節(jié)點PA發(fā)送查詢請求 之后,經(jīng)過若干次轉(zhuǎn)發(fā),查詢信息最終會落到這三種節(jié)點上。這三種節(jié)點在返回內(nèi)容信息 時,會捎帶上自身的內(nèi)容列表。內(nèi)容列表僅包括一個節(jié)點上存儲內(nèi)容的標(biāo)識符,不包括具體 內(nèi)容信息。此處,在請求節(jié)點發(fā)送查詢信息時,并不會捎帶自身的內(nèi)容列表,原因有兩點 (1)由于查詢請求需要經(jīng)過若干次轉(zhuǎn)發(fā)才能到達(dá)目標(biāo)節(jié)點,如果捎帶了內(nèi)容列表,會增加所 有轉(zhuǎn)發(fā)節(jié)點的通信量;(2)由于請求節(jié)點此時還沒有所需內(nèi)容的信息,內(nèi)容列表在請求信 息返回之后還會發(fā)生變化,所以此時的內(nèi)容列表并不準(zhǔn)確。
2、定時獲取;請參照圖8所示,具體流程如下 步驟81,設(shè)置關(guān)聯(lián)內(nèi)容相似度的有效期為T,檢測到節(jié)點PA的關(guān)聯(lián)列表中的某一 節(jié)點(例如P》最近一次更新時間距離當(dāng)前時間的間隔超過了有效期T;
步驟82,節(jié)點PA向節(jié)點PB發(fā)送詢問節(jié)點PB當(dāng)前內(nèi)容列表的請求;
步驟83,節(jié)點PA接收節(jié)點Pe返回的其自身當(dāng)前的內(nèi)容列表。 這種方式可以周期性的定時檢測并獲取關(guān)聯(lián)列表中的某一節(jié)點最新的內(nèi)容列表。
通過上述兩種方式,請求節(jié)點即可獲取關(guān)聯(lián)列表中某節(jié)點當(dāng)前的內(nèi)容列表。 步驟72,請求節(jié)點計算自身與所述節(jié)點的關(guān)聯(lián)相似度; 步驟73,請求節(jié)點根據(jù)計算得到的關(guān)聯(lián)相似度更新自身關(guān)聯(lián)列表。 具體的,請求節(jié)點將根據(jù)計算得到的關(guān)聯(lián)相似度更新自身關(guān)聯(lián)列表中所述節(jié)點
(例如Pb)的相關(guān)屬性。 本實施例中,根據(jù)節(jié)點當(dāng)前存儲的內(nèi)容描述節(jié)點的關(guān)聯(lián)內(nèi)容集以及計算節(jié)點之間 的關(guān)聯(lián)內(nèi)容相似度,從而避免了語義和本體論的方式所需的龐大知識庫所消耗的存儲空 間。 本發(fā)明實施例四 由于所有內(nèi)容的RP上都會保存一份該內(nèi)容的副本,所以整個網(wǎng)絡(luò)中會存在內(nèi)容 的多個副本。為了保證所有節(jié)點都能在較低的通信量下,獲得新鮮有效的內(nèi)容并能對內(nèi)容 進(jìn)行合法的操作,本實施例通過對內(nèi)容及其副本所在節(jié)點進(jìn)行松散節(jié)點聚類,實現(xiàn)對副本 的控制和更新。 產(chǎn)生和發(fā)布內(nèi)容的節(jié)點作為內(nèi)容的VS負(fù)責(zé)內(nèi)容的更新和發(fā)布。CP作為索引和備 份節(jié)點,和VS建立雙向連接保持強(qiáng)一致。其他節(jié)點在請求內(nèi)容之后,根據(jù)自身的需求和性 能選擇成為內(nèi)容的CRP或IRP。如果查詢節(jié)點需要經(jīng)常訪問該內(nèi)容,且自身性能較好(例 如帶寬較大,處理速度較快等),則可以選擇成為CRP,和VS建立雙向連接保持強(qiáng)一致。如 果查詢節(jié)點并不需要經(jīng)常訪問該內(nèi)容,或自身性能并不太好,也可以選擇成為IRP,和VS建 立單向連接保持弱一致。VS、CP、CRP以及IRP通過這些連接形成針對同一內(nèi)容的一個松散 聚類,并在這個聚類的基礎(chǔ)上根據(jù)節(jié)點的類型采用不同的內(nèi)容更新和更新發(fā)布模式,以降 低通信量。 為了能在內(nèi)容更新之后區(qū)分內(nèi)容的不同版本,每個內(nèi)容都有一個版本號,由該內(nèi)
容的VS在每次合法更新之后對版本號進(jìn)行操作。 請參照圖9所示,本實施例內(nèi)容更新的方法,包括 步驟91,請求內(nèi)容更新的節(jié)點(例如CRP或IRP)向產(chǎn)生和發(fā)布內(nèi)容的節(jié)點(例如 VS)發(fā)送更新請求; 具體的,當(dāng)一個RP要對內(nèi)容進(jìn)行操作及更新時,首先會判斷自身的類型 如果是CRP,則該節(jié)點本身就存儲了內(nèi)容的最新版本,可以直接內(nèi)容進(jìn)行操作,并
向VS發(fā)送更新請求,該請求包括操作結(jié)果和當(dāng)前的版本號; 如果是IRP,則該節(jié)點上存儲的副本可能是陳舊版本,需要先向VS發(fā)送當(dāng)前版本 號來檢測版本信息,如果該版本號和VS上存儲的當(dāng)前版本一致,則VS返回確認(rèn)信息,如果 不一致,則VS返回當(dāng)前最新版本的內(nèi)容信息。此后IRP采用和CRP同樣的方式對內(nèi)容進(jìn)行 操作并向VS發(fā)送更新請求。 步驟92, VS對接收的更新請求進(jìn)行審核,并根據(jù)審核結(jié)果進(jìn)行處理; VS接收到更新請求后,先判斷內(nèi)容的版本號是否是最新的版本號,如果是,則接受
更新并修改版本號,同時返回確認(rèn)信息;否則,拒絕更新,并返回最新版本信息。如果有兩個
RP同時提交更新結(jié)果,VS根據(jù)更新請求的時間戳判定更新的有效性,接受時間戳較早的更新。 步驟93, VS在更新后發(fā)布更新結(jié)果和新的版本號;
14
在VS接受更新之后,會將更新結(jié)果和新的版本號發(fā)送給CP和所有CRP。由于IRP 和VS之間是弱一致,所以并不需要向IRP發(fā)布更新信息。 本實施例中,VS、CP、CRP以及IRP通過它們之間的雙向或單向的連接,形成了針對
同一內(nèi)容的節(jié)點松散聚類,并在這個聚類的基礎(chǔ)上根據(jù)節(jié)點的類型采用不同的內(nèi)容更新和
更新發(fā)布模式,以降低通信量。本實施例通過主動向所有CRP發(fā)布更新,避免了 CRP頻繁訪
問內(nèi)容所帶來的大量詢問信息;通過IRP在使用內(nèi)容前主動向VS詢問內(nèi)容的最新版本,從
而避免了向訪問內(nèi)容頻率較低的IRP頻繁發(fā)布更新所帶來的通信量。基于這個節(jié)點松散聚
類,本實施例在較低的通信量下實現(xiàn)了對內(nèi)容及其副本的管理和控制,保證了所有節(jié)點在
對內(nèi)容進(jìn)行訪問時都能獲得最新鮮的版本,并保證了所有更新操作都是在最新版本的基礎(chǔ)
上累計遞增的,而不會出現(xiàn)對陳舊版本的更新操作。此外還有效地降低了系統(tǒng)通信量,并能
適應(yīng)動態(tài)變化環(huán)境的需求。 本發(fā)明實施例五 請參照圖10所示,本發(fā)明實施例五提供一種查詢獲取內(nèi)容的系統(tǒng),包括 請求節(jié)點101,用于向關(guān)聯(lián)列表中的節(jié)點發(fā)送第一查詢請求、在接收到所述第一查
詢請求查詢失敗的反饋時向鍵值距離目標(biāo)節(jié)點鍵值最近的節(jié)點發(fā)送第二查詢請求,以及根
據(jù)目標(biāo)節(jié)點反饋的內(nèi)容列表為查詢的內(nèi)容建立臨時的下載地址列表并下載所述內(nèi)容; 目標(biāo)節(jié)點102,用于接收所述第一或第二查詢請求,并根據(jù)所述查詢請求進(jìn)行處理。
進(jìn)一步的,所述目標(biāo)節(jié)點102包括 第一判斷單元1021,用于根據(jù)查詢請求中的請求節(jié)點標(biāo)識符以及請求節(jié)點生成的 隨機(jī)數(shù)檢索請求緩存棧,判斷目標(biāo)節(jié)點是否已經(jīng)接收過所述查詢請求,如果已經(jīng)接收過,則 丟棄所述查詢請求; 第二判斷單元1022,用于當(dāng)?shù)谝慌袛鄦卧?021判斷目標(biāo)節(jié)點未接收過所述查詢
請求時,進(jìn)一步判斷目標(biāo)節(jié)點需求內(nèi)容列表中是否有所述查詢的內(nèi)容; 第一控制單元1023,用于當(dāng)所述第二判斷單元1022判斷目標(biāo)節(jié)點的需求內(nèi)容列
表中有滿足查詢的內(nèi)容時,根據(jù)目標(biāo)節(jié)點相對于所述內(nèi)容的身份決定發(fā)送的信息; 具體的,如果目標(biāo)節(jié)點是CP或CRP,則其自身存儲的內(nèi)容本身就是最新的版本,可
以直接將自身的地址信息以及所述內(nèi)容VS的地址作為可用下載地址,并攜帶上自身當(dāng)前
的內(nèi)容列表發(fā)送給請求節(jié)點; 如果目標(biāo)節(jié)點是VS,則直接將自身的地址信息以及存儲的所述內(nèi)容所有CRP地址 作為可用下載地址,并攜帶上自身當(dāng)前的內(nèi)容列表發(fā)送給請求節(jié)點; 如果目標(biāo)節(jié)點是IRP,則將所述內(nèi)容的VS地址作為可用下載地址,并攜帶上自身 當(dāng)前的內(nèi)容列表發(fā)送給請求節(jié)點。 第二控制單元1024,用于當(dāng)所述第二判斷單元1022判斷目標(biāo)節(jié)點的需求內(nèi)容列 表中沒有滿足查詢的內(nèi)容時,根據(jù)查詢的類型進(jìn)行不同的處理
如果是第一查詢,則直接丟棄查詢信息,不做任何處理;
如果是第二查詢,則根據(jù)鍵值最近的原則進(jìn)一步轉(zhuǎn)發(fā)。
本發(fā)明實施例六 請參照圖11所示,本發(fā)明實施例六提供一種關(guān)聯(lián)列表更新的裝置,包括
15
獲取單元lll,用于獲取關(guān)聯(lián)列表中某節(jié)點當(dāng)前的內(nèi)容列表; 計算單元112,用于計算請求節(jié)點與所述關(guān)聯(lián)列表中某節(jié)點的關(guān)聯(lián)相似度; 更新單元113,用于根據(jù)計算得到的關(guān)聯(lián)相似度更新請求節(jié)點的關(guān)聯(lián)列表。 進(jìn)一步的,所述獲取單元111可以通過查詢獲取內(nèi)容的流程獲取關(guān)聯(lián)列表中某節(jié)
點反饋的當(dāng)前的內(nèi)容列表;也可以通過對關(guān)聯(lián)列表中某節(jié)點周期性的定時檢測獲取所述內(nèi)
容列表。 本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述方法實施例的全部或部分步驟可以通過 程序指令相關(guān)的硬件來完成,前述的程序可以存儲于一計算機(jī)可讀取存儲介質(zhì)中,該程序 在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述的存儲介質(zhì)包括R0M、 RAM、磁碟或者 光盤等各種可以存儲程序代碼的介質(zhì)。 以上所述,僅為本發(fā)明的具體實施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,任何 熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng) 涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
一種內(nèi)容節(jié)點雙向聚類系統(tǒng),其特征在于包括節(jié)點層和內(nèi)容層;所述節(jié)點層中,請求同一內(nèi)容的節(jié)點之間通過節(jié)點對內(nèi)容的查詢形成節(jié)點松散聚類;所述內(nèi)容層中,被同一個節(jié)點請求的內(nèi)容之間根據(jù)節(jié)點的需求形成內(nèi)容松散聚類。
2. 根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于根據(jù)對某內(nèi)容的需求,所述節(jié)點層的節(jié)點 包括內(nèi)容尋址網(wǎng)絡(luò)CAN負(fù)責(zé)節(jié)點CP,用于作為備份節(jié)點保存所述內(nèi)容的信息,并作為查詢 所述內(nèi)容時的索引節(jié)點;復(fù)制節(jié)點RP,用于存儲所述內(nèi)容的副本,和/或?qū)λ鰞?nèi)容進(jìn)行操作或更新。
3. 根據(jù)權(quán)利要求2所述的系統(tǒng),其特征在于所述復(fù)制節(jié)點RP包括虛擬服務(wù)器vs,所述VS和所述CP雙向連接,用于產(chǎn)生和發(fā)布所述內(nèi)容,負(fù)責(zé)對所述內(nèi)容進(jìn)行更新并發(fā)布;強(qiáng)一致節(jié)點CRP,與所述VS雙向連接,當(dāng)所述VS更新內(nèi)容時,接收所述VS發(fā)布的更新 信息;弱一致節(jié)點IRP,與所述VS形成由所述IRP指向所述VS的單向連接,在使用內(nèi)容前,先 向所述VS驗證自身版本信息以保持內(nèi)容的一致性。
4. 根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于所述節(jié)點存儲的信息包括 自身的鍵值、鍵值空間范圍、CAN路由表和/或關(guān)聯(lián)列表。
5. 根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于所述關(guān)聯(lián)列表記載的信息包括所述節(jié)點的標(biāo)識符、IP地址、關(guān)聯(lián)內(nèi)容相似度、所述關(guān)聯(lián)內(nèi)容相似度最近一次更新的時 間、所述節(jié)點擁有的內(nèi)容總數(shù)、最近一段時間通過所述節(jié)點進(jìn)行路由成功召回結(jié)果的次數(shù) 和/或所述節(jié)點的綜合性能。
6. —種利用如權(quán)利要求1-5任一項所述的系統(tǒng)查詢獲取內(nèi)容的方法,包括請求節(jié)點向自身關(guān)聯(lián)列表中的節(jié)點發(fā)送對某內(nèi)容的第一查詢請求,以使得接收所述第一查詢請求的第一 目標(biāo)節(jié)點根據(jù)所述第一查詢請求進(jìn)行處理;如果所述請求節(jié)點接收到所述第一 目標(biāo)節(jié)點反饋查詢成功,則為所述查詢的內(nèi)容建立 一個臨時的下載地址列表并下載所述查詢的內(nèi)容;如果所述請求節(jié)點接收到所述第一目標(biāo)節(jié)點反饋查詢失敗,則向自身當(dāng)前鄰居中距離 所述第一 目標(biāo)節(jié)點鍵值最近的節(jié)點發(fā)送第二查詢請求。
7. 根據(jù)權(quán)利要求6所述的方法,其特征在于所述接收所述第一查詢請求的節(jié)點根據(jù) 所述第一查詢請求進(jìn)行處理,具體包括所述第一目標(biāo)節(jié)點根據(jù)所述第一查詢請求中的請求節(jié)點標(biāo)識符以及請求節(jié)點生成的 隨機(jī)數(shù)檢索請求緩存棧,判斷自身是否已經(jīng)接收過所述第一查詢請求,如果已經(jīng)接收過,則 丟棄所述第一查詢請求;如果判斷自身未接收過所述第一查詢請求,則所述第一目標(biāo)節(jié)點進(jìn)一步查看自身的需 求內(nèi)容列表中是否有所述請求節(jié)點所查詢的內(nèi)容;如果所述第一目標(biāo)節(jié)點擁有滿足查詢的內(nèi)容,則根據(jù)自身相對于所述內(nèi)容的身份決定 發(fā)送的信息;如果所述第一 目標(biāo)節(jié)點沒有滿足查詢的內(nèi)容,則直接丟棄查詢信息,反饋查詢失敗。
8. 根據(jù)權(quán)利要求7所述的方法,其特征在于所述接收所述第一查詢請求的第一目標(biāo)節(jié)點根據(jù)自身相對于所述內(nèi)容的身份決定發(fā)送的信息,具體包括如果所述第一 目標(biāo)節(jié)點是CP或CRP,則可以直接將自身的地址信息以及所述內(nèi)容VS的 地址作為可用下載地址,并攜帶上自身當(dāng)前的內(nèi)容列表發(fā)送給所述請求節(jié)點;如果所述第一 目標(biāo)節(jié)點是VS,則直接將自身的地址信息以及存儲的所述內(nèi)容所有CRP 地址作為可用下載地址,并攜帶上自身當(dāng)前的內(nèi)容列表發(fā)送給所述請求節(jié)點;如果所述第一 目標(biāo)節(jié)點是IRP,則將所述內(nèi)容的VS地址作為可用下載地址,并攜帶上 自身當(dāng)前的內(nèi)容列表發(fā)送給所述請求節(jié)點。
9. 根據(jù)權(quán)利要求6所述的方法,其特征在于還包括所述接收所述第二查詢請求的第二目標(biāo)節(jié)點根據(jù)所述第二查詢請求進(jìn)行處理。
10. 根據(jù)權(quán)利要求9所述的方法,其特征在于所述接收所述第二查詢請求的第二目標(biāo) 節(jié)點根據(jù)所述第二查詢請求進(jìn)行處理,具體包括所述第二目標(biāo)節(jié)點根據(jù)所述第二查詢請求中的請求節(jié)點標(biāo)識符以及請求節(jié)點生成的 隨機(jī)數(shù)檢索請求緩存棧,判斷自身是否已經(jīng)接收過所述查詢請求,如果已經(jīng)接收過,則丟棄 所述第二查詢請求;如果判斷自身未接收過所述查詢請求,則所述節(jié)點進(jìn)一步查看自身的需求內(nèi)容列表中 是否有所述請求節(jié)點所查詢的內(nèi)容;如果所述第二目標(biāo)節(jié)點擁有滿足查詢的內(nèi)容,則根據(jù)自身相對于所述內(nèi)容的身份決定 發(fā)送的信息;如果所述第二目標(biāo)節(jié)點沒有滿足查詢的內(nèi)容,則根據(jù)鍵值最近原則進(jìn)一步轉(zhuǎn)發(fā)所述第 二查詢請求。
11. 根據(jù)權(quán)利要求IO所述的方法,其特征在于所述接收所述第二查詢請求的第二目 標(biāo)節(jié)點根據(jù)自身相對于所述內(nèi)容的身份決定發(fā)送的信息,具體包括如果所述第二目標(biāo)節(jié)點是CP或CRP,則可以直接將自身的地址信息以及所述內(nèi)容VS的 地址作為可用下載地址,并攜帶上自身當(dāng)前的內(nèi)容列表發(fā)送給所述請求節(jié)點;如果所述第二目標(biāo)節(jié)點是VS,則直接將自身的地址信息以及存儲的所述內(nèi)容所有CRP 地址作為可用下載地址,并攜帶上自身當(dāng)前的內(nèi)容列表發(fā)送給所述請求節(jié)點;如果所述第二目標(biāo)節(jié)點是IRP,則將所述內(nèi)容的VS地址作為可用下載地址,并攜帶上 自身當(dāng)前的內(nèi)容列表發(fā)送給所述請求節(jié)點;
12. —種利用如權(quán)利要求l-5任一項所述的系統(tǒng)進(jìn)行關(guān)聯(lián)列表更新的方法,包括獲取關(guān)聯(lián)列表中某節(jié)點當(dāng)前的內(nèi)容列表; 計算請求節(jié)點與所述關(guān)聯(lián)列表中某節(jié)點的關(guān)聯(lián)相似度;根據(jù)計算得到的關(guān)聯(lián)相似度更新請求節(jié)點的關(guān)聯(lián)列表。
13. 根據(jù)權(quán)利要求12所述的方法,其特征在于所述獲取關(guān)聯(lián)列表中某節(jié)點當(dāng)前的內(nèi) 容列表,具體包括通過查詢獲取內(nèi)容的流程獲取關(guān)聯(lián)列表中某節(jié)點反饋的當(dāng)前的內(nèi)容列表;或通過對關(guān) 聯(lián)列表中某節(jié)點周期性的定時檢測獲取所述內(nèi)容列表。
14. 根據(jù)權(quán)利要求13所述的方法,其特征在于所述通過對關(guān)聯(lián)列表中某節(jié)點周期性 的定時檢測獲取所述內(nèi)容列表,具體包括設(shè)置關(guān)聯(lián)內(nèi)容相似度的有效期為T,檢測到關(guān)聯(lián)列表中的所述某節(jié)點最近一次更新時間距離當(dāng)前時間的間隔超過了有效期T ;向所述某節(jié)點發(fā)送詢問其當(dāng)前內(nèi)容列表的請求; 接收所述某節(jié)點返回的其自身當(dāng)前的內(nèi)容列表。
15. —種利用如權(quán)利要求1-5任一項所述的系統(tǒng)進(jìn)行內(nèi)容更新的方法,包括 接收請求內(nèi)容更新的節(jié)點向產(chǎn)生和發(fā)布內(nèi)容的節(jié)點發(fā)送更新請求; 所述產(chǎn)生和發(fā)布內(nèi)容的節(jié)點對接收的更新請求進(jìn)行審核,并根據(jù)審核結(jié)果進(jìn)行處理; 所述產(chǎn)生和發(fā)布內(nèi)容的節(jié)點在更新后發(fā)布更新結(jié)果和新的版本號。
16. 根據(jù)權(quán)利要求15所述的方法,其特征在于所述請求內(nèi)容更新的節(jié)點向產(chǎn)生和發(fā) 布內(nèi)容的節(jié)點發(fā)送更新請求,具體包括所述請求內(nèi)容更新的節(jié)點判斷自身的類型如果是CRP,則可以直接內(nèi)容進(jìn)行操作,并向所述產(chǎn)生和發(fā)布內(nèi)容的節(jié)點發(fā)送更新請 求,所述請求包括操作結(jié)果和當(dāng)前的版本號;如果是IRP,則先向所述產(chǎn)生和發(fā)布內(nèi)容的節(jié)點發(fā)送當(dāng)前版本號來檢測版本信息,如果 該版本號和所述產(chǎn)生和發(fā)布內(nèi)容的節(jié)點上存儲的當(dāng)前版本一致,則所述產(chǎn)生和發(fā)布內(nèi)容的 節(jié)點返回確認(rèn)信息,如果不一致,則所述產(chǎn)生和發(fā)布內(nèi)容的節(jié)點返回當(dāng)前最新版本的內(nèi)容 信息;此后所述IRP向所述產(chǎn)生和發(fā)布內(nèi)容的節(jié)點發(fā)送更新請求。
17. 根據(jù)權(quán)利要求15所述的方法,其特征在于所述產(chǎn)生和發(fā)布內(nèi)容的節(jié)點對接收的 更新請求進(jìn)行審核,并根據(jù)審核結(jié)果進(jìn)行處理,具體包括所述產(chǎn)生和發(fā)布內(nèi)容的節(jié)點判斷內(nèi)容的版本號是否是最新的版本號,如果是,則接受 更新并修改版本號,同時返回確認(rèn)信息;否則,拒絕更新,并返回最新版本信息。
18. 根據(jù)權(quán)利要求15所述的方法,其特征在于如果有兩個同時提交的更新請求,則所 述產(chǎn)生和發(fā)布內(nèi)容的節(jié)點根據(jù)所述更新請求的時間戳來判定更新的有效性,接受時間戳較 早的更新。
19. 根據(jù)權(quán)利要求15所述的方法,其特征在于所述產(chǎn)生和發(fā)布內(nèi)容的節(jié)點在更新后 發(fā)布更新結(jié)果和新的版本號,具體包括所述產(chǎn)生和發(fā)布內(nèi)容的節(jié)點接受更新之后,將更新結(jié)果和新的版本號發(fā)送給CP和所 有CRP。
20. —種查詢獲取內(nèi)容的系統(tǒng),其特征在于包括請求節(jié)點,用于向關(guān)聯(lián)列表中的第一目標(biāo)節(jié)點發(fā)送第一查詢請求、在接收到所述第一 查詢請求查詢失敗的反饋時向距離第一目標(biāo)節(jié)點鍵值最近的第二目標(biāo)節(jié)點發(fā)送第二查詢 請求,以及根據(jù)所述第一或第二目標(biāo)節(jié)點反饋的內(nèi)容列表為查詢的內(nèi)容建立臨時的下載地 址列表并下載所述內(nèi)容;目標(biāo)節(jié)點,包括第一目標(biāo)節(jié)點或第二目標(biāo)節(jié)點,分別用于接收所述第一或第二查詢請 求,并根據(jù)所述查詢請求進(jìn)行處理。
21. 根據(jù)權(quán)利要求20所述的系統(tǒng),其特征在于所述目標(biāo)節(jié)點進(jìn)一步包括 第一判斷單元,用于根據(jù)第一查詢請求或第二查詢請求中的請求節(jié)點標(biāo)識符以及請求節(jié)點生成的隨機(jī)數(shù)檢索請求緩存棧,判斷所述目標(biāo)節(jié)點是否已經(jīng)接收過所述查詢請求,如 果已經(jīng)接收過,則丟棄所述查詢請求;第二判斷單元,用于當(dāng)所述第一判斷單元判斷目標(biāo)節(jié)點未接收過所述查詢請求時,進(jìn)一步判斷目標(biāo)節(jié)點需求內(nèi)容列表中是否有所述查詢的內(nèi)容;第一控制單元,用于當(dāng)所述第二判斷單元判斷目標(biāo)節(jié)點的需求內(nèi)容列表中有滿足查詢 的內(nèi)容時,根據(jù)目標(biāo)節(jié)點相對于所述內(nèi)容的身份決定發(fā)送的信息;第二控制單元,用于當(dāng)所述第二判斷單元判斷目標(biāo)節(jié)點的需求內(nèi)容列表中沒有滿足查 詢的內(nèi)容時,根據(jù)查詢的類型進(jìn)行不同的處理。
22. —種關(guān)聯(lián)列表更新的裝置,其特征在于包括 獲取單元,用于獲取關(guān)聯(lián)列表中某節(jié)點當(dāng)前的內(nèi)容列表; 計算單元,用于計算請求節(jié)點與所述關(guān)聯(lián)列表中某節(jié)點的關(guān)聯(lián)相似度; 更新單元,用于根據(jù)計算得到的關(guān)聯(lián)相似度更新請求節(jié)點的關(guān)聯(lián)列表。
23. 根據(jù)權(quán)利要求22所述的裝置,其特征在于所述獲取單元可以通過查詢獲取內(nèi)容 的流程獲取關(guān)聯(lián)列表中某節(jié)點反饋的當(dāng)前的內(nèi)容列表;也可以通過對關(guān)聯(lián)列表中某節(jié)點周 期性的定時檢測獲取所述內(nèi)容列表。
全文摘要
本發(fā)明實施例提供一種內(nèi)容節(jié)點雙向聚類系統(tǒng),包括節(jié)點層和內(nèi)容層;所述節(jié)點層中,請求同一內(nèi)容的節(jié)點之間通過節(jié)點對內(nèi)容的查詢形成節(jié)點松散聚類;所述內(nèi)容層中,被同一個節(jié)點請求的內(nèi)容之間根據(jù)節(jié)點的需求形成內(nèi)容松散聚類。本發(fā)明實施例還提供一種查詢獲取內(nèi)容的方法、關(guān)聯(lián)列表更新的方法以及內(nèi)容更新的方法。通過本發(fā)明實施例提供的技術(shù)方案,在當(dāng)前網(wǎng)絡(luò)規(guī)模不斷增加的情況下,仍能進(jìn)行高效的內(nèi)容查詢,特別是一個節(jié)點查詢兩個相互關(guān)聯(lián)的內(nèi)容或者兩個相互關(guān)聯(lián)的節(jié)點查詢同一個內(nèi)容時,能夠迅速的找到擁有符合查詢條件的節(jié)點,即使用戶的關(guān)聯(lián)內(nèi)容集也處于動態(tài)變化之中。
文檔編號H04L29/08GK101729387SQ20081021862
公開日2010年6月9日 申請日期2008年10月24日 優(yōu)先權(quán)日2008年10月24日
發(fā)明者劉姍姍, 張進(jìn), 李金龍, 沈靜波, 王鐵英 申請人:華為技術(shù)有限公司;中國科學(xué)技術(shù)大學(xué)