作者:??????來源:zz?????發表時間:2006-06-19?????瀏覽次數:?67??????字號:大??中??小
轉載:轉載請保留本信息,本文來自http://www.matrix.org.cn/resource/article/0/74.html?
什么是P2P?很難有一個確切的解釋,也許是由于有著不同的觀點或理解。
BW(JXTA?book的作者)給出這樣一個定義:P2P使得任何網絡設備可以為其他網絡設備提供服務(Peer-to-peer?technology?enable?any?network-aware?device?to?provide?services?to?another?network-aware?device)。
我個人的理解是P2P網絡是:一個網絡中的所有節點(設備)的角色、行為、責任和義務都是平等的(對等的)。
看一下我們現今的網絡結構:
大多數情況下,我們使用一種稱之為客戶機/服務器(Client/Server,簡稱C/S)的網絡模式。比如流行的WWW,各種網絡游戲等。它們的共同特點是
都需要有一個中央服務器來處理絕大部分的運算工作。
客戶端和服務段處在完全不同的角色中??蛻舳烁粍樱ǔJ前l送一個請求。而服務端處在一個支配的地位,獲取這個請求,進行計算,然后返回一個結果來相應這個請求。
即便如Email這種看上去比較不同的網絡應用,也對Client和Server有著明顯得分工。
這類網絡應用模型有著一個明顯的缺點就是:隨著服務的客戶數目的增多,服務端所需要占用的資源也隨之增加,顯而易見最終制約了client的數目的增長。
(這種集中式的模型似乎違背了Internet的初衷,the?ARPANET)。
并且,我們需要許多隱藏在Internet深處的服務的支持才能獲取我們需要的服務,如DNS,如路由。這也就是為什么即便每臺機器都開設一個web?server,也無法被全部被訪問到。(由于IP地址的限制,不可能每臺機器都有一個靜態的IP?;蚴怯捎趦炔烤W絡的原因,也許即便你有一個靜態不變的內部地址,也可能沒有一個路由到達你的機器或是訪問被防火墻過濾9)。
并且由于現在的Internet過分的依賴于DNS和網關,只要其中有一個服務出了"問題",相應的其他任何服務就都無法獲得。
"Edge?of?Internet":
另一個有趣的現象是:由于剛才所說的DNS和路由的限制,可能有數以億計的連在Internet上的計算機無法被其他機器訪問。這些計算機組成了所謂的"Edge?of?Internet"。(它們屬于Internet的一部分,卻不被整個Internet認可,就像處在社會邊緣一般充滿著矛盾和孤寂)。我們來做個計算:
假設同時只有1千萬臺100MHz的計算機連接在網絡上(事實上遠不只這些),每臺可以提供100兆的空余空間、1000bps的空余帶寬和10%的空余CPU時間。因此這些機器總共提供了10PB(10^15bytes)的存儲空間,100億bps的帶寬(大約是1.25GBps)和10萬MHz的計算能力!這是多么可觀的數字,如果都能加以利用,或是只是開發其中的一部分…….
Google的麻煩:
我們通常使用的Google就是一個著名的集中式網絡服務的例子。Google中檢索的信息依賴著一個巨大的數據庫(大于1.6?billion,即便如此Google所保存的數據也只占整個Internet的很小一部分,幾個數量級的差別)。這個數據庫必須每天更新,以保證信息的即時性,即便如此Google便利一遍整個Internet也需要十幾天的時間。如何能更好的提供搜索服務是很多現今的搜索引擎始終沒有辦法解決的問題。除此之外,Google還有很多麻煩:
Google的服務是建立在一個龐大數目的Linux集群上的(超過10000臺)。維護這么龐大的一群主機就夠受的了。
一旦Google發生了故障,所有的服務就都玩完了。不要說Google發生故障,如果DNS,路由等除了或者或那的問題……。
由于Internet中數據的數量龐大且種類多樣。Google不僅無法提供一個精確的索引,也無法提供一個完整的索引。
Google只能看到"靜態"的數據,它無法訪問到處在數據庫里的數據。
P2P的承諾(宣言)
提供一個真正的完全平等,自由的互聯網。
使用很少的資源消耗而提供高可靠性的服務。
這似乎非常抽象,事實上連我自己也不太清楚我在說些什么。舉個例子先:
音樂愛好者kert想在Internet上找一首歌,"Sex?Pistol"的"My?way"。通常他使用Google來搜索相關的關鍵字"Sex?Pistol"?+"My?way"。由于只是簡單的依賴關鍵字匹配的方式,Google通常會返回幾百或是幾千條匹配的記錄,當然包括不相關的那些(絕大多數,尤其是當你的關鍵字中出現諸如Sex之類的詞匯)。作為一個音樂愛好者,kert通常會耐著性子在這幾千條記錄中仔細尋找(頭暈),有時找到一個可能性極大的鏈接卻因為鏈接失效而傷心。想象一下,Google已經是世界上最好的搜索引擎之一了。
如果換成一個P2P網絡應用又會如何?P2P網絡會將kert的搜索請求發送給每一個連接在網絡上的節點(peer),每個節點會在自己所管理的資源中查找是否含有匹配的對象,然后對kert的請求做出回答。和那種集中式的搜索服務相比,將相應交給每一個節點的好處是顯而易見的:
由于響應由節點即時完成,而不是像集中式的服務那樣將在可能已經過期的數據中尋求答案。這種方式更準確,不會出現讓人沮喪的過期連接。另外由于是由節點自由處理請求,而非傳統的在靜態網頁中尋找答案,精確程度更高。
請求分布到了Internet的每個角落,信息更完整,當然得到結果的可能性就越大。
請求分布到了Internet的每個角落,不需要大量的主機群,不會有網絡阻塞。
kert很肯定這個世界上有與他愛好相同的fans,因此他信心十足:)。
剛才我們提到,一個請求會發送至P2P網絡中的每個節點。這似乎很不可思議,但是事實上(至少在理論上)這是P2P網絡的特性之一。因此在P2P網絡中,你所享受的服務的是一個由成千上萬臺計算機組成的cluster提供的。多么神奇而令人興奮!
即便是最基本的"路由"服務,也是有所有節點共同提供的。因此不在會有因為某個結點的故障或是人為原因而造成的無法鏈接的現象了。你面對的是一個友善、自由、平等的群體。而非強權(路由)和專制(DNS)。