Atitit JAVA p2p設計與總結 JXTA 2html
JXTA 2 是開放源代碼 P2P 網絡的第二個主要版本,它利用流行的、基於 Java 的參考實現做爲構建基礎。在設計方面進行了重要的修改,以得到更高的性能、海量伸縮性和可維護的 P2P 網絡。本文創建在 Sing Li 於兩年前發表的 JXTA 系列文章 Makng P2P interoperable的基礎上,爲您介紹了這個平臺上最新的重要改變java
JXTA具體來講是一種標準組件平臺,它提供了用於開發分佈式服務和應用程序的基本組件。整套技術由一組開放源碼的P2P協議組成,這組協議使網絡上任何鏈接着的計算設備的協做變爲可能。基於協議而不是基於API(應用程序接口)意味着JXTA技術能夠用任何語言在任何操做系統上運行。JXTA使可共同使用的P2P應用程序擁有了許多能力,其中包括:在能簡單地穿過防火牆通信的不一樣設備的用戶間創建對等組,在網絡上找對等體的能力——甚至穿過防火牆,簡化文件共享,自動偵測到新的網站目錄,對對等體的遠程監控,訪問深層網絡的數據,以及提供安全的通信。web
做者:: ★(attilax)>>> 綽號:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿爾 拉帕努伊 ) 漢字名:艾龍, EMAIL:1466519819@qq.com編程
轉載請註明來源: http://www.cnblogs.com/attilax/windows
一些常見的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 呵呵……下面開始作一個例子來熟悉一下吧:
2、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