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