首先咱們要先來區分一下下面的幾種體系結構:瀏覽器
CS:Client/Server 客戶-服務器結構
BS:Browser/Server 瀏覽器-服務器結構
P2P:Peer to Peer 對等結構安全
BS實際上是CS方式的一種特例,因此也應算在CS中。
CS:主機A若是運行客戶端程序,而主機B運行服務端程序,客戶A向服務端B發送請求服務,服務器B向客戶A提供服務,這種狀況下,就是以CS的方式進行通訊。咱們所指的客戶和服務器都是指通訊中涉及的兩個應用進程,而不是具體的主機。 服務器
P2P:以對等方式進行通訊,並不區分客戶端和服務端,而是平等關係進行通訊。在對等方式下,能夠把每一個相連的主機當成既是主機又是客戶,能夠互相下載對方的共享文件。好比迅雷下載就是典型的P2P通訊方式。 網絡
BS和CS通訊的實質相同,都是客戶端向服務器端發送請求,服務端接收並處理。可是BS相對於CS來講更方便,對電腦配置要求更低,而且易於維護,安全性在某種意義上要好些,CS中容易被反彙編,可是CS對於那種複雜的業務處理要更容易一些。分佈式
P2P的特色:性能
·資源共享spa
·資源分佈設計
·各結點既是資源的提供者又是資源的使用者blog
下面是三種特別適合用P2P設計的應用程序:索引
(1)文件分發 (2)對等方社區中組織並搜索信息 (3)Skype,一種至關成功的P2P因特網電話應用(暫不詳細說明)
1.P2P文件分發
在P2P文件分發中,每一個對等方都可以從新分發其全部的該文件的任何部分,從而協助服務器進行分發。
·P2P體系結構的自擴展性
對足夠大的N(對等方的數量):
客戶機/服務器體系結構的分發時間隨着對等方的數量N線性增長而且沒有界。
P2P體系結構,其最小分發時間曲線與log2N曲線相似,所以最小分發時間遠小於客戶機/服務器體系結構的分發時間。其自擴展性很強。
·BitTorrent
BitTorrent是一種用於文件分發的流行P2P協議。
2.在P2P區域中搜索信息
·集中式索引(初始「Napster」的設計)----P2P和CS的混合體
以下圖所示:
(1)初始時,全部的對等方要將自身的IP和可共享的文件名稱通知集中式索引服務器,該索引服務器從每一個活動的對等方那裏收集這些信息,從而創建起一個動態索引,將每一個文件拷貝映射到一個IP地址集合。
(2)當Alice須要下載一些文件時會將查詢內容發送給索引服務器,服務器將查詢結果返回給Alice(Bob的IP地址)。
(3)Alice根據收到的信息,從Bob處下載資源。
缺點:
·單點故障。·性能瓶頸和基礎設施費用。·侵犯版權。
·查詢洪泛(創建在「Gnutella」協議基礎上)
查詢洪泛採用徹底分佈式方法。在查詢洪泛中,索引全面地分佈在對等方的區域中。每一個對等方索引可供共享的文件而不索引其餘文件。
其擴展性差,尤爲是爲了防止某個對等方發起查詢,該查詢就會傳播到整個覆蓋網絡的每一個其餘對等方,從而產生大量流量。爲解決這個問題,設計者使用了受限查詢洪泛,即限制其傳播的最大跳數。
·層次覆蓋(由FastTrack獨創,Kazza和Morpheus也實現了這種文件共享協議)
該方法結合了上述兩種方法的優秀特徵,與洪泛查詢相似,層次覆蓋設計不使用專用的服務器(或服務器場)來跟蹤和索引文件。然而,與洪泛查詢不一樣的是,在層次覆蓋的設計中並不是全部對等方都是平等的。
以下圖所示,若是某對等方不是超級對等方,則它就是一個普通對等方,並被指派爲一個超級對等方的子對等方。
超級對等方維持着一個索引,該索引包括子對等方正在共享的全部文件的標識符、有關文件的元數據和相應子對等方的IP地址,但與前面的集中式索引不一樣,這裏的超級對等方並非一臺專用服務器,而是普通對等方。超級對等方之間能夠相互創建TCP鏈接,從而造成一個覆蓋網絡。