專利名稱:一種覆蓋網(wǎng)絡(luò)中的數(shù)據(jù)緩存管理方法
技術(shù)領(lǐng)域:
本發(fā)明屬于信息工程領(lǐng)域,涉及一種覆蓋網(wǎng)絡(luò)中的數(shù)據(jù)緩存管理的方法。
背景技術(shù):
覆蓋網(wǎng)絡(luò)是基于現(xiàn)有的物理通信網(wǎng)絡(luò)建立的一個(gè)虛擬的邏輯網(wǎng)絡(luò),覆蓋網(wǎng)絡(luò)不 需要修改網(wǎng)絡(luò)層的協(xié)議,無(wú)需更換大量網(wǎng)絡(luò)設(shè)備進(jìn)行重新部署,而是在應(yīng)用層加入對(duì)通 信的管理與控制來(lái)保證服務(wù)質(zhì)量,可以有效節(jié)約成本。目前典型的覆蓋網(wǎng)絡(luò)如P2P網(wǎng)絡(luò) 已經(jīng)在流媒體、即時(shí)消息、在線網(wǎng)絡(luò)游戲等領(lǐng)域取得了廣泛的應(yīng)用。一種在覆蓋網(wǎng)絡(luò)中開(kāi)展的重要需求就是通過(guò)一個(gè)數(shù)據(jù)源向多個(gè)節(jié)點(diǎn)發(fā)送數(shù)據(jù), 稱為數(shù)據(jù)多播,而保證數(shù)據(jù)多播可靠性與可擴(kuò)展性的關(guān)鍵是數(shù)據(jù)緩存管理方法。目前的 緩存管理方法是通過(guò)將網(wǎng)絡(luò)中節(jié)點(diǎn)的地址與緩存消息的哈希值進(jìn)行比較,當(dāng)兩者的差值 在一個(gè)指定的閾值范圍內(nèi)或精確匹配時(shí)就將消息緩存到指定節(jié)點(diǎn)。這樣雖然可以實(shí)現(xiàn)比 較精確的緩存者(bufferer)定位,但是哈希函數(shù)是一種預(yù)先定義的計(jì)算機(jī)制,當(dāng)有新節(jié) 點(diǎn)加入到覆蓋網(wǎng)絡(luò)中時(shí)哈希函數(shù)不能重新進(jìn)行定義,導(dǎo)致新節(jié)點(diǎn)不能成為緩存者,所以 這樣的緩存管理方法并不適用于動(dòng)態(tài)變化的網(wǎng)絡(luò)環(huán)境,可擴(kuò)展性較差。
發(fā)明內(nèi)容
針對(duì)上述存在的技術(shù)問(wèn)題,本發(fā)明提出了一種能用于動(dòng)態(tài)變化的覆蓋網(wǎng)絡(luò)中的 數(shù)據(jù)緩存管理方法,該方法通過(guò)對(duì)數(shù)據(jù)緩存者的均勻選擇來(lái)實(shí)現(xiàn)數(shù)據(jù)的分布式均勻緩存。為了解決上述技術(shù)問(wèn)題,本發(fā)明采用如下的技術(shù)方案 一種在覆蓋網(wǎng)絡(luò)中的數(shù)據(jù)緩存管理方法,包括以下步驟
S1、源節(jié)點(diǎn)SN隨機(jī)選擇一個(gè)鄰居節(jié)點(diǎn)LN并向其發(fā)送數(shù)據(jù)條目/的緩存請(qǐng)求消息
R ;
S2、當(dāng)緩存請(qǐng)求消息i 到達(dá)節(jié)點(diǎn)LN時(shí),節(jié)點(diǎn)LN將緩存請(qǐng)求消息i 的TTL值減1;
S3、節(jié)點(diǎn)LN檢查本地緩存是否包含緩存請(qǐng)求消息及,如果包含有緩存請(qǐng)求消息及, 則將緩存消息轉(zhuǎn)發(fā)給鄰居節(jié)點(diǎn),然后循環(huán)執(zhí)行步驟S2 ;否則執(zhí)行步驟S4 ;
S4、節(jié)點(diǎn)LN檢查緩存請(qǐng)求消息i 的TTL值是否為0,如果為0,執(zhí)行步驟S4-1;否 則,執(zhí)行步驟S4-2:
S4-1、節(jié)點(diǎn)LN將緩存請(qǐng)求消息i 放入本地緩存,然后執(zhí)行步驟S5 ; S4-2、節(jié)點(diǎn)LN生成隨機(jī)數(shù)X,其中,0< <1,比較χ與
本地緩存的滿載率/,其中,滿載率/為本地緩存中已存儲(chǔ)的數(shù)據(jù)條目個(gè)數(shù)與本地緩存所 得存儲(chǔ)數(shù)據(jù)條目個(gè)數(shù)的比值,如果χ大于/,則執(zhí)行步驟S4-1;否則,將緩存請(qǐng)求消息i 隨機(jī)轉(zhuǎn)發(fā)給鄰居節(jié)點(diǎn);
S5、節(jié)點(diǎn)LN向源節(jié)點(diǎn)SN發(fā)送反饋消息,源節(jié)點(diǎn)SN記錄數(shù)據(jù)條目/的緩存者LN, 并將數(shù)據(jù)條目/發(fā)送給緩存者LN。
上述TTL的初始值為T(mén)ZZb -Iog1//,其中,s為節(jié)點(diǎn)LN的鄰居節(jié)點(diǎn)個(gè)數(shù),N為
網(wǎng)絡(luò)規(guī)模。上述節(jié)點(diǎn)LN將緩存請(qǐng)求消息i 轉(zhuǎn)發(fā)給鄰居節(jié)點(diǎn)的步驟具體為
節(jié)點(diǎn)LN檢查緩存請(qǐng)求消息i 的TTL值是否為0,如果為0,將緩存請(qǐng)求消息i 的 TTL值加1后隨機(jī)轉(zhuǎn)發(fā)給節(jié)點(diǎn)LN的鄰居節(jié)點(diǎn);否則,直接將緩存請(qǐng)求消息i 隨機(jī)轉(zhuǎn)發(fā)給 節(jié)點(diǎn)LN的鄰居節(jié)點(diǎn);
上述節(jié)點(diǎn)LN將緩存請(qǐng)求消息i 放入本地緩存的步驟具體為 節(jié)點(diǎn)LN檢查本地緩存是否滿載,如果滿載,則刪除本地緩存中最早存入的緩存請(qǐng)求 消息并將緩存請(qǐng)求消息放入本地緩存;否則,直接將緩存請(qǐng)求消息R放入本地緩存。本發(fā)明中,當(dāng)源節(jié)點(diǎn)發(fā)出緩存請(qǐng)求消息i 后,每個(gè)收到緩存請(qǐng)求消息i 的鄰居 節(jié)點(diǎn)將檢查本地緩存中是否包含緩存請(qǐng)求消息及,如果包含并且此時(shí)緩存請(qǐng)求消息及的 TTL值為0,說(shuō)明緩存請(qǐng)求消息i 應(yīng)該被緩存到一個(gè)已經(jīng)緩存了緩存請(qǐng)求消息i 的節(jié)點(diǎn) 上,則將緩存請(qǐng)求消息繼續(xù)轉(zhuǎn)發(fā)到其他節(jié)點(diǎn);如果收到緩存請(qǐng)求消息的節(jié)點(diǎn)不包含 緩存請(qǐng)求消息及,則在緩存請(qǐng)求消息的TTL為0時(shí)將緩存請(qǐng)求消息i 緩存到本地緩存, 否則繼續(xù)轉(zhuǎn)發(fā)緩存請(qǐng)求消息及,在緩存過(guò)程中如果緩存區(qū)滿則將刪除最早緩存的消息來(lái) 釋放空間使得及可以被緩存。與現(xiàn)有技術(shù)相比,本發(fā)明具有如下優(yōu)點(diǎn)和有益效果
本發(fā)明引入了概率方法來(lái)控制是否緩存數(shù)據(jù),能有效適應(yīng)覆蓋網(wǎng)絡(luò)中節(jié)點(diǎn)的加入與 離開(kāi),具有良好的可擴(kuò)展性;同時(shí)本發(fā)明方法還將節(jié)點(diǎn)是否成為緩存者的判斷放在每次 節(jié)點(diǎn)接收到緩存請(qǐng)求消息時(shí),再通過(guò)TTL值控制緩存者與數(shù)據(jù)源的距離使得緩存者均勻 分布于網(wǎng)絡(luò)中,起到分散負(fù)載的作用,可以降低覆蓋網(wǎng)絡(luò)中“熱點(diǎn)”的出現(xiàn),提高網(wǎng)絡(luò) 的魯棒性。
圖1為緩存者決定過(guò)程的示意圖; 圖2為緩存管理方法的實(shí)際拓?fù)涫疽鈭D。
具體實(shí)施例方式本發(fā)明提出了一種覆蓋網(wǎng)絡(luò)中的緩存管理方法,該方法具體步驟如下
51、源節(jié)點(diǎn)SN從本地鄰居節(jié)點(diǎn)列表中隨機(jī)選擇鄰居節(jié)點(diǎn)LN并向節(jié)點(diǎn)LN發(fā)送數(shù)據(jù) 條目/的緩存請(qǐng)求消息及;
52、當(dāng)緩存請(qǐng)求消息i 到達(dá)節(jié)點(diǎn)LN時(shí),節(jié)點(diǎn)LN將緩存請(qǐng)求消息i 的TTL值減1; TTL值表示消息在網(wǎng)絡(luò)中的生存時(shí)間,每當(dāng)節(jié)點(diǎn)收到一個(gè)緩存請(qǐng)求消息時(shí),就將緩
存緩存請(qǐng)求消息的TTL值減1,TTL為整數(shù)值,其初始值與網(wǎng)絡(luò)規(guī)模有關(guān),一般由公式 THfl =Iogat Jf計(jì)算其初始值為IH11, s為節(jié)點(diǎn)LN的鄰居節(jié)點(diǎn)個(gè)數(shù),N為網(wǎng)絡(luò)規(guī)模;
53、節(jié)點(diǎn)LN檢查本地緩存是否包含緩存請(qǐng)求消息及,如果包含有緩存請(qǐng)求消息及, 則將緩存消息轉(zhuǎn)發(fā)給鄰居節(jié)點(diǎn),然后循環(huán)執(zhí)行步驟S2 ;否則執(zhí)行步驟S4 ;
節(jié)點(diǎn)LN將緩存請(qǐng)求消息i 轉(zhuǎn)發(fā)給鄰居節(jié)點(diǎn)的步驟具體為節(jié)點(diǎn)LN檢查緩存請(qǐng)求消息i 的TTL值是否為0,如果為0,將緩存請(qǐng)求消息i 的 TTL值加1后隨機(jī)轉(zhuǎn)發(fā)給節(jié)點(diǎn)LN的鄰居節(jié)點(diǎn);否則,直接將緩存請(qǐng)求消息i 隨機(jī)轉(zhuǎn)發(fā)給 節(jié)點(diǎn)LN的鄰居節(jié)點(diǎn);
54、節(jié)點(diǎn)LN檢查緩存請(qǐng)求消息i 的TTL值是否為0,如果為0,執(zhí)行步驟S4-1;否 則,執(zhí)行步驟S4-2:
S4-1、節(jié)點(diǎn)LN將緩存請(qǐng)求消息i 放入本地緩存,然后執(zhí)行步驟S5 ; 節(jié)點(diǎn)LN將緩存請(qǐng)求消息i 放入本地緩存的步驟具體為
節(jié)點(diǎn)LN檢查本地緩存是否滿載,如果滿載,則刪除本地緩存中最早存入的緩存請(qǐng)求 消息并將緩存請(qǐng)求消息放入本地緩存;否則,直接將緩存請(qǐng)求消息放入本地緩存; S4-2、節(jié)點(diǎn)LN生成隨機(jī)數(shù)X,其中,0<χ<1,比較χ與本地緩存的滿載率/,其
中,滿載率/可用公式/ = 計(jì)算得到,其中,《為已存儲(chǔ)在節(jié)點(diǎn)LN的本地緩存中的數(shù) 據(jù)條目個(gè)數(shù),S為節(jié)點(diǎn)LN的本地緩存能夠存儲(chǔ)的數(shù)據(jù)條目個(gè)數(shù),如果χ大于/,則執(zhí)行步 驟S4-1;否則,將緩存請(qǐng)求消息i 隨機(jī)轉(zhuǎn)發(fā)給鄰居節(jié)點(diǎn);
55、節(jié)點(diǎn)LN向源節(jié)點(diǎn)SN發(fā)送反饋消息,源節(jié)點(diǎn)SN記錄數(shù)據(jù)條目/的緩存者LN, 并將數(shù)據(jù)條目/發(fā)送給緩存者LN。圖2為一覆蓋網(wǎng)拓?fù)涫疽鈭D,圖中所示的覆蓋網(wǎng)絡(luò)由終端節(jié)點(diǎn)A、B、C、D、Z 構(gòu)成,網(wǎng)絡(luò)規(guī)模為6,源節(jié)點(diǎn)為S,Z為緩存者,即最終接收緩存請(qǐng)求的目標(biāo)節(jié)點(diǎn),緩存 請(qǐng)求消息及的TTL值為4,節(jié)點(diǎn)A、C的緩存滿載率/分別為0.6、0.4,節(jié)點(diǎn)B、D的緩 存中分別存在緩存請(qǐng)求消息及,節(jié)點(diǎn)D的緩存已滿。下面將結(jié)合附圖2對(duì)本發(fā)明作進(jìn)一步說(shuō)明
1)源節(jié)點(diǎn)S要將數(shù)據(jù)條目/緩存到覆蓋網(wǎng)絡(luò)中的其他節(jié)點(diǎn)上,先從自己的鄰居表中 隨機(jī)選出節(jié)點(diǎn)A,并向節(jié)點(diǎn)A發(fā)送一個(gè)緩存請(qǐng)求消息i ;
2)當(dāng)緩存請(qǐng)求消息i 到達(dá)節(jié)點(diǎn)A時(shí),節(jié)點(diǎn)A將緩存請(qǐng)求消息i 的TTL值減1,即 緩存請(qǐng)求消息及的TTL值變?yōu)? ;
3)節(jié)點(diǎn)A檢查本地緩存發(fā)現(xiàn)沒(méi)有緩存請(qǐng)求消息及,節(jié)點(diǎn)A檢查緩存請(qǐng)求消息i 的 TTL值,此時(shí)緩存請(qǐng)求消息i 的TTL值為3,節(jié)點(diǎn)A本地緩存的滿載率/為0.6,節(jié)點(diǎn)A 生成隨機(jī)數(shù)0.5,比較節(jié)點(diǎn)A生成的隨機(jī)數(shù)和節(jié)點(diǎn)A當(dāng)前緩存的滿載率/,節(jié)點(diǎn)A生產(chǎn)的 隨機(jī)數(shù)小于其當(dāng)前緩存的滿載率/,所以節(jié)點(diǎn)A將緩存請(qǐng)求消息i 轉(zhuǎn)發(fā)給其鄰居節(jié)點(diǎn)B ;
4)當(dāng)緩存請(qǐng)求消息i 到達(dá)節(jié)點(diǎn)B時(shí),節(jié)點(diǎn)B將緩存請(qǐng)求消息i 的TTL值減1,即 緩存請(qǐng)求消息的TTL變?yōu)?,節(jié)點(diǎn)B檢查本地緩存發(fā)現(xiàn)有緩存請(qǐng)求消息及,節(jié)點(diǎn)B直 接將緩存請(qǐng)求消息轉(zhuǎn)發(fā)給其鄰居節(jié)點(diǎn)C ;
5)當(dāng)緩存請(qǐng)求消息i 到達(dá)節(jié)點(diǎn)C時(shí),節(jié)點(diǎn)C將緩存請(qǐng)求消息i 的TTL值減1,即 緩存請(qǐng)求消息及的TTL變?yōu)? ;節(jié)點(diǎn)C檢查本地緩存發(fā)現(xiàn)沒(méi)有緩存請(qǐng)求消息及,節(jié)點(diǎn)C 檢查緩存請(qǐng)求消息及的TTL值,此時(shí),緩存請(qǐng)求消息i 的TTL為1,節(jié)點(diǎn)C本地緩存的 滿載率/為0.4;節(jié)點(diǎn)C生成隨機(jī)數(shù)0.2,小于節(jié)點(diǎn)C當(dāng)前的緩存滿載率0.4,所以節(jié)點(diǎn)C 將緩存請(qǐng)求消息轉(zhuǎn)發(fā)其鄰居節(jié)點(diǎn)D ;
6)當(dāng)緩存請(qǐng)求消息i 到達(dá)節(jié)點(diǎn)D時(shí),節(jié)點(diǎn)D將緩存請(qǐng)求消息i 的TTL值減1,即 緩存請(qǐng)求消息的TTL變?yōu)?,節(jié)點(diǎn)D檢查本地緩存發(fā)現(xiàn)有緩存請(qǐng)求消息及,節(jié)點(diǎn)D將 緩存請(qǐng)求消息的TTL加1,此時(shí)緩存請(qǐng)求消息i 的TTL值變?yōu)?,節(jié)點(diǎn)D將緩存請(qǐng)求
5消息及轉(zhuǎn)發(fā)給其鄰居節(jié)點(diǎn)Z ;
7)當(dāng)緩存請(qǐng)求消息i 到達(dá)節(jié)點(diǎn)Z時(shí),節(jié)點(diǎn)Z將緩存請(qǐng)求消息i 的TTL值減1,即 緩存請(qǐng)求消息及的TTL變?yōu)?,節(jié)點(diǎn)Z檢查本地緩存發(fā)現(xiàn)沒(méi)有緩存請(qǐng)求消息i 并發(fā)現(xiàn)本 地緩存已滿,節(jié)點(diǎn)Z刪除最早放入本地緩存的數(shù)據(jù)條目并將緩存請(qǐng)求消息i 放入節(jié)點(diǎn)Z的 本地緩存中;
8)節(jié)點(diǎn)Z向源節(jié)點(diǎn)S發(fā)送個(gè)反饋消息告知緩存請(qǐng)求消息i 已經(jīng)存入節(jié)點(diǎn)Z的本地緩 存中;
9)源節(jié)點(diǎn)S記錄數(shù)據(jù)條目/的緩存者為節(jié)點(diǎn)Z,并將數(shù)據(jù)條目/發(fā)送給節(jié)點(diǎn)Z。
權(quán)利要求
1.一種覆蓋網(wǎng)絡(luò)中的數(shù)據(jù)緩存管理方法,其特征在于,包括以下步驟51、源節(jié)點(diǎn)SN隨機(jī)選擇一個(gè)鄰居節(jié)點(diǎn)LN并向其發(fā)送數(shù)據(jù)條目/的緩存請(qǐng)求消息R ;52、當(dāng)緩存請(qǐng)求消息i 到達(dá)節(jié)點(diǎn)LN時(shí),節(jié)點(diǎn)LN將緩存請(qǐng)求消息i 的TTL值減1;53、節(jié)點(diǎn)LN檢查本地緩存是否包含緩存請(qǐng)求消息及,如果包含有緩存請(qǐng)求消息及, 則將緩存消息轉(zhuǎn)發(fā)給鄰居節(jié)點(diǎn),然后循環(huán)執(zhí)行步驟S2 ;否則執(zhí)行步驟S4 ;54、節(jié)點(diǎn)LN檢查緩存請(qǐng)求消息i 的TTL值是否為0,如果為0,執(zhí)行步驟S4-1;否 則,執(zhí)行步驟S4-2:S4-1、節(jié)點(diǎn)LN將緩存請(qǐng)求消息i 放入本地緩存,然后執(zhí)行步驟S5 ; S4-2、節(jié)點(diǎn)LN生成隨機(jī)數(shù)X,其中,0<χ<1,比較χ與本地緩存的滿載率/,其中,滿載率/為本地緩存中已存儲(chǔ)的數(shù)據(jù)條目個(gè)數(shù)與本地緩存所 得存儲(chǔ)數(shù)據(jù)條目個(gè)數(shù)的比值,如果χ大于/,則執(zhí)行步驟S4-1;否則,將緩存請(qǐng)求消息i 隨機(jī)轉(zhuǎn)發(fā)給鄰居節(jié)點(diǎn);55、節(jié)點(diǎn)LN向源節(jié)點(diǎn)SN發(fā)送反饋消息,源節(jié)點(diǎn)SN記錄數(shù)據(jù)條目/的緩存者LN, 并將數(shù)據(jù)條目/發(fā)送給緩存者LN。
2.根據(jù)權(quán)利要求1所述的覆蓋網(wǎng)絡(luò)中的數(shù)據(jù)緩存管理方法,其特征在于所述的TTL的奶始坑為T(mén)IZd =Iogi N,其中,χ為節(jié)點(diǎn)LN的鄰居節(jié)點(diǎn)個(gè)數(shù),#為網(wǎng)絡(luò)規(guī)模。
3.根據(jù)權(quán)利要求1或2所述的覆蓋網(wǎng)絡(luò)中的數(shù)據(jù)緩存管理方法,其特征在于 所述的節(jié)點(diǎn)LN將緩存請(qǐng)求消息i 轉(zhuǎn)發(fā)給鄰居節(jié)點(diǎn)的步驟具體為節(jié)點(diǎn)LN檢查緩存請(qǐng)求消息i 的TTL值是否為0,如果為0,將緩存請(qǐng)求消息i 的 TTL值加1后隨機(jī)轉(zhuǎn)發(fā)給節(jié)點(diǎn)LN的鄰居節(jié)點(diǎn);否則,直接將緩存請(qǐng)求消息i 隨機(jī)轉(zhuǎn)發(fā)給 節(jié)點(diǎn)LN的鄰居節(jié)點(diǎn)。
4.根據(jù)權(quán)利要求1或2所述的覆蓋網(wǎng)絡(luò)中的數(shù)據(jù)緩存管理方法,其特征在于 所述的節(jié)點(diǎn)LN將緩存請(qǐng)求消息i 放入本地緩存的步驟具體為節(jié)點(diǎn)LN檢查本地緩存是否滿載,如果滿載,則刪除本地緩存中最早存入的緩存請(qǐng)求 消息并將緩存請(qǐng)求消息放入本地緩存;否則,直接將緩存請(qǐng)求消息放入本地緩存。
全文摘要
本發(fā)明公開(kāi)了一種覆蓋網(wǎng)絡(luò)中的數(shù)據(jù)緩存管理方法,該方法通過(guò)對(duì)數(shù)據(jù)緩存者的均勻選擇來(lái)實(shí)現(xiàn)數(shù)據(jù)的分布式均勻緩存。本發(fā)明的技術(shù)方案中引入了概率方法來(lái)控制是否緩存數(shù)據(jù),能有效適應(yīng)覆蓋網(wǎng)絡(luò)中節(jié)點(diǎn)的加入與離開(kāi),具有良好的可擴(kuò)展性;同時(shí)還將節(jié)點(diǎn)是否成為緩存者的判斷放在每次節(jié)點(diǎn)接收到緩存請(qǐng)求消息時(shí),再通過(guò)TTL值控制緩存者與數(shù)據(jù)源的距離使得緩存者均勻分布于網(wǎng)絡(luò)中,起到分散負(fù)載的作用,可以降低覆蓋網(wǎng)絡(luò)中“熱點(diǎn)”的出現(xiàn),提高網(wǎng)絡(luò)的魯棒性。
文檔編號(hào)H04L12/56GK102014066SQ20101058492
公開(kāi)日2011年4月13日 申請(qǐng)日期2010年12月13日 優(yōu)先權(quán)日2010年12月13日
發(fā)明者朱永瓊, 楊紅云, 胡瑞敏, 譚小瓊, 陳鐃 申請(qǐng)人:武漢大學(xué)