熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java高級技術 >> 正文

P2P的Jxta解決之道

2022-06-13   來源: Java高級技術 

     
  摘要
  點對點(PP)網絡無疑是當前最熱門的話題之一在這個領域中Sun推出了Jxta一個用於PP應用開發的網絡計算平台這篇文章介紹PP和Jxta在這方面所作的努力適合有意開發PP應用的編程者閱讀
  今日的Internet正面臨著一場革命這場革命正在為改變Internet的一個基本的特性而努力這就是網絡的終端(或者說客戶端)例如桌面電腦移動電話PDA等正要求一個更優越的網絡地位以結束以服務器為主導的Internet這就是PP
  PP是一個網絡的模型它的基本概念就是任何的節點都可以作為服務器或者客戶端傳統的客戶/服務器網絡都有預定義的客戶和服務器節點而PP則不同PP可提供一些額外的特性而這些特性使用傳統的模型是無法實現的
  在這篇文章中我將為你介紹PP網絡並且將它和客戶/服務器網絡作對比我還會介紹Jxta(發音是juxta)Jxta是由Sun的首席科學家兼CEO Bill Joy提出來的Jxta正在被成千上萬的開放源代碼開發者模型化在PP領域中Jxta作出了巨大的改進它定義了一套的協議開發者可以使用這些協議來建立幾乎所有的PP應用同時這些協議也非常靈活可以適合不同應用的特別需要Jxta也不使用特定的編程語言或者環境不過Java無疑是一個適合的選擇原因在於便攜性容易開發和豐富的類庫
  PP概覽
  現今最普遍的分布計算模型是客戶/服務器模型圖一描繪的就是典型的客戶/服務器架構
     
  *****圖一******* 
  在客戶/服務器體系中客戶請求服務服務器提供服務在當今的Internet上存在在大量的服務器Web服務器郵件服務器FTP服務器等等客戶/服務器體系是中央化體系的一個例子整個的網絡都依靠中央的節點和命名的服務器來提供服務如果沒有服務器網絡將是毫無意義的如果沒有它們Web浏覽器如何工作?不論客戶端或者浏覽器的數目有多少網絡只能在服務器存在的前提下才有意義
  和客戶/服務器體系相似PP也是一個分布的計算模型但是有一個很大的不同PP是一個非中央化的體系(如圖在網絡中並沒有客戶或者服務器的狀態區分網絡中的每個實體都是同等的有著同樣的狀態這意味著一個實體可以請求一個服務(客戶端的特性)或者提供一個服務(服務器的特性)展示的是一個PP網絡
  
  *****圖********* 
  雖然每個節點在網絡中有著同等的狀態不過它們並不要求都有著同樣的物理性能一個PP網絡可以包含有不同性能的節點由移動設備到大型機對於一個移動設備來說可能由於自身的限制不能作為服務器但從網絡方面來說並沒有這個限制
  兩個網絡模型都有著各自的優點和缺點由圖的客戶/服務器網絡你可以看到當網絡增大時(即越來越多的客戶加入)中央服務器的壓力就越大當加多一個客戶中央節點的性能就會弱化而它的失效將會導致整個網絡的癱瘓
  對於PP網絡來說情況就完全不一樣了由於網絡中的每個實體(或者節點)都是積極的參與者
  每個節點都會為網絡提供一些資源例如存儲空間或者CPU當越來越多的節點加入網絡時網絡的性能將會增長因此當網絡增大時它的性能也會增強你將不會碰到客戶/服務器體系中的擴展問題
  PP網絡和客戶/服務器模型還有一個很大的不同是即使只有一個節點是活躍的PP網絡也被認為是活躍的只有在沒有任何節點時PP網絡才是不可用的
  不過金無足赤雖然PP網絡有著這些的優點但你也要付出一些代價的首先管理這樣一個網絡可能是一個噩夢而在客戶/服務器網絡中你只需要管理中央的節點因此無論在安全策略和備份策略方面PP網絡都要復雜一些第二PP協議比傳統的客戶/服務器協議需要更多的交互例如當節點加入或者退出網絡這些方面都會對性能產生一些影響
  Jxta的解決之道
  
  不同的協議不同的體系不同的實現這就是當前PP解決方案的精確描述現今開發者使用各種各樣的方法論和途徑來創建PP應用相對於客戶/服務器模型豐富的標准PP領域的標准可以說是很少為此Sun開發了Jxta
  以下是Jxta前景的一些陳述
  Jxta工程是為了建立核心的網絡計算技術它提供一套簡單精簡和便利的技術可以在任何的平台任何地點和任何時間支持PP計算該工程首先概述了PP的功能然後建立核心的技術以彌補當前PP計算方面的不足它集中於創建基本的技術並且將策略的選擇權交給應用的開發者
  Jxta致力於提供一個基本的PP架構這樣其它的PP應用可以建立在上面這個基架包含有一套協議這些協議與語言平台和網絡都是無關的(這就是它們對底層的網絡沒有作出任何的假定)這些協議只規定了建立普遍PP應用的必要之處它的設計是精簡的開銷很小這些協議的目的可引用Jxta前景陳述中的一句話來說明要令每個設備都帶有一個數字的心跳
  當前的Jxta定義了六種協議不過並不要求所有的Jxta節點都實現全部六種協議節點實現的協議數目和它的性能有關一個節點可以只實現一種協議根據需要節點也可以擴展或者替換任何的協議
  有一點要注意的是Jxta協議自身並不提供交互性對於這一點你可以通過TCP/IP來理解這一點雖然FTP和HTTP都建立在TCP/IP上不過你不能使用FTP客戶來訪問網頁Jxta也是這樣兩個建立在Jxta上的應用並不意味著它們是可以交互的這一點應該由開發者開保證不過由於Jxta提供了一個可交互的基層所以開發者在實現交互時可以少考慮一些東西
  Jxta中的XML
  毫無疑問要提供一個通用基本協議層第一步就是要采用一種適合的表現方式這種方式可以被當前的大部分平台明白XML無疑是一個理想的選擇它已經成為數據交換的一個默認標准XML提供通用的語言和平台無關的數據表現XML也可以很容易地轉換為其它的編碼因此用XML格式定義了所有的Jxta協議
  雖然Jxta的信息使用XML定義不過Jxta並不依靠XML來編碼實際上Jxta實體並不需要一個XML解析器它是一個可選的組件可以將XML看成是Jxta使用的一種便利的數據表現形式小的實體(例如移動電話)可以使用預編譯的XML信息
  Jxta的術語
  
  在更進一步講述Jxta之前讓我們先來看一下它的各種術語
  Peers(節點)
  網絡上實現一種或者多種Jxta協議的任何實體一個節點可以是任何的東西例如大型機小至一部移動電話甚至是一個傳感器節點的存在是獨立的並且可以與其它節點異步通信
  Peer groups(節點組)
  有者共同目的的節點可以集合起來形成節點組節點組可以跨越多個物理網絡域
  Messages(信息)
  在Jxta的網絡中所有的通信是通過發送和接收信息來實現的這些信息稱為Jxta messages它們符合標准的格式是交互的前提
  Pipes(管道)
  Pipes在Jxta的環境裡建立起虛擬的通信管道節點通過它們來發送和接收Jxta的信息Pipes被認為是虛擬的因為Pipes無需要知道使用它們的真正網絡地址這是一個重要的抽象
  Services(服務)
  Peers和Peer groups都可以提供服務如果一個服務由一個peer獨立提供那麼就被稱為是一個Peer服務這是一個和中央化相等的概念沒有其它的Peer需要提供該服務如果該Peer沒有活動那麼服務將無效
  Peer groups提供的服務被稱為是peer group服務與peer服務不同這些服務並不依賴某個單獨的peer而是由整個組提供Peer group服務的可用性更強因為即使一個peer不可用其它的peers還可以繼續提供相同的服務
  Codats
  Codat (Code/Data)在Jxta中它意味著可以是代碼或者數據的內容如果有需要Codats可以被發布和復制
  Advertisements
  Advertisement可發布和揭露任何的Jxta資源例如一個peer一個peer組一個管道或者codatAdvertisements以XML文檔的方式來表現
  Identifiers(標識符)
  在Jxta環境中Identifiers扮演著重要的角色Identifiers指定資源而不是物理的網絡地址Jxta的Identifier被定義為一個URN(Uniform Resource Name統一資源名)一個URN就是一個URI(Uniform Resource Identifier統一資源標識符)它必須是保持全局唯一的即使是該資源不存在了它仍然要保持不變
  World peer group
  任何一個Jxta peer在默認的情況下都是World peer group的一個成員每一個Jxta peer都知道World peer group並且可以加入該peer組即使它在網絡上找不到任何其它的peers即使斷開的peer也是其中的成員
  Net peer group
  在一個本地網絡中網絡管理員通常都可以設置一個peer組該組可以讓網絡上的任何peer加入這就是Net peer group它類似一個DHCH(dynamic host configuration protocol動態主機配置協議)服務該Net peer group可為peer提供一個全局的連接它的限制由管理者定義
  Rendezvous peers(集合點)
  一個集合點是一個特別的節點它通過緩沖節點的廣播可以存儲其它節點的信息因此一個集合點可以幫助節點發現網絡上的其它節點集合點還可以將搜索的請求導向到其它的集合點
  Endpoints(終點)
  終點表示網絡上的一個目的地它可以由一個網絡地址來表示Peers通常都不直接使用終點而是通過管道來間接使用它們管道都建立在終點上
  Routers(路由器)
  在Jxta的網絡上移動包的東西均被稱為Jxta路由器並不要求所有的peers都是路由器不是路由器的pe
From:http://tw.wingwit.com/Article/program/Java/gj/201311/27532.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.