劉班
武漢職業(yè)技術學院
?
P2P應用開發(fā)框架JXTA
劉班
武漢職業(yè)技術學院
針對P2P開發(fā)應用的特點,Sun公司的科學家Bill Joy提出了JXTA開發(fā)框架,論述的JXTA的基本結構和組件。
P2P 應用開發(fā) JXTA
JXTA是Sun公司制定的對等網(wǎng)絡(P2P)標準,以它來促進和探究分布式計算的新方法。“JXTA”這個名字既用來指代這個標準,也用來指代研究出來的技術,這種技術處于傳輸平臺和P2P通信協(xié)議的環(huán)繞之中。其開發(fā)組織被取名為單詞“juxtapose(并置)”的簡易形式。在2001年2月由O'Reilly Network組織的P2P會議上,Bill Joy,Sun的首席科學家解釋了選擇這個名字的原因:并置就是要讓東西彼此相鄰地放置,而“這正是對等網(wǎng)絡的全部意義”。
在JXTA中,并列放置的實體是計算設備和計算機組。此標準就是要使在系統(tǒng)間和組間建立臨時性的連接變得更容易。JXTA項目是在Bill Joy和Mike Clary的領導下開始的,他們指導這項開發(fā)本著三個核心原則:他們盡可能選擇使用熟悉的技術和標準,尋求行業(yè)專家的意見,以及鼓勵開放式的開發(fā)。
JXTA具體來說是一種標準組件平臺,它提供了用于開發(fā)分布式服務和應用程序的基本組件。整套技術由一組開放源碼的P2P協(xié)議組成,這組協(xié)議使網(wǎng)絡上任何連接著的計算設備的協(xié)作變?yōu)榭赡堋;趨f(xié)議而不是基于API(應用程序接口)意味著JXTA技術可以用任何語言在任何操作系統(tǒng)上運行。JXTA使P2P應用程序擁有了許多能力,其中包括:在能穿過防火墻通信的不同設備的用戶間建立節(jié)點組,在網(wǎng)絡上尋找節(jié)點,簡化文件共享,自動偵測到新的網(wǎng)站目錄,對節(jié)點的遠程監(jiān)控,訪問深層網(wǎng)絡的數(shù)據(jù),以及提供安全的通信等重要功能。
JXTA的軟件架構被分成了三層,分別是:核心層、服務層和應用層。
(1)核心層:該層封裝了最小的和必不可少的構建各類P2P網(wǎng)絡必須使用的通用原語,其中包括發(fā)現(xiàn)、通信傳輸(包括防火墻和NAT穿越),節(jié)點和節(jié)點組的創(chuàng)建以及相關的安全原語。
(2)服務層:該層包括對于P2P網(wǎng)絡不是必需的,但很通用的或在P2P網(wǎng)絡環(huán)境中很有必要使用的各類網(wǎng)絡服務,其中包括查找、索引、目錄、存儲系統(tǒng)、文件共享、分布式文件系統(tǒng)、資源整合和租借、協(xié)議轉換、認證、以及PKI等服務。
(3)應用層:該層包括各種完整應用的實現(xiàn),比如:P2P即時消息、文檔和資源共享、娛樂內(nèi)容管理和傳送、P2P電子郵件系統(tǒng)、分布式拍賣系統(tǒng)等。
服務層和應用層之間的界限是很靈活的,一個客戶的應用可以看作其它客戶的一個服務。整個系統(tǒng)被設計為模塊化結構,允許開發(fā)者挑選適合自身應用需要的一套服務和應用。
JXTA網(wǎng)絡由一系列互聯(lián)節(jié)點構成。節(jié)點可以是任何類型的設備,包括傳感器、超級計算機或虛擬處理器等。多個節(jié)點可以運行在一臺物理設備上;反之,多臺物理設備也可以聯(lián)合組成一個節(jié)點。節(jié)點之間可以使用任何適合的協(xié)議(TCP/IP、HTTP、Bluetooth、GSM等)進行連接。
每個節(jié)點為其它節(jié)點提供了一套服務和資源。服務是交互的應用程序,其中包括數(shù)據(jù)庫認證系統(tǒng)、聊天服務或者任何可以聯(lián)網(wǎng)的程序。有兩種類型的服務在JXTA網(wǎng)絡中是常用的:節(jié)點服務和節(jié)點組服務。節(jié)點服務由單個節(jié)點提供;節(jié)點組服務由其中的成員節(jié)點以聯(lián)合、冗余或合作的方式提供。每個節(jié)點服務的實例通常獨立于其它服務的實例,對一個節(jié)點服務實例的操作不會影響到其它實例;每個節(jié)點組服務實例一般與核心服務實例交互,對一個節(jié)點組服務實例的操作可能會影響到所有實例。所有的JXTA節(jié)點都實現(xiàn)了少量必需的核心服務,而且通常也提供了額外的標準服務。每個節(jié)點組都包含一套每個節(jié)點為了加入其中必須運行的節(jié)點服務。
一個節(jié)點的資源通常是該節(jié)點控制的資源或者是該節(jié)點擁有的靜態(tài)內(nèi)容,甚至可能只是該內(nèi)容的一個副本。這些資源包括文件、文檔、媒體、廣告、索引,也可以是真實世界中的硬件資源(比如:交換機、傳感器或者打印機等)。JXTA節(jié)點使用稱為廣告的XML文檔發(fā)布其服務和資源。節(jié)點也可以使用廣告在P2P網(wǎng)絡中發(fā)現(xiàn)資源和服務,并且決定如何連接這些資源,以及如何與這些資源交互。
JXTA節(jié)點使用套接字和管道相互之間發(fā)送消息。JXTA套接字是用于在應用之間可靠通信的雙向連接。管道是一種用于服務通信的單向、異步消息傳輸機制;消息是封裝了路由、摘要以及驗證信息的簡單XML文檔。管道被綁定到特定的端點(比如一個TCP端口以及相應的IP地址)上。
目前P2P應用軟件的開發(fā)主要涉及文件共享、分布式計算、即時通信以及分布式存儲等方面。雖然這些軟件有著不同的功能,但它們在節(jié)點發(fā)現(xiàn)、內(nèi)容搜索、數(shù)據(jù)傳送和文件傳送方面等有著很多的相似點。JXTA對于P2P應用開發(fā)的良好支持,必將使其成為P2P領域的一款優(yōu)秀開發(fā)框架。
[1]Joseph D.Gradecki.Mastering JXTA[M].USA:Wiley Press,2003.
[2]Project JXTA.http://jxta.dev.java.net,2008.