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