本發(fā)明涉及一種網(wǎng)絡(luò)連接技術(shù),尤其是涉及一種基于游子的P2P網(wǎng)絡(luò)優(yōu)化方法。
背景技術(shù):
目前常用的P2P網(wǎng)絡(luò)協(xié)議包括:Gnutella、BitTorrent、Kademlia等等。
Gnutella是互聯(lián)網(wǎng)早期常用的一種P2P聯(lián)網(wǎng)協(xié)議,它定義了在一個完全分散的網(wǎng)絡(luò)環(huán)境下計算機(jī)彼此交流的方式。Gnutella是非集中化的。這意味著該網(wǎng)絡(luò)的存在并不依賴于某家中央公司。Gnutella的客戶相互連接,而且沒有中央服務(wù)器。其缺陷為:1.資源安全性無法保障;2.缺乏一些必要的中央?yún)f(xié)調(diào)。
BitTorrent是一種內(nèi)容分發(fā)協(xié)議,它采用高效的軟件分發(fā)系統(tǒng)和點對點技術(shù)共享大體積文件,并使每個用戶像網(wǎng)絡(luò)重新分配結(jié)點那樣提供上傳服務(wù),每個下載者在下載的同時不斷向其他下載者上傳已下載的數(shù)據(jù)。其網(wǎng)絡(luò)中包含一系列Tracker服務(wù)器對文件索引進(jìn)行解析和資源定位。其缺陷為:1.無搜索功能,只能通過種子文件共享;2.種子具有時效性。
Kademlia是一種P2P重疊網(wǎng)絡(luò)傳輸協(xié)議,以構(gòu)建分布式的P2P電腦網(wǎng)絡(luò)。它是一種基于異或運(yùn)算的P2P信息系統(tǒng),制定了網(wǎng)絡(luò)的結(jié)構(gòu)及規(guī)范了節(jié)點間通訊和交換資訊的方式。Kademlia節(jié)點利用分布式散列表儲存資料索引,透過現(xiàn)有的局域網(wǎng)/廣域網(wǎng),建立起一個新的虛擬網(wǎng)絡(luò)或重疊網(wǎng)絡(luò)。其缺陷為:1.適用范圍較狹窄2.容易負(fù)載失衡。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的就是為了克服上述現(xiàn)有技術(shù)存在的缺陷而提供一種基于游子的P2P網(wǎng)絡(luò)優(yōu)化方法。
本發(fā)明的目的可以通過以下技術(shù)方案來實現(xiàn):
一種基于游子的P2P網(wǎng)絡(luò)優(yōu)化方法,包括:
資源發(fā)布節(jié)點以第一設(shè)定發(fā)送速率向其鄰居節(jié)點發(fā)送包含指定資源標(biāo)識的正游子,資源需求節(jié)點以第二設(shè)定發(fā)送速率向其鄰居節(jié)點發(fā)送包含指定資源標(biāo)識的負(fù)游子,其中,正游子和負(fù)游子為包含有資源發(fā)布節(jié)點信息的信息包,負(fù)游子為包含有資源需求節(jié)點信息的信息包;
網(wǎng)絡(luò)中任一節(jié)點接收網(wǎng)絡(luò)中的正游子和負(fù)游子,并在有接收到兩個包含相同指定資源標(biāo)識正游子和負(fù)游子,將該正游子和負(fù)游子配對,建立該正游子和負(fù)游子所分別對應(yīng)的資源發(fā)布節(jié)點和資源發(fā)布節(jié)點之間網(wǎng)絡(luò)連接,同時將未配對的正游子和負(fù)游子轉(zhuǎn)發(fā)至其鄰居節(jié)點。
對于任一指定資源,所述網(wǎng)絡(luò)中任一節(jié)點僅保留一個包含該指定資源標(biāo)識的正游子,
對于任一指定資源,所述網(wǎng)絡(luò)中任一節(jié)點僅保留一個包含該指定資源標(biāo)識的負(fù)游子。
任一指定資源標(biāo)識對應(yīng)的正游子所經(jīng)過的節(jié)點構(gòu)成以資源發(fā)布節(jié)點為核心節(jié)點的能力簇,
任一指定資源標(biāo)識對應(yīng)的負(fù)游子所經(jīng)過的節(jié)點構(gòu)成以資源需求節(jié)點為核心節(jié)點的興趣簇。
所述能力簇上各節(jié)點配置有對應(yīng)于指定資源標(biāo)識的符號為正的簇能,且簇能隨其與核心節(jié)點之間隔節(jié)點數(shù)的增大而遞減,
所述需求簇上各節(jié)點配置有對應(yīng)于指定資源標(biāo)識的符號為負(fù)的簇能,且簇能隨其與核心節(jié)點之間相隔節(jié)點數(shù)的增大而遞增。
所述能力簇上僅簇能絕對值大于第一設(shè)定閾值的節(jié)點繼續(xù)轉(zhuǎn)發(fā)對應(yīng)未配對的正游子;
所述需求簇上僅簇能絕對值大于第一設(shè)定閾值的節(jié)點繼續(xù)轉(zhuǎn)發(fā)對應(yīng)未配對的負(fù)游子。
網(wǎng)絡(luò)中任一節(jié)點轉(zhuǎn)發(fā)正游子或負(fù)游子的過程具體包括步驟:
S101:接收到直接來源于其任一鄰居節(jié)點的正游子或負(fù)游子,并加入當(dāng)前接收到的正游子所對應(yīng)的能力簇、或當(dāng)前接收到的負(fù)游子所對應(yīng)的興趣簇中;
S102:判斷該節(jié)點是否處于與當(dāng)前接收到的正游子中所包含的指定資源標(biāo)識對應(yīng)興趣簇中,或
與當(dāng)前接收到的負(fù)游子中所包含的指定資源標(biāo)識對應(yīng)的能力簇中,
若為是,則建立包含有相同指定資源標(biāo)識的興趣簇和能力簇的核心節(jié)點之間的網(wǎng)絡(luò)連接,若為否,則執(zhí)行步驟S103;
S103:基于當(dāng)前接收到的正游子或負(fù)游子,生成對應(yīng)指定資源標(biāo)識的簇能,判斷該節(jié)點是否已配置有對于相同指定資源標(biāo)識對應(yīng)的同符號簇能,若為是,則執(zhí)行步驟S104,若為否,則保存當(dāng)前生成的簇能;
S104:保留絕對值更大簇能,并判斷簇能絕對值是否大于第一設(shè)定閾值,若為是,則生成對應(yīng)的正游子或負(fù)游子,并隨機(jī)向其鄰居節(jié)點轉(zhuǎn)發(fā)。
所述生成對應(yīng)的正游子或負(fù)游子中包含有該節(jié)點與核心節(jié)點之間的節(jié)點信息。
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點:
1)基于游子來為同一資源的發(fā)布者和需求者配對,不受限于種子文件,可以在全網(wǎng)所有支持游子機(jī)制的節(jié)點間傳播,適用范圍廣。
2)每一個節(jié)點,對于同一個資源,僅保存一個游子的信息,降低信息冗余,減小對節(jié)點性能的影響;
3)引入的簇機(jī)制,并為每一個節(jié)點配置簇能,基于簇能的擴(kuò)展開發(fā)應(yīng)用,具有更高的效率,能根據(jù)節(jié)點與資源的客觀條件提供服務(wù),優(yōu)勝劣汰,保障服務(wù)質(zhì)量。
4)僅簇能絕對值大于一定值的節(jié)點才繼續(xù)轉(zhuǎn)發(fā)游子,快速響應(yīng)網(wǎng)絡(luò)結(jié)構(gòu)的動態(tài)變化,如節(jié)點的加入和退出、線路的阻塞與暢通。
5)持續(xù)優(yōu)化網(wǎng)絡(luò)拓?fù)?,在服?wù)的生產(chǎn)者與消費(fèi)者之間建立捷徑。
附圖說明
圖1為簇的結(jié)構(gòu)示意圖;
圖2為本發(fā)明的主要步驟流程示意圖。
具體實施方式
下面結(jié)合附圖和具體實施例對本發(fā)明進(jìn)行詳細(xì)說明。本實施例以本發(fā)明技術(shù)方案為前提進(jìn)行實施,給出了詳細(xì)的實施方式和具體的操作過程,但本發(fā)明的保護(hù)范圍不限于下述的實施例。
本申請主要提出了一種對等網(wǎng)絡(luò)平臺上的網(wǎng)絡(luò)拓?fù)鋬?yōu)化機(jī)制,主要建立在以資源共享為主要功能的對等網(wǎng)絡(luò)上。在對等網(wǎng)絡(luò)中引入能力簇和興趣簇的基礎(chǔ)上,設(shè)計了一種利用“游子”優(yōu)化網(wǎng)絡(luò)拓?fù)涞姆桨浮?/p>
在一個典型的對等網(wǎng)絡(luò)中,所有的節(jié)點按對資源的關(guān)系上進(jìn)行劃分,可以分為資源的提供者和資源的需求者兩種,前者提供服務(wù)能力,后者的興趣影響其潛在的需求。本專利中使用簇的模型描述這一對關(guān)系。模型中主要概念如下:
資源:一切以文字、圖像、音頻、視頻等數(shù)字手段存儲在網(wǎng)絡(luò)中的數(shù)字資源,本模型中資源在網(wǎng)絡(luò)中擁有唯一標(biāo)示——指定資源標(biāo)識。
核心節(jié)點:資源的發(fā)布者和需求者所在的節(jié)點
能力簇:以資源發(fā)布者為核心節(jié)點,網(wǎng)絡(luò)拓?fù)渲兄車欢ǚ秶鷥?nèi)的節(jié)點構(gòu)成的一種組織方式
興趣簇:以資源需求者為核心節(jié)點,網(wǎng)絡(luò)拓?fù)渲兄車欢ǚ秶鷥?nèi)的節(jié)點構(gòu)成的一種組織方式
節(jié)點簇能:衡量一個能力簇或興趣簇對某一特定節(jié)點的影響程度大小。每個結(jié)點的服務(wù)能力和興趣會向外傳播,分別形成能力簇和興趣簇。傳播的距離越遠(yuǎn),簇能就越弱。
如圖1所示,圖1中圓柱的高度標(biāo)識簇能的大小,虛線為等簇能線,帶箭頭為簇的擴(kuò)散方向:每個簇有一個簇能衰減系數(shù)k(k<1)。k值越大,衰減得就越慢,簇的作用范圍就越大,越有利于對需求和信息流動的引導(dǎo),但給網(wǎng)絡(luò)帶來的開銷就越大??梢愿鶕?jù)整個網(wǎng)絡(luò)的實際運(yùn)行情況來調(diào)節(jié)k。根據(jù)簇類型的不同,對于同一資源。能力簇簇能取正號,需求簇簇能取負(fù)號。
簇的建立和擴(kuò)散依賴于“游子”機(jī)制?!坝巫印笔且环N信息包,用來傳遞簇相關(guān)的信息,并在傳播過程中優(yōu)化網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)。“游子”從一個簇的核心節(jié)點出發(fā),通過轉(zhuǎn)發(fā)算法轉(zhuǎn)發(fā)到其周圍節(jié)點,更新節(jié)點狀態(tài)。與節(jié)點簇能相似,對于不同的簇,“游子”分為“正游子”和“負(fù)游子”:能力簇核心節(jié)點發(fā)出的是“正游子”,需求簇發(fā)出的是“負(fù)游子”。當(dāng)“正游子”和“負(fù)游子”在同一節(jié)點相遇,即發(fā)生“中和”,通過它們攜帶的信息,建立起能力簇核心節(jié)點和需求簇核心節(jié)點之間的直接連接。
基于上述依據(jù),提供一種基于游子的P2P網(wǎng)絡(luò)優(yōu)化方法,包括:
資源發(fā)布節(jié)點以第一設(shè)定發(fā)送速率向其鄰居節(jié)點發(fā)送包含指定資源標(biāo)識的正游子,資源需求節(jié)點以第二設(shè)定發(fā)送速率向其鄰居節(jié)點發(fā)送包含指定資源標(biāo)識的負(fù)游子,其中,正游子和負(fù)游子為包含有資源發(fā)布節(jié)點信息的信息包,負(fù)游子為包含有資源需求節(jié)點信息的信息包;
網(wǎng)絡(luò)中任一節(jié)點接收網(wǎng)絡(luò)中的正游子和負(fù)游子,并在有接收到兩個包含相同指定資源標(biāo)識正游子和負(fù)游子,將該正游子和負(fù)游子配對,建立該正游子和負(fù)游子所分別對應(yīng)的資源發(fā)布節(jié)點和資源發(fā)布節(jié)點之間網(wǎng)絡(luò)連接,同時將未配對的正游子和負(fù)游子轉(zhuǎn)發(fā)至其鄰居節(jié)點。
對于任一指定資源,網(wǎng)絡(luò)中任一節(jié)點僅保存一個包含該指定資源標(biāo)識的正游子的信息,對于任一指定資源,網(wǎng)絡(luò)中任一節(jié)點僅保存一個包含該指定資源標(biāo)識的負(fù)游子的信息。
任一指定資源標(biāo)識對應(yīng)的正游子所經(jīng)過的節(jié)點構(gòu)成以資源發(fā)布節(jié)點為核心節(jié)點的能力簇,任一指定資源標(biāo)識對應(yīng)的負(fù)游子所經(jīng)過的節(jié)點構(gòu)成以資源需求節(jié)點為核心節(jié)點的興趣簇。
能力簇上各節(jié)點配置有對應(yīng)于指定資源標(biāo)識的符號為正的簇能,且簇能隨其與核心節(jié)點之間隔節(jié)點數(shù)的增大而遞減,需求簇上各節(jié)點配置有對應(yīng)于指定資源標(biāo)識的符號為負(fù)的簇能,且簇能隨其與核心節(jié)點之間相隔節(jié)點數(shù)的增大而遞增。
能力簇上僅簇能絕對值大于第一設(shè)定閾值的節(jié)點繼續(xù)轉(zhuǎn)發(fā)對應(yīng)未配對的正游子;需求簇上僅簇能絕對值大于第一設(shè)定閾值的節(jié)點繼續(xù)轉(zhuǎn)發(fā)對應(yīng)未配對的負(fù)游子。
網(wǎng)絡(luò)中任一節(jié)點轉(zhuǎn)發(fā)正游子或負(fù)游子的過程具體包括步驟:
S101:接收到直接來源于其任一鄰居節(jié)點的正游子或負(fù)游子,并加入當(dāng)前接收到的正游子所對應(yīng)的能力簇、或當(dāng)前接收到的負(fù)游子所對應(yīng)的興趣簇中;
S102:判斷該節(jié)點是否處于與當(dāng)前接收到的正游子中所包含的指定資源標(biāo)識對應(yīng)興趣簇中,或
與當(dāng)前接收到的負(fù)游子中所包含的指定資源標(biāo)識對應(yīng)的能力簇中,
若為是,則建立包含有相同指定資源標(biāo)識的興趣簇和能力簇的核心節(jié)點之間的網(wǎng)絡(luò)連接,若為否,則執(zhí)行步驟S103;
S103:基于當(dāng)前接收到的正游子或負(fù)游子,生成對應(yīng)指定資源標(biāo)識的簇能,判斷該節(jié)點是否已配置有對于相同指定資源標(biāo)識對應(yīng)的同符號簇能,若為是,則執(zhí)行步驟S104,若為否,則保存當(dāng)前生成的簇能;
S104:保留絕對值更大簇能,并判斷簇能絕對值是否大于第一設(shè)定閾值,若為是,則生成對應(yīng)的正游子或負(fù)游子,并隨機(jī)向其鄰居節(jié)點轉(zhuǎn)發(fā)。其中,生成對應(yīng)的正游子或負(fù)游子中包含有該節(jié)點與核心節(jié)點之間的節(jié)點信息。
如圖2所示,本申請方法其具體過程如下:
S1:根據(jù)核心節(jié)點的情況計算發(fā)送速率v,v決定了在一個時間周期內(nèi)發(fā)出多少“游子”信息包。影響發(fā)送速率v的因素有:資源質(zhì)量,節(jié)點計算能力,節(jié)點網(wǎng)絡(luò)質(zhì)量,節(jié)點需求程度等。
S2.:核心節(jié)點根據(jù)發(fā)送速率v,生成“游子”并加入本節(jié)點的轉(zhuǎn)發(fā)隊列。
S3:由于一個節(jié)點可能受多個簇影響,節(jié)點轉(zhuǎn)發(fā)隊列中,根據(jù)“游子”對應(yīng)的簇在該節(jié)點的節(jié)點簇能排序和“游子”加入時間兩個因素排序,確定轉(zhuǎn)發(fā)順序。
S4.:轉(zhuǎn)發(fā)過程中,“游子”將隨機(jī)轉(zhuǎn)發(fā)到一個鄰居節(jié)點。
S5:“游子”到達(dá)節(jié)點后,根據(jù)節(jié)點簇能計算公式計算節(jié)點簇能。若該節(jié)點沒有受“游子”對應(yīng)的簇影響,則更新該節(jié)點節(jié)點簇能;若該節(jié)點已經(jīng)計算過節(jié)點簇能,則比較當(dāng)前計算值和之前的節(jié)點簇能,保留更大的值。
S6:若該節(jié)點的節(jié)點場強(qiáng)大于預(yù)設(shè)的有效簇能閾值,“游子”加入該節(jié)點的轉(zhuǎn)發(fā)隊列繼續(xù)轉(zhuǎn)發(fā)。
S7:若節(jié)點在轉(zhuǎn)發(fā)隊列中新加入的“正游子”在本節(jié)點有對應(yīng)的負(fù)簇能簇、或者新加入的“負(fù)游子”在本節(jié)點有對應(yīng)的正簇能簇,則提取它們的信息,將“負(fù)游子”的信息發(fā)往能力簇核心節(jié)點,“正游子”信息發(fā)往需求簇核心節(jié)點。兩個核心節(jié)點將建立直接連接。