劉班
摘要:通過對(duì)共享資源分布式索引(SRDI)服務(wù)的支持,JXSE為JXTA網(wǎng)絡(luò)中查詢請(qǐng)求的傳播提供了一個(gè)高效的機(jī)制。集合節(jié)點(diǎn)維護(hù)了一個(gè)由邊緣節(jié)點(diǎn)發(fā)布的廣告的索引。當(dāng)邊緣節(jié)點(diǎn)發(fā)布了一個(gè)新廣告,該節(jié)點(diǎn)就會(huì)使用SRDI服務(wù),將新廣告的索引保存到集合節(jié)點(diǎn)中。通過這種集合-邊緣節(jié)點(diǎn)的層次體系,查詢只在集合節(jié)點(diǎn)之間傳播,從而在很大程度上減少了搜索一個(gè)廣告所涉及的節(jié)點(diǎn)數(shù)目。JXTA網(wǎng)絡(luò)的操作依賴于其解析分布式查詢的能力。JXTA使用了一種稱為共享資源分布式索引(SRDI)的分布式算法,以創(chuàng)建并維護(hù)網(wǎng)絡(luò)中資源的一個(gè)總體索引。論述了SRDI的工作原理和簡單應(yīng)用實(shí)例。
關(guān)鍵詞:JXTA SRDI 共享資源分布式索引
中圖分類號(hào):TP393.02 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2016)09-0235-01
1 工作原理
每個(gè)集合節(jié)點(diǎn)都維護(hù)著自己的一套同節(jié)點(diǎn)組中已知集合節(jié)點(diǎn)的列表。一個(gè)集合節(jié)點(diǎn)可能從一套預(yù)先定義好的種子集合節(jié)點(diǎn)列表中獲取其它集合節(jié)點(diǎn)的信息。集合節(jié)點(diǎn)周期性地選擇另外一些隨機(jī)數(shù)量的集合節(jié)點(diǎn),并向這些集合節(jié)點(diǎn)發(fā)送其已知集合節(jié)點(diǎn)的一個(gè)隨機(jī)列表。同時(shí),集合節(jié)點(diǎn)也周期性的清除掉那些沒有響應(yīng)的集合節(jié)點(diǎn)。因而集合節(jié)點(diǎn)維護(hù)著其已知集合節(jié)點(diǎn)的一個(gè)大致上連續(xù)的網(wǎng)絡(luò)。
當(dāng)一個(gè)節(jié)點(diǎn)發(fā)布了一個(gè)新的廣告后,這個(gè)廣告就被SRDI服務(wù)使用主鍵(比如廣告名稱或ID)進(jìn)行了索引。SRDI只將廣告的索引存入集合節(jié)點(diǎn),從而最小化那些需要存入集合節(jié)點(diǎn)的數(shù)據(jù)量。集合節(jié)點(diǎn)也將廣告的索引存入另外一些集合節(jié)點(diǎn)之中,這些集合節(jié)點(diǎn)是根據(jù)廣告索引的一個(gè)哈希函數(shù)計(jì)算結(jié)果選擇的。
本地網(wǎng)絡(luò)中的查詢(比如在一個(gè)子網(wǎng)內(nèi))會(huì)借助一個(gè)定義為廣播或多播方式的傳播協(xié)議傳播到本地網(wǎng)絡(luò)的節(jié)點(diǎn)之中。如果接收到該查詢的節(jié)點(diǎn)本地緩存中包含要查詢的信息,則該節(jié)點(diǎn)會(huì)直接響應(yīng)發(fā)出該請(qǐng)求的節(jié)點(diǎn)。發(fā)往本地網(wǎng)絡(luò)以外的查詢首先被轉(zhuǎn)發(fā)到與本地網(wǎng)絡(luò)相連的集合節(jié)點(diǎn)上。該集合節(jié)點(diǎn)先在其本地緩存中查找是否有滿足查詢要求的信息。如果這個(gè)集合節(jié)點(diǎn)包含請(qǐng)求的信息,那么它就會(huì)直接回復(fù)發(fā)出該請(qǐng)求的節(jié)點(diǎn),并且不會(huì)再傳播這個(gè)請(qǐng)求。如果這個(gè)集合節(jié)點(diǎn)在其SRDI緩存中包含此請(qǐng)求資源的索引,那么它就會(huì)通知發(fā)布該資源的節(jié)點(diǎn),使那個(gè)節(jié)點(diǎn)可以直接響應(yīng)發(fā)出該請(qǐng)求的節(jié)點(diǎn),在這種情況下,集合節(jié)點(diǎn)只存儲(chǔ)了廣告的索引,而沒有存儲(chǔ)廣告本身,因而集合節(jié)點(diǎn)是不能直接響應(yīng)請(qǐng)求節(jié)點(diǎn)的。
如果集合節(jié)點(diǎn)沒有包含請(qǐng)求的信息,那么JXTA網(wǎng)絡(luò)就會(huì)使用一個(gè)默認(rèn)的有范圍限制的遍歷算法在一套集合節(jié)點(diǎn)中遍歷尋找包含了請(qǐng)求信息廣告索引的集合節(jié)點(diǎn)。為了減少一個(gè)查詢的TTL值,一個(gè)查詢的路徑可能會(huì)被一個(gè)網(wǎng)絡(luò)映射函數(shù)修改。為了避免可能導(dǎo)致網(wǎng)絡(luò)不穩(wěn)定的Ping-Pong命令的影響,一個(gè)跳躍計(jì)數(shù)用于指定請(qǐng)求被映射/轉(zhuǎn)發(fā)的最大次數(shù)。一旦查詢到達(dá)了節(jié)點(diǎn),該節(jié)點(diǎn)就可以直接回復(fù)最初發(fā)起該查詢的節(jié)點(diǎn)。
SRDI使用一個(gè)SHA1哈希尋址方案。在這個(gè)方案中,一個(gè)160位的哈希地址空間在一個(gè)集合節(jié)點(diǎn)的有序列表之中分配。當(dāng)索引被接收后,哈希函數(shù)就會(huì)根據(jù)這些索引計(jì)算出他們的復(fù)制地址,然后將他們復(fù)制到這些地址對(duì)應(yīng)的目標(biāo)集合節(jié)點(diǎn)之上。
2 配置實(shí)例
圖1是一種配置的實(shí)例。節(jié)點(diǎn)A是一個(gè)邊緣節(jié)點(diǎn),并配置為使用R1作為其集合節(jié)點(diǎn)(Rendezvous)。當(dāng)節(jié)點(diǎn)A生成一個(gè)發(fā)現(xiàn)或搜索請(qǐng)求后,該請(qǐng)求就會(huì)首先被發(fā)送給它的集合節(jié)點(diǎn)R1,在這個(gè)實(shí)例中,該請(qǐng)求也會(huì)通過多播方式發(fā)送給同一子網(wǎng)的其它節(jié)點(diǎn)。
3 結(jié)語
在SRDI的支持下,JXTA網(wǎng)絡(luò)可以快速地對(duì)一個(gè)節(jié)點(diǎn)發(fā)出的公告查詢進(jìn)行響應(yīng), 從而提高了JXTA網(wǎng)絡(luò)中節(jié)點(diǎn)間信息傳遞的效率,為基于JXTA框架的應(yīng)用程序開發(fā)提供了方便。
參考文獻(xiàn)
[1]楊天路,劉宇宏等.P2P網(wǎng)絡(luò)技術(shù)原理與系統(tǒng)開發(fā)案例[M].北京:人民郵電出版社,2007.
[2]Sing Li.JXTA2:具有高性能、海量伸縮性的P2P網(wǎng)絡(luò).
數(shù)字技術(shù)與應(yīng)用2016年9期