李淑霞
(河南工業(yè)職業(yè)技術(shù)學院 計算機工程系,河南 南陽473000)
B/S或者C/S的應用模式已經(jīng)無法滿足網(wǎng)絡(luò)上大文件的共享,就產(chǎn)生了一種新型的點對點技術(shù),出現(xiàn)了“我為人人,人人為我”的P2P模式,這為互聯(lián)網(wǎng)的分布、共享精神帶來了無限的遐想。
P2P是英文Peer-to-Peer的縮寫,該名字意味著P2P網(wǎng)絡(luò)中各個節(jié)點之間的關(guān)系是對等的,無需經(jīng)過任何中心節(jié)點直接與服務器聯(lián)系。P2P系統(tǒng)分類如圖1所示。
圖1 P2P系統(tǒng)分類
隨著Napster[1]、Gnutella[2]及ICQ類P2P系統(tǒng)的出現(xiàn),P2P的技術(shù)優(yōu)勢以及在未來網(wǎng)絡(luò)中的應用價值逐漸體現(xiàn)出來,在工業(yè)界和學術(shù)界都受到了高度的重視。許多大公司及新興公司,如Intel、HP等都成立了P2P工作組從事這一技術(shù)研究。
JXTA是一種標準平臺,它提供了開發(fā)分布式服務和應用程序的基本組件,JXTA具有以下優(yōu)越性[3-5]:
(1)互操作性。它可以使各種P2P系統(tǒng)互聯(lián),無縫地提供服務。
(2)平臺無關(guān)性。它與開發(fā)語言、操作協(xié)議及網(wǎng)絡(luò)協(xié)議都沒有關(guān)系。
(3)無處不在性(設(shè)備無關(guān)性)。只要這個設(shè)備遵循這個協(xié)議,都可以建立P2P系統(tǒng),如圖2所示。
圖2 JXTA的層次結(jié)構(gòu)
第一層是JXTA的核心層,包括Peer、對等組、Peer發(fā)現(xiàn)、Peer通信、Peer監(jiān)視和相關(guān)的安全原語。
第二層是服務層,提供訪問JXTA協(xié)議的接口。
第三層是應用層,讓應用程序訪問JXTA的網(wǎng)絡(luò)和服務。
拍賣系統(tǒng)被設(shè)計為包含2個組成部分:一個用戶接口(前端)和一個JXTA集成(后臺)。用戶接口將為用戶顯示對等體和對等組的信息[6],以便用戶能監(jiān)控其他對等體和對等組,而對等體和對等組信息的更新是通過JXTA的后臺實現(xiàn)的。
由圖3所示的餐館拍賣模型可知:
圖3 餐館拍賣模型
(1)RestoPeer加入或創(chuàng)建一個對等組,廣播自己的基本信息通告,建立自己的輸入管道端點,餐館A和餐館B分別加入NetPeerGroup,并在小組內(nèi)部廣播自己的服務通告,建立屬于自己的RestoNet小組。
(2)用餐者1、用餐者2和用餐者3分別加入NetPeer-Group,在小組內(nèi)部廣播自己的服務請求,分別根據(jù)接收到的通告,根據(jù)自己的愛好,加入相應的RestoNet小組,建立對應的輸入管道端點;發(fā)送廣告通告,尋找適合自己的RestoPeer,建立輸出管道端點。把自己所要請求的信息[7]先轉(zhuǎn)化為結(jié)構(gòu)化文檔(即XML文檔),通過已經(jīng)建立的管道發(fā)送給相應的RestoPeer。
(3)餐館加入對等組,向組中的用餐者發(fā)送自己的需求通告,從輸入管道中獲取信息,轉(zhuǎn)化為結(jié)構(gòu)化文檔,讀取消息的各個部分,根據(jù)消息的內(nèi)容,將自己的拍賣信息轉(zhuǎn)化為XML文檔,建立輸出管道端點,發(fā)送給所對應的用餐者。
(4)用餐者選擇餐館發(fā)送確認通告,發(fā)送自己所能接受的價位,拍賣競標過程完成。
餐館拍賣流程是在一個RestorPeer和一個HungryPeer兩個人之間進行的。拍賣系統(tǒng)流程圖如圖4所示。
(1)RestoPeer在NetPeerGroup的引導下完成自身的初始化,并加入NetPeerGroup小組,若沒有發(fā)現(xiàn),則建立一個新的NetPeerGroup對等組。
(2)對RestoPeer這一對等組來說,首先試圖通過Net-PeerGroup的發(fā)現(xiàn)服務或PDP去發(fā)現(xiàn)RestoNet對等組,如果找到RestoNet則加入這一對等組,如果找不到則創(chuàng)建一個新的RestoNet對等組。
(3)對HungryPeer而言也是在NetPeerGroup的引導下,完成自身的初始化,并加入NetPeerGroup小組,接下來加入RestoNet對等組。加入RestoNet的RestoPeer后,發(fā)現(xiàn)了一個RestoPeer發(fā)布的管道通告,根據(jù)管道通告,建立自己的輸出管道,把適合自己的RestoPeer加入到自己的通信列表中,并與相應的RestoPeer建立連接,創(chuàng)建一個輸出管道端點,將自己的就餐請求轉(zhuǎn)化成結(jié)構(gòu)化文檔,并壓縮成消息的格式,通過輸出管道將消息發(fā)送出去。
(4)RestoPeer從輸入管道中獲取消息,并轉(zhuǎn)化為結(jié)構(gòu)化文檔,獲取消息的各個部分,創(chuàng)建輸出管道端點,根據(jù)相應的請求,發(fā)出自己的出價響應,并把消息轉(zhuǎn)化為XML文檔,通過輸出管道,發(fā)送消息到HungryPeer。
圖4 拍賣系統(tǒng)流程圖
(5)HungryPeer獲取消息,根據(jù)消息所提供的信息,選擇能很好滿足自己的就餐信息,對RestoPeer發(fā)出定單。
本文利用JXTA平臺的P2P技術(shù)開發(fā)一個網(wǎng)上餐館拍賣系統(tǒng),詳細描述了從對等組的搜索、建立到兩個對等體的發(fā)現(xiàn)、相互通信直到通信的結(jié)束,對從事P2P相關(guān)應用程序的開發(fā)具有很強的指導意義。
[1]胡忠紅,王以群.基于P2P技術(shù)的信息網(wǎng)絡(luò)[J].中國信息導報,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ò)計算環(huán)境[J].計算機工程,2004,30(9):4-6.
[5]黃小琴,黎星星,朱慶生.對等網(wǎng)絡(luò)技術(shù)的新發(fā)展——JXTA[J].計算機科學,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ù)的研究與應用[J].計算機工程與應用,2002,38(13):20-23.