P2P文件共享首先要解決文件定位的問題。理論上,P2P搜索技術的搜索范圍將在幾秒鐘內以幾何級數增長,幾分鐘內就可搜遍幾百萬臺PC上的信息資源。當然,實際環境中還需要考慮網絡帶寬以及路由優化方面的問題。特別是P2P網絡規模比較大以及異構網絡存在、節點分散且不斷的離開加入所造成的不穩定、數據種類繁多等特點的存在。因此,設計高效的搜索機制,快速而準確地找到所需要的數據,才能使 P2P 網絡得以廣泛應用。
非結構化P2P 網絡解決了網絡結構中心化的問題,擴展性和容錯性較好。但是它采用應用層廣播的協議,導致消息量過大,網絡負擔過重,無法得知整個網絡的拓撲結構或組成網絡的各對等點的身份,新的對等點進入網絡時,系統必須向這個對等點提供一個對等點列表,但P2P網絡的強動態性決定了這個對等點列表不可能長時間有效,另外這類系統更容易受到垃圾信息,甚至是病毒的惡意攻擊。
P2P常用網絡搜索技術分析
Gnutella模型是應用最廣泛的純(非結構化)P2P拓撲結構,沒有索引服務器,每一個聯網計算機在功能上都是對等的,既是客戶機同時又是服務器。查詢信息不是發送至中央服務器,而是向所有的對等點發布。不需要向目錄服務器報告共享的信息,而是將請求泛洪到直接相連的鄰居,直到收到響應,或者達到了最大的泛洪步數。它采用了基于完全隨機圖的洪泛(Flooding)發現和隨機轉發機制。為了控制搜索消息的傳輸,通過TTL (Time To Live)的減值來實現。這種模型需要很多的網絡帶寬來進行資源的搜索工作。隨著聯網節點的不斷增多,網絡規模不斷擴大,通過這種洪泛方式定位對等點的方法將造成網絡流量急劇增加,從而導致網絡中部分低帶寬節點因網絡資源過載而失效,甚至存在比較嚴重的分區、斷鏈現象。導致一個查詢訪問只能在網絡的很小一部分進行,因此網絡的可擴展性不好。
之后,又出現了其他改進的分布式系統,如通過KaZaA引入超級節點。把查詢請求集中到超級節點,減少了網絡帶寬的消耗。相互連接的超級節點帶有指向各對等點數據的指針,而所有的請求通過路由到達超級節點。但是當查詢率相當高時, P2P系統仍然會出現一些問題:節點容易過載,系統運行容易出錯。而且隨著系統的增大這個問題就越發嚴重。
對現有的非結構化P2P網絡的改進
拓撲自適應
考慮到網絡的異構和各節點處理能力的不同,用節點每秒能處理的查詢量來表示節點的能力。通過計算,獲得各節點的處理能力,進而避免任何節點過載以處理更多的查詢,適應不斷增大的系統規模。
當源節點發布消息時,它通過非結構化P2P 網絡的自適應機制來定位其他的節點;各節點之間的聯系通過3次握手協議來完成。在源節點發送的信息前帶有惟一標識GUID。這一標識是任意產生的16位字符串,它能跟蹤信息的傳輸,并且將反饋信息原路路由回源節點。每一個節點都維護一個緩存,其中包含一張其他節點信息的表,表里有節點的IP地址,端口號和它們的能力。節點使用消息交換機制進行主機節點的信息交換,如果連接某一節點失敗,則在緩存表中將該節點標記為死節點。緩存定期刪除死節點的記錄。拓撲適應算法的目標是保證網絡中處理能力強的節點連接較多的鄰居節點,并且處理能力低的節點離能力高的節點很近。
為了實現這一目標,所有節點都將各自計算出自己的關聯度。關聯度不僅決定是否運行拓撲自適應,而且決定了該節點被使用的頻率。關聯度越低就越經常使用拓撲適應。用0到1之間的一個值來表示該節點與其當前鄰居節點的關聯程度。L=0表示關聯性很低,L=1表示關聯性很高。
如果一個節點連接的節點數低于允許的最小連接數,那么其L=0;如果L<1,將增加節點來提高L。隨著其鄰居增多,關聯程度也將提高,直至接近或到達其處理能力。對于任一節點X的所有鄰居計算Mi=Ci /i(其中Ci 表示節點的處理能力,i表示節點的鄰居數),則L=∑Mi /Cx ;若求得的L>1.0或X的鄰居數大于設置的最大鄰居數,則L=1。
如果X節點要增加其鄰居,那么它將從它的緩存中任意選擇一些節點作為其鄰居的候選,從這些任選的節點中,X將選擇最大處理能力大于它的節點。如果候選的節點中沒有滿足這一條件的,它任意從候選節點中任意選擇一個作為其鄰居。假定被選的備用節點為Y,X將與Y 進行3次握手,在握手時,網絡中的每一個節點將決定是否接受這個新節點作為其鄰居,根據該節點的處理能力、已經存在節點以及新節點的關聯度數作出判斷:
若現有的鄰居數+1<=最大鄰居數,則接受Y;
否則,{從X的鄰居中選擇能力低于Y節點能力的節點,放在子集S中。
如果不存在這樣的節點,則拒絕Y;
否則,{從子集S選擇度數最大的節點作為候選節點Z。
如果Y的處理能力大于X的所有鄰居節點的能力,或Z節點的鄰居數大于Y節點的鄰居數, 則放棄Z節點,接受Y節點;
否則,拒絕Y節點
單跳復制
為了提高搜索效率,每個節點動態維護其鄰居節點內容的索引,這些索引在鄰居節點間建立連接時相互交換信息獲得,并周期性進行增量更新。這樣,當一個節點收到查詢信息,它不僅可以返回自己相匹配的內容,也可以返回其鄰居節點的相匹配的內容。
當某一鄰居節點因為拓撲自適應或節點離開系統而變成非鄰居節點時,該鄰居節點的的索引也要更新。
隨機搜索
利用TTLs (Time-to-Live)和節點查詢記錄來避免冗余路徑查詢。發送查詢的起始節點給發送的查詢分配一個GUID。各中間節點將記錄它將查詢(GUID)轉發給的鄰居節點,使帶有相同GUID的查詢訪問不再轉發給已經轉發過的鄰居,這樣,避免同一查詢兩次經過同一路徑。每一個查詢帶有一個最大響應數的參數,即查詢得到的匹配答案的最大數。
除了TTL,查詢持續時間都將受到最大響應的限制。節點找到一個匹配的答案,查詢的最大響應值都將減1。如果查詢的最大響應值減到0,查詢將結束。查詢反饋信息將按原路徑發回源節點。如果節點對查詢有響應,無論相匹配的內容是來自自己本身,還是鄰居節點的,都將擁有匹配內容的節點地址追加到該查詢。這樣就能保證對同一文件查詢不會產生重復的回復;只有當節點有相匹配的內容并且不在查詢消息列表中時,才生成查詢響應。
模擬結果
我們通過模擬比較改進資源定位搜索方法(IRS)與經典的方法FLOOD法和SUPER(Supernode mechanism),在評價中定義兩個參數:1.失效點FP(failure point):一個節點在閾值點的查詢率,超過該閾值點,查詢的成功率低于90%,這個參數可直接反映系統的處理能力,并與查詢時延相關。 2.跳數(FP-HC):在FP點之前的平均跳數(找到所查詢文件所經過的跳數)。下表是在不同復制因子下改進方法(IRS)與FLOOD法和SUPER的比較結果。
可以看出,改進的方法(IRS)隨復制率的增高,性能明顯優于其它兩種方法。不難看出,這是由于在SUPER方法中,超級節點之間使用洪泛法限制了其系統的可擴展性。IRS方法可以提高P2P系統的查詢處理能力,并且在系統規模較大、查詢量較大的時候,實現較高的查詢成功率,具有較好的可擴展性。由上表可以看出IRS方法的可擴展性與系統的復制率有關。
綜上所述,P2P系統最大的特點就是用戶之間直接共享資源,其核心技術就是分布式對象的定位機制,這也是提高網絡可擴展性、解決網絡帶寬被吞噬的關鍵所在。在充分考慮到節點多樣性的基礎上,通過拓撲自適應,單跳復制,搜索機制等方面提出了非結構化P2P網絡系統網絡上資源定位,資源搜索改進方法,以減少了查詢需要發送的消息和需要訪問的節點數,在提高系統性能提高的同時,保證系統的健壯性。
未來的網絡將呈現大規模分布式、全球性計算和全球性存儲的特征,從長遠的趨勢來看,對于訪問和傳輸服務的需求必將遠遠大于對于計算功能的需要。隨著分布式系統經典問題的解決以及優化的資源動態分配和資源恢復技術的成熟,P2P與網格技術必將結合起來,以影響整個計算機網絡的概念和人們的信息獲取模式。