Atitit JAVA p2p設計與總結 JXTA 2

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系統應該設計成獨立於編程語言如CJava等,獨立於系統平臺如WindowsUnix,獨立於網絡平臺如TCP/IPBLUETOOTH網絡

③     普遍性:P2P系統能夠運行在任何有數字處理功能的設備上。編程語言

 

 

JXTA是什麼

       首先,JXTA是爲了構建P2P網絡而制訂的一組協議,是解決構建P2P網絡必需要解決的問題的方法。共有六個協議(關於這些協議後面會詳細的談的)。

       其次,JXTAP2P應用程序開發的運行平臺。目前,JXTA首先推出了基於Java的參考實現的。

它三層組成:如圖1-1所示:

1-1  JXTA的層次結構

第一層是JXTA核心層,它包含了服務所必須要的核心功能,包括Peer、對等組、Peer發現、Peer通訊Peer監視和相關的安全原語;第二層是服務層,它提供了訪問JXTA協議的接口,包括對於P2P網絡不是必需的,但很通用的功能,如查找、共享、索引、代碼緩存和內容緩存的機制;第三層是應用層,它使用服務來訪問JXTA網絡和JXTA提供的功能,包括了應用JXTA服務開發出來得完整的P2P應用程序,如myJXTAJXTA-CAD等應用程序。

       下面簡略的介紹一下JXTA的一些概念吧:

3JXTA的一些概念

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

相關文章
相關標籤/搜索