陶 南
摘要:介紹了當今流行的P2P網(wǎng)絡搜索模型。對各種模型的代表軟件及其工作原理進行深入的剖析和比較。
關鍵詞:P2P網(wǎng)絡搜索JXTA
1P2P網(wǎng)絡模型的分類與比較
目前,P2P網(wǎng)絡的模式有很多種,主要分類如下:
(1)按系統(tǒng)中是否存在集中式服務器,P2P系統(tǒng)可分為純粹的P2P系統(tǒng)和混雜式P2P系統(tǒng)(Hybrid P2P或Server-mediated P2P)。前者不存在任何功能的集中式服務器;后者的系統(tǒng)中存在特定功能的集中式服務器,但該服務器并不充當整個系統(tǒng)的核心。
(2)按系統(tǒng)中用戶的行為方式,P2P系統(tǒng)可分為多對多、少對少和少對多三類結構。在第一類結構中,系統(tǒng)操作的雙方用戶人數(shù)基本相當,基于因特網(wǎng)的開放式文件共享系統(tǒng)多數(shù)屬于此類,如GnuteUa、Freenet、Napster等;在第二類結構中,系統(tǒng)是封閉的,即系統(tǒng)的發(fā)起者構建一個系統(tǒng),不允許他人加入,在系統(tǒng)運行期間,所有參與者的地位均等;第三類系統(tǒng)屬于典型的開放式分布計算系統(tǒng),系統(tǒng)中存在少量的中央服務器,為多數(shù)用戶所使用。
(3)按成員標識管理方式,P2P計算系統(tǒng)可分為集中式和局部式。前者是最直接又比較普通的方式,它創(chuàng)建一個全局的名字空間,保證所有實體的名字都是惟一的;后者既不需要集中式授權機制,也無需求助于分層結構,于是也很自然地采用了公共密鑰加密機制。
(4)按實體發(fā)現(xiàn)(Discovery)方式的不同,對等計算系統(tǒng)可分為客戶/服務器務器模型、直接模型和中介模型。在第一種模型中,可訪問實體的發(fā)現(xiàn)需要求助于特定的集中式服務器;在第二種模型中,系統(tǒng)中每個實體負責自身的標識功能,以保證能被其他實體所發(fā)現(xiàn):第三種模型是最常見的方式,核心實現(xiàn)方法是請求轉(zhuǎn)發(fā)、進行匯合。
2常見模型及其代表軟件的工作原理
2.1集中索引模型
集中索引模型并不是一種嚴格意義上的P2P網(wǎng)絡模型。在集中索引模型中,一臺或多臺有特殊用途的服務器為對等體提供目錄服務。對等體向目錄服務注冊關于自身的信息(其名稱、地址、資源和元數(shù)據(jù)),并根據(jù)對目錄服務器中信息的查詢來定位其他對等體。一旦發(fā)現(xiàn)其他對等體的位置信息,該對等體將直接與其建立聯(lián)系。
P2P領域中集中索引模型的最佳示例是Napster。
Napster的工作原理如圖1。目錄服務器本身可是對等體(或?qū)Φ润w組成的網(wǎng)絡),也可只擔當目錄而不作它用。
目錄服務器位置必須配置到每個對等體中,這可以通過申請一個用戶帳戶來實現(xiàn)。在加入P2P網(wǎng)絡時,對等體就已經(jīng)將共享資源信息注冊到目錄服務器。結合圖1,目錄服務器中已經(jīng)存放了每個對等體所擁有的資源信息。當對等體ml希望查找資源E時,它首先向目錄服務器發(fā)送請求,然后,目錄服務器根據(jù)注冊表向ml返回資源E所在對等體m5的地址,接下來ml直接向m5發(fā)送關于E的請求,m5收到請求后發(fā)送資源E至ml。
這種模型的優(yōu)點體現(xiàn)在:(1)易于維護索引,查詢效率高;(2)由于只需接收返回的結果,客戶對等體負載低。
這種模型的缺點有:(1)對目錄服務器過于依賴易導致單點崩潰;(2)對目錄服務器的性能和網(wǎng)絡帶寬要求過高,可擴展性差:(3)缺乏統(tǒng)一完善的授權及認證機制,安全性較低。
2.2分布式P2P模型
此類P2P系統(tǒng)既沒有專門的中心目錄服務器也不對網(wǎng)絡拓撲和資源放置進行控制,因此也稱之為分布式非結構化模型。網(wǎng)絡由若干僅僅遵循某種協(xié)議的節(jié)點組成,雖然其網(wǎng)絡拓撲也可能具有某些松散特性,但是資源的存放卻并不依賴任何先驗知識或結構模式,Gnutella是這種設計模式的一個典型例子。為了查找特定的資源,節(jié)點必須向它的鄰居提出請求,這里使用了“洪泛”算法,通過IP多播技術讓對等點定期發(fā)布資源和傳播查詢。所有的對等體在任何時候既是查詢的發(fā)出者,又是搜索處理的執(zhí)行者。
圖2說明了Gnutella的工作原理。假定ml已經(jīng)通過發(fā)送Ping/Pong消息得知鄰居是m2和m3,m3的鄰居是m4和m5。當對等體ml希望查找資源E時,它首先向其鄰居m2和m3發(fā)送請求,然后,若m2和m3沒有資源E,則分別向各自的鄰居轉(zhuǎn)發(fā)該請求,如m3向m4和m5轉(zhuǎn)發(fā)關于E的請求,如果m5發(fā)現(xiàn)符合此請求的資源E,則根據(jù)數(shù)據(jù)包內(nèi)的信息將資源E直接發(fā)送至ml。
這種模型具有的優(yōu)點包括:(1)完全的分布性使之具有最大的容錯性,不會出現(xiàn)單點崩潰現(xiàn)象;(2)能潛在地獲得最多的查詢結果。
這種模型的缺點主要有:(1)隨著對等體數(shù)量的增加,網(wǎng)絡可能因過多的查詢消息而發(fā)生擁塞;(2)無法預知網(wǎng)絡的拓撲結構;(3)查詢的有效期和正確性都不能保證:(4)能力有限的對等體易成為系統(tǒng)瓶頸。
2.3混合P2P模型
在混合P2P模型中,P2P網(wǎng)絡由提供查詢服務的su—per-peer(超級對等體)和其他客戶對等體組成。在資源共享方面,所有對等體的地位相同。這樣就形成了一個個以super-peer為中心的自治系統(tǒng),每個對等體在加入此類網(wǎng)絡時都需要連接到某個特定的super-peer上。
JXTA網(wǎng)絡就是這種模型的典型代表。它推出了聚集超級節(jié)點網(wǎng)絡的概念,動態(tài)而自適應地將P2P網(wǎng)絡成員劃分為邊緣節(jié)點和匯聚節(jié)點。邊緣節(jié)點存放實際的資源通告,而通告的索引則存于匯聚節(jié)點中,這使得聚集超級節(jié)點網(wǎng)絡具有更強的擴展性,也避免了匯聚節(jié)點存放過期通告帶來的問題。傳播查詢只發(fā)生在更穩(wěn)定且數(shù)量更少的匯聚點中。這大大增強了網(wǎng)絡的伸縮性。并降低了廣播風暴的可能性。此外,JXTA的默認解析策略也是基于匯聚節(jié)點的,這是一種基礎的、最小化的發(fā)現(xiàn)機制,在發(fā)現(xiàn)通告的同時還可以提供hook以使高層發(fā)現(xiàn)服務(通常都是基于結構化模型的)如CAN、Chord等來參與發(fā)現(xiàn)過程。
JXTA2網(wǎng)絡的查詢過程如圖3所示。每個邊緣節(jié)點在發(fā)布通告的同時將其索引至匯聚節(jié)點,這可以在發(fā)布通告時同步發(fā)送,也可以使用共享資源分布式索引(Shared-Resource Distributed Index SRDI)服務的后臺進程定期發(fā)送。圖3中PeerA和PeerB將各自的通告索引發(fā)送至直接相連的匯聚對等體Rdvl和Rdv2。當PeerA查詢位于PeerB的資源通告時,首先將查詢提交給RdvI,Rdvl查看是否有關于此通告的索引,若沒有則將此查詢轉(zhuǎn)發(fā)給與其相連的Rdv2。Rdv2發(fā)現(xiàn)了此通告的索引并將查詢傳至索引所指向的PeerB。現(xiàn)在PeerB只須把相應的資源通告發(fā)送給PeerA了。需要指出的是不論所處的網(wǎng)絡類型如何,任何節(jié)點都可以作為匯聚節(jié)點,如圖3中Peer2位于NAT后,仍然可以成為匯聚節(jié)點。
這種模型優(yōu)點主要體現(xiàn)在對網(wǎng)絡擴展性的良好支持上,主要表現(xiàn)為:(1)根據(jù)對等體的能力合理分擔負載;(2)與分布式P2P模型相比,大量減少查詢消息傳播的數(shù)量;(3)與集中索引模型相比,降低了單點崩潰的可能性。
這種模型不足在于實現(xiàn)時缺乏高效完善的網(wǎng)絡組織模式,包括:(1)super-peer間的組織模式;(2)客戶對等體與super-peer間的組織模式;(3)super-peer間的負載平衡。
3結束語
本文介紹了P2P的定義及網(wǎng)絡搜索模型的分類,并對各種模型的代表軟件及其工作原理進行深入的剖析和比較,對P2P網(wǎng)絡的經(jīng)營和開發(fā)有一定的借鑒作用。