Atitit JAVA p2p設計與總結 JXTA 2 JXTA 2 是開放源代碼 P2P 網路的第二個主要版本,它利用流行的、基於 Java 的參考實現作為構建基礎。在設計方面進行了重要的修改,以獲得更高的性能、海量伸縮性和可維護的 P2P 網路。本文建立在 Sing Li 於兩年前發表的 JXT ...
Atitit JAVA p2p設計與總結 JXTA 2
JXTA 2 是開放源代碼 P2P 網路的第二個主要版本,它利用流行的、基於 Java 的參考實現作為構建基礎。在設計方面進行了重要的修改,以獲得更高的性能、海量伸縮性和可維護的 P2P 網路。本文建立在 Sing Li 於兩年前發表的 JXTA 系列文章 Makng P2P interoperable的基礎上,為您介紹了這個平臺上最新的重要改變
JXTA具體來說是一種標準組件平臺,它提供了用於開發分散式服務和應用程式的基本組件。整套技術由一組開放源碼的P2P協議組成,這組協議使網路上任何連接著的計算設備的協作變為可能。基於協議而不是基於API(應用程式介面)意味著JXTA技術可以用任何語言在任何操作系統上運行。JXTA使可共同使用的P2P應用程式擁有了許多能力,其中包括:在能簡單地穿過防火牆通訊的不同設備的用戶間建立對等組,在網路上找對等體的能力——甚至穿過防火牆,簡化文件共用,自動偵測到新的網站目錄,對對等體的遠程監控,訪問深層網路的數據,以及提供安全的通訊。
作者:: ★(attilax)>>> 綽號:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿爾 拉帕努伊 ) 漢字名:艾龍, EMAIL:[email protected]
轉載請註明來源: http://www.cnblogs.com/attilax/
一些常見的P2P應用程式:聊天程式,游戲(尤其網路游戲),文件共用,協同工作和白板。
當然,P2P網路也應具備的下列特點:
① 互操作性:P2P系統很容易的找到並連接對方,彼此進行交流。
② 平臺無關性:P2P系統應該設計成獨立於編程語言如C,Java等,獨立於系統平臺如Windows和Unix,獨立於網路平臺如TCP/IP和BLUETOOTH。
③ 廣泛性:P2P系統可以運行在任何有數字處理功能的設備上。
JXTA是什麼
首先,JXTA是為了構建P2P網路而制訂的一組協議,是解決構建P2P網路必須要解決的問題的方法。共有六個協議(關於這些協議後面會詳細的談的)。
其次,JXTA是P2P應用程式開發的運行平臺。目前,JXTA首先推出了基於Java的參考實現的。
它三層組成:如圖1-1所示:
圖1-1 JXTA的層次結構
第一層是JXTA核心層,它包含了服務所必需要的核心功能,包括Peer、對等組、Peer發現、Peer通信、Peer監視和相關的安全原語;第二層是服務層,它提供了訪問JXTA協議的介面,包括對於P2P網路不是必需的,但很通用的功能,如查找、共用、索引、代碼緩存和內容緩存的機制;第三層是應用層,它使用服務來訪問JXTA網路和JXTA提供的功能,包括了應用JXTA服務開發出來得完整的P2P應用程式,如myJXTA,JXTA-CAD等應用程式。
下麵簡略的介紹一下JXTA的一些概念吧:
3.JXTA的一些概念
Peer(對等機):一個虛擬的通信點。一個用戶可以有多個Peer,一臺電腦或設備上同樣可以有多個Peer。
Peer Group(對等組):一種組織Peer並且發佈組內的特定服務的方式。可被創建、加入、退出;在一個組裡可以更新一個組成員的關係。
Pipe(管道):Peer之間的虛擬通道,可以透過防火牆的障礙進行通信。從而使得Peer在大多數網路情況下都可以通信。
Advertisement(廣告):一個XML文檔,用來描述JXTA的消息、Peer、對等組或者服務等。它必須遵守編碼、標簽和內容的標準,用來交換JXTA網路上可以獲得的任何信息。大多數JXTA的廣告編碼是使用UTF-8。
Message(消息):有兩種方式來處理消息:①使用XML格式;②使用二進位格式。
Rendezvous Peer(集合點):一個能夠處理來自其他Peer請求的Peer。也可以將請求委托給其他集合點。
Router Peer(路由Peer):一個支持Peer端點協議的Peer。
Gateway Peer(網關Peer):一個作為通信中繼的Peer。與Rendezvous Peer不同的是,它是用來在Peer間傳遞消息,而Rendezvous Peer是用來傳遞請求的。
好了說了這麼多的東西,連我都有點暈了。J 呵呵……下麵開始做一個例子來熟悉一下吧:
二、P2P通信的關鍵技術分析
1.P2P通信模型
在P2P網路中,任意兩個端點之間可實現直接通信。在基於C/S的網路中,客戶端可以通過向伺服器註冊來實現彼此之間的定位(獲得IP和埠)。對於P2P網路中,是如何實現彼此之間的定位和通信,下麵做一闡述。
2.獲得網路中可以通信端點的IP和埠
假設有一個端點A,欲和P2P網路中其他端點通信,在通信之前,端點A必須首先把自己的IP和埠通知P2P網路中的其他每一個端點。其他每個端點收到這個信息後,就獲得了端點A的IP和埠,隨後向端點A反饋自己的IP和埠信息,使端點A也獲得P2P網路中每個端點的IP和埠。
這裡有兩個技術可以完成端點A向其他端點通知其IP和埠的工作,一是廣播技術,二是多播技術。
廣播技術主要在區域網中使用,在區域網中的每一個端點(主機)都不得不接受並處理一個廣播數據包。因此為了避免網路阻塞,路由器均限制廣播數據包的通過。所以設計基於互聯網的P2P程式不適合採用廣播技術。
多播技術是一種允許一個或多個發送者(多播源)發送單一的數據包到多個接收者(一次的,同時的)的網路技術。 多播源把數據包發送到特定多播組,而只有屬於該多播組的地址才能接收到數據包。多播可以大大的節省網路帶寬,提高了數據傳送效率。減少了主幹網出現擁塞的可能性。多播組中的端點(主機)可以是在同一個物理網路, 也可以來自不同的物理網路(如果有多播路由器的支持)。因此,多播技術是我們的選擇。
註:廣播同一客戶端只能運行一個(埠占用),多播不會;
JXTA協議標準化了關於peers的幾種行為:
1)互相發現
2)自組織peer 組
3)廣告以及發現資源(在JXTA網路中,資源包括了很多含義:peers,管道,groups等)
4)相互通信
5)檢測對方
利用JXTA,可以容易實現以下幾個方面的互操作p2p程式
1)相互發現peers,不管peers是在防火牆還是NATs後
2)互相共用資源
3)查找內容
4)創建組(組是基於一定共同目的的集合)
5)遠程操作peer
6)安全通信
參考
弱弱的研究了下jxta - bailizi的專欄 - 博客頻道 - CSDN.NET.html
JXTA 2_ 具有高性能、海量伸縮性的 P2P 網路.html
JXTA——JAVA P2P網路編程技術(入門篇) - 一朶婲 - 博客頻道 - CSDN.NET.html
使用JXTA技術建立P2P網路 - 無名隨意 - 博客頻道 - CSDN.NET.html
(dtatil coede)使用JXTA技術建立P2P網路 - 無名隨意 - 博客頻道 - CSDN.NET.html