Atitit JAVA p2p設計與總結  JXTA 2

来源:http://www.cnblogs.com/attilax/archive/2016/04/16/5399575.html
-Advertisement-
Play Games

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系統應該設計成獨立於編程語言如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 呵呵……下麵開始做一個例子來熟悉一下吧:

 

二、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

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 數組概念 數組是存儲同一種數據類型多個元素的集合。也可以看成是一個容器。數組既可以存儲基本數據類型,也可以存儲引用數據類型。 數組的初始化 動態初始化:初始化時只指定數組長度,由系統為數組分配初始值。格式:數據類型[] 數組名 = new 數據類型[數組長度]; 數組長度其實就是數組中元素的個數。舉 ...
  • 一、什麼是nginx 是一個C語言開發的HTTP反向代理伺服器,性能非常高 一個俄羅斯的哥們開發的,官方提供的測試性能能夠達到5W的併發,我的天吶~,實際測試差不多是2W,而淘寶的牛人可以優化到200W 運行效率非常好,占用的資源也非常低,運行穩定 二、Nginx的應用場景 有哪些 1、http服務 ...
  • ![大話設計模式 抽象工廠模式 結構圖][1] 概述 抽象工廠模式(Abstract Factory)是所有形態的工廠模式中最為抽象和最具一般性的一種形態。抽象工廠模式是指當有多個抽象角色時,使用的一種工廠模式。抽象工廠模式可以向客戶端提供一個介面,使客戶端在不必指定產品的具體的情況下,創建多個產品 ...
  • 一、首先先建立一個Web Project 二、然後在程式根目錄建立文件夾“DataBase”和“Doc”,分別存放資料庫文件和保存SQL語句,建完如下所示: 三、建立資料庫“dbHibernate”,保存到文件夾“DataBase”下 四、書寫SQL語句,創建“student”表 -- 資料庫名稱 ...
  • 消息通信組件Net分散式系統的核心中間件之一,應用與系統高併發,各個組件之間解耦的依賴的場景。本框架採用消息隊列中間件主要應用於兩方面:一是解決部分高併發的業務處理;二是通過消息隊列傳輸系統日誌。目前業界使用較多的消息隊列組件有RabbitMQ、ActiveMQ、MSMQ、kafka、zeroMQ等 ...
  • 註:本文摘自劉偉老師的博客http://blog.csdn.net/lovelion/article/details/7838679,如有侵權,請聯繫本人! 1.類的UML圖示 在UML中,類使用包含類名、屬性和操作且帶有分隔線的長方形來表示,如定義一個Employee類,它包含屬性name、age ...
  • ENode架構圖 什麼是ENode ENode是一個.NET平臺下,純C#開發的,基於DDD,CQRS,ES,EDA,In-Memory架構風格的,可以幫助開發者開發高併發、高吞吐、可伸縮、可擴展的應用程式的一個應用開發框架。 開源項目地址:https://github.com/tangxuehua ...
  • 獲取【下載地址】 QQ: 313596790 【免費支持更新】三大資料庫 mysql oracle sqlsever 更專業、更強悍、適合不同用戶群體【新錄針對本系統的視頻教程,手把手教開發一個模塊,快速掌握本系統】 A 集成代碼生成器(開發利器)+快速構建表單; QQ:313596790 free ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...