1 P2P的概念
P2P的全稱為peer to peer,它是近年bai來興起的du在Internet上實施網絡應用的新模式。對於P2P,目前zhi存在着許多不盡相dao同的定義,其中IBM的解釋如下:
P2P系統是由若干互聯協作的計算機構成,且至少具有如下特征之一:系統依存於邊緣化(非中央式服務器)設備的主動協作,每個成員直接從其他成員而不是從服務器的參與中受益;系統成員同時扮演服務器與客戶機兩種角色;系統應用的用戶能夠意識到彼此的存在,並構成一個虛擬或實際的群體。
Internet上的傳統應用模式為Client/Server模式,而P2P則可視為是Client/Server模式的一種變更,但兩者在工作模式上有着明顯的區別。本文將在描述Client/Server及P2P工作模式的基礎上,對二者在實際應用中的各項性能進行對比。
2 Client/Server的工作模式
在基於Client/Server模式的應用系統中,服務器是整個應用系統的資源存儲、用戶管理以及數據運算的中心,而每台客戶機也各自具有一定的處理功能,兩者相互配合共同實現完整的應用。
在Client/Server模式中,客戶機與服務器處在完全不同的角色中,其工作模式如下:
(1) 客戶機向服務期發送請求
(2) 服務器收到請求,對請求進行處理
(3) 服務器將處理結果返回給客戶機
(4) 客戶機收到結果,將其以一定格式形成界面表示。
依據其工作模式可知,在Client/Server模式中,客戶機對服務器有相當程度的依賴性,絕大部分的運算工作由服務器完成,而客戶機則主要完成請求的傳遞以及界面的表示,服務器與客戶機分工不同,界限明顯。
3 P2P的工作模式
與Client/Server模式相比,在實施P2P的系統中,服務器與客戶端的界限消失或者淡化,系統中每個參與應用的節點均可以以“平等”的方式共享其他節點的共享資源,如cpu 、存儲空間等。在P2P系統中,實體一般同時扮演兩種角色:客戶機和服務器。
從結構上看,P2P系統是分布式的,目前存在兩類P2P系統:混雜P2P系統與純粹P2P系統,前者由客戶機與中央服務器構成,其典型案例為Napster,后者則完全由客戶機構成,其典型案例為Gnutella
。本文將以Napster及Gnutella為例,分析這兩類P2P系統的工作模式。
l Napster(混雜P2P系統)的工作模式
整個系統由客戶機與目錄服務器(中央服務器)構成,其工作模式如下:
⑴ 戶機向目錄服務器發送搜索數據包,請求得到其他客戶機的網絡地址。
⑵ 錄服務器收到數據包后,將其他客戶機的地址發送給該客戶機。
⑶ 客戶機依據這些地址,向其他客戶機發送請求。
⑷ 對方收到請求后,對之進行處理,將結果返回給發送方。
與傳統的Client/Server模式相比,在非純粹的P2P系統中,中央服務器即目錄服務器的功能已被極大的削弱,僅為客戶機的尋址提供服務,不再承擔主要的運算工作。相反的,系統中的每個客戶機均可以作為服務器,接受其他客戶機發送的請求,為其他客戶機提供服務,整個系統對中央服務器的依賴性明顯降低。
l Gnutella(純粹P2P系統)的工作模式
Gnutella系統完全由客戶機構成,下面將以文件下載操作為例對其工作模式進行簡單描述:
⑴ 客戶機2向所有相鄰客戶機1、4、3發送搜索數據包,請求客戶機1、4、3為其提供文件A的下載服務。
⑵ 客戶機1、4、3將客戶機2的搜索數據包轉發給各自相鄰的客戶機5、6、7,該轉發工作將在接到數據包的后續客戶機上持續進行,直至系統中所有客戶機均收到該搜索數據包。
⑶ 客戶機1、3、4、5、6、7對自身數據進行查找,擁有文件A資源的客戶機5、7向客戶機2發送響應數據包。
⑷ 客戶機2接收到響應數據包,依據規則(如:路徑最短規則),選擇叢客戶機7下載文件A。
根據以上的描述可以看出,在純粹的P2P系統中,每個客戶機自身具有發現其他客戶機的能力,客戶機不需要通過目錄服務器就可以直接獲取其他客戶機的網絡地址,從而從根本上擺脫了對中心服務器的依賴。
4 P2P與Client/Server的性能對比
l 安全性
Client/Server模式:服務器是整個應用系統的資源存儲、用戶管理以及數據運算中心,只需設立專職的系統管理員,管理服務器的安全,制定對系統中所有用戶都適合的策略,就能有效地保障整個系統的安全,安全性較高。
P2P模式:每個客戶機都可以作為服務器,即系統中的每個用戶都可以各自為政,不似Client/Server那樣要受到服務器的約束,系統的安全管理比較困難。對於P2P,目前尚未有十分行之有效的安全解決方案。
l 資源可維護性
Client/Server模式:共享資源的管理模式為集中式,所有共享資源通常都集中存放在服務器上,資源的查找更新較為簡單,數據的備份與恢復較易實現,資源可維護性較好。
P2P模式:系統中的任何一台客戶機上均可存在共享資源,資源的查找更新比較復雜,數據備份工作也更為困難,可維護性較差。
l 可擴充性
Client/Server模式:隨着系統的Client數量的增多,服務端所需要的資源消耗也隨之增加,從而導致服務器性能的不斷下降,並最終制約了client的數目的增長,系統可擴充性較弱。
P2P模式:每個客戶機都具有很強的處理功能,極少依賴或不依賴中央服務器,因此,向系統中添加客戶機,不會產生因服務器性能下降而帶來的性能瓶頸問題,系統可擴充性強。
l 可持續性
Client/Server模式:由於大部分運算工作由服務端承擔,當服務端發生故障時,所有客戶端都無法進行正常工作,整個系統將陷於癱瘓之中。
P2P模式:每個客戶機均可作為服務器,當某台為其他客戶機服務的服務器故障時,其他客戶機可承擔該服務器的角色,接管發生故障的服務器的工作,可持續性高。
l 共享計算性能
Client/Server模式:客戶機共享服務器的計算能力,但服務器的計算能力是有限的,隨着客戶機數量的增加,每台客戶機分享到的計算能力也相應的減少,整個系統的性能下降。
P2P模式:每台客戶機的加入都可為系統增加一份計算能力,當越來越多的客戶機加入系統時,整個系統的共享計算性能亦會隨之增長。
l 網絡通訊性能
Client/Server模式:網絡通訊主要集中在客戶機與服務器之間,客戶機與客戶機之間一般並無直接交互行為。
P2P模式:對於純粹的P2P系統,客戶機將向系統中的所有節點發送請求包,尋找提供服務的節點,而對於混雜P2P系統,客戶機也將首先訪問中央服務器,獲取其他客戶機的地址,而后才能進行類似Client/Server模式的客戶機與服務器的數據通訊。較之Client/Server模式,P2P模式需要占用更多的網絡帶寬,網絡通訊更為頻繁。
5 結束語
由於P2P與Client/Server的工作模式不同,造成了兩者在各項性能上的較大差異。在實際應用中,可根據其各自的性能特點,結合實際情況有針對性的選擇系統的工作模式。例如:對於需要強調集中控制、集中管理以及安全性較高的系統,可采用Client/Server模式,而對於強調網絡數據的直接共享以及網上直接交互的系統,則應選擇P2P模式。