摘 要: 對(duì)JXTA做了比較深入的研究,介紹JXTA的概念、協(xié)議、框架,描述JXTA平臺(tái)拍賣(mài)系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn),最后對(duì)拍賣(mài)模型等關(guān)鍵部分進(jìn)行設(shè)計(jì)分析。
關(guān)鍵詞: P2P;JXTA;協(xié)議;框架;拍賣(mài)模型
B/S或者C/S的應(yīng)用模式已經(jīng)無(wú)法滿足網(wǎng)絡(luò)上大文件的共享,就產(chǎn)生了一種新型的點(diǎn)對(duì)點(diǎn)技術(shù),出現(xiàn)了“我為人人,人人為我”的P2P模式,這為互聯(lián)網(wǎng)的分布、共享精神帶來(lái)了無(wú)限的遐想。
1 P2P技術(shù)
P2P是英文Peer-to-Peer的縮寫(xiě),該名字意味著P2P網(wǎng)絡(luò)中各個(gè)節(jié)點(diǎn)之間的關(guān)系是對(duì)等的,無(wú)需經(jīng)過(guò)任何中心節(jié)點(diǎn)直接與服務(wù)器聯(lián)系。P2P系統(tǒng)分類(lèi)如圖1所示。
隨著Napster[1]、Gnutella[2]及ICQ類(lèi)P2P系統(tǒng)的出現(xiàn),P2P的技術(shù)優(yōu)勢(shì)以及在未來(lái)網(wǎng)絡(luò)中的應(yīng)用價(jià)值逐漸體現(xiàn)出來(lái),在工業(yè)界和學(xué)術(shù)界都受到了高度的重視。許多大公司及新興公司,如Intel、HP等都成立了P2P工作組從事這一技術(shù)研究。
2 JXTA技術(shù)
JXTA是一種標(biāo)準(zhǔn)平臺(tái),它提供了開(kāi)發(fā)分布式服務(wù)和應(yīng)用程序的基本組件,JXTA具有以下優(yōu)越性[3-5]:
(1)互操作性。它可以使各種P2P系統(tǒng)互聯(lián),無(wú)縫地提供服務(wù)。
(2)平臺(tái)無(wú)關(guān)性。它與開(kāi)發(fā)語(yǔ)言、操作協(xié)議及網(wǎng)絡(luò)協(xié)議都沒(méi)有關(guān)系。
(3)無(wú)處不在性(設(shè)備無(wú)關(guān)性)。只要這個(gè)設(shè)備遵循這個(gè)協(xié)議,都可以建立P2P系統(tǒng),如圖2 所示。
第一層是JXTA的核心層,包括Peer、對(duì)等組、Peer發(fā)現(xiàn)、Peer通信、Peer監(jiān)視和相關(guān)的安全原語(yǔ)。
第二層是服務(wù)層,提供訪問(wèn)JXTA協(xié)議的接口。
第三層是應(yīng)用層,讓?xiě)?yīng)用程序訪問(wèn)JXTA的網(wǎng)絡(luò)和服務(wù)。
3 餐館拍賣(mài)模型
拍賣(mài)系統(tǒng)被設(shè)計(jì)為包含2個(gè)組成部分:一個(gè)用戶接口(前端)和一個(gè)JXTA集成(后臺(tái))。用戶接口將為用戶顯示對(duì)等體和對(duì)等組的信息[6],以便用戶能監(jiān)控其他對(duì)等體和對(duì)等組,而對(duì)等體和對(duì)等組信息的更新是通過(guò)JXTA的后臺(tái)實(shí)現(xiàn)的。
由圖3所示的餐館拍賣(mài)模型可知:
(1)RestoPeer加入或創(chuàng)建一個(gè)對(duì)等組,廣播自己的基本信息通告,建立自己的輸入管道端點(diǎn),餐館A和餐館B分別加入NetPeerGroup,并在小組內(nèi)部廣播自己的服務(wù)通告,建立屬于自己的RestoNet小組。
(2)用餐者1、用餐者2和用餐者3分別加入NetPeer-
Group,在小組內(nèi)部廣播自己的服務(wù)請(qǐng)求,分別根據(jù)接收到的通告,根據(jù)自己的愛(ài)好,加入相應(yīng)的RestoNet小組,建立對(duì)應(yīng)的輸入管道端點(diǎn);發(fā)送廣告通告,尋找適合自己的RestoPeer,建立輸出管道端點(diǎn)。把自己所要請(qǐng)求的信息[7]先轉(zhuǎn)化為結(jié)構(gòu)化文檔(即XML文檔),通過(guò)已經(jīng)建立的管道發(fā)送給相應(yīng)的RestoPeer。
(3)餐館加入對(duì)等組,向組中的用餐者發(fā)送自己的需求通告,從輸入管道中獲取信息,轉(zhuǎn)化為結(jié)構(gòu)化文檔,讀取消息的各個(gè)部分,根據(jù)消息的內(nèi)容,將自己的拍賣(mài)信息轉(zhuǎn)化為XML文檔,建立輸出管道端點(diǎn),發(fā)送給所對(duì)應(yīng)的用餐者。
(4)用餐者選擇餐館發(fā)送確認(rèn)通告,發(fā)送自己所能接受的價(jià)位,拍賣(mài)競(jìng)標(biāo)過(guò)程完成。
4 餐館拍賣(mài)系統(tǒng)的流程圖
餐館拍賣(mài)流程是在一個(gè)RestorPeer和一個(gè)HungryPeer兩個(gè)人之間進(jìn)行的。拍賣(mài)系統(tǒng)流程圖如圖4所示。
(1)RestoPeer在NetPeerGroup的引導(dǎo)下完成自身的初始化,并加入NetPeerGroup小組,若沒(méi)有發(fā)現(xiàn),則建立一個(gè)新的NetPeerGroup對(duì)等組。
(2)對(duì)RestoPeer這一對(duì)等組來(lái)說(shuō),首先試圖通過(guò)Net-
PeerGroup的發(fā)現(xiàn)服務(wù)或PDP去發(fā)現(xiàn)RestoNet對(duì)等組,如果找到RestoNet則加入這一對(duì)等組,如果找不到則創(chuàng)建一個(gè)新的RestoNet對(duì)等組。
(3)對(duì)HungryPeer而言也是在NetPeerGroup的引導(dǎo)下,完成自身的初始化,并加入NetPeerGroup小組,接下來(lái)加入RestoNet對(duì)等組。加入RestoNet的RestoPeer后,發(fā)現(xiàn)了一個(gè)RestoPeer發(fā)布的管道通告,根據(jù)管道通告,建立自己的輸出管道,把適合自己的RestoPeer加入到自己的通信列表中,并與相應(yīng)的RestoPeer建立連接,創(chuàng)建一個(gè)輸出管道端點(diǎn),將自己的就餐請(qǐng)求轉(zhuǎn)化成結(jié)構(gòu)化文檔,并壓縮成消息的格式,通過(guò)輸出管道將消息發(fā)送出去。
(4)RestoPeer從輸入管道中獲取消息,并轉(zhuǎn)化為結(jié)構(gòu)化文檔,獲取消息的各個(gè)部分,創(chuàng)建輸出管道端點(diǎn),根據(jù)相應(yīng)的請(qǐng)求,發(fā)出自己的出價(jià)響應(yīng),并把消息轉(zhuǎn)化為XML文檔,通過(guò)輸出管道,發(fā)送消息到HungryPeer。
(5)HungryPeer獲取消息,根據(jù)消息所提供的信息,選擇能很好滿足自己的就餐信息,對(duì)RestoPeer發(fā)出定單。
本文利用JXTA平臺(tái)的P2P技術(shù)開(kāi)發(fā)一個(gè)網(wǎng)上餐館拍賣(mài)系統(tǒng),詳細(xì)描述了從對(duì)等組的搜索、建立到兩個(gè)對(duì)等體的發(fā)現(xiàn)、相互通信直到通信的結(jié)束,對(duì)從事P2P相關(guān)應(yīng)用程序的開(kāi)發(fā)具有很強(qiáng)的指導(dǎo)意義。
參考文獻(xiàn)
[1] 胡忠紅,王以群.基于P2P技術(shù)的信息網(wǎng)絡(luò)[J].中國(guó)信息導(dǎo)報(bào),2003(4):58-59.
[2] FLENNER R.Java P2P技術(shù)內(nèi)幕[M].北京:人民郵電出版社,2003.
[3] Li Gong.JXTA:a network programming environment[J].IEEE Internet Computing,2001,5(3):88-95.
[4] 吳勝浩,鐘亦平,張世永.JXTA:新型的網(wǎng)絡(luò)計(jì)算環(huán)境[J]. 計(jì)算機(jī)工程,2004,30(9):4-6.
[5] 黃小琴,黎星星,朱慶生.對(duì)等網(wǎng)絡(luò)技術(shù)的新發(fā)展——JXTA[J].計(jì)算機(jī)科學(xué),2003,30(1):104.
[6] WATERHOUSE S,DOOLIN D M,KAN G,et al.Distributed search in P2P networks[J].IEEE Internet Computing,2002,6(1):68-72,116-117.
[7] 陳姝,方濱興,周勇林.P2P技術(shù)的研究與應(yīng)用[J].計(jì)算機(jī)工程與應(yīng)用,2002,38(13):20-23.