摘 要:对JXTA做了比较深入的研究,介绍JXTA的概念、协议、框架,描述JXTA平台拍卖系统的设计和实现,最后对拍卖模型等关键部分进行设计分析。
关键词:P2P;JXTA;协议;框架;拍卖模型
B/S或者C/S的应用模式已经无法满足网络上大文件的共享,就产生了一种新型的点对点技术,出现了“我为人人,人人为我”的P2P模式,这为互联网的分布、共享精神带来了无限的遐想。
1 P2P技术
P2P是英文Peer-to-Peer的缩写,该名字意味着P2P网络中各个节点之间的关系是对等的,无需经过任何中心节点直接与服务器联系。P2P系统分类如图1所示。
随着Napster[1]、Gnutella[2]及ICQ类P2P系统的出现,P2P的技术优势以及在未来网络中的应用价值逐渐体现出来,在工业界和学术界都受到了高度的重视。许多大公司及新兴公司,如Intel、HP等都成立了P2P工作组从事这一技术研究。
2 JXTA技术
JXTA是一种标准平台,它提供了开发分布式服务和应用程序的基本组件,JXTA具有以下优越性[3-5]:
(1)互操作性。它可以使各种P2P系统互联,无缝地提供服务。
(2)平台无关性。它与开发语言、操作协议及网络协议都没有关系。
(3)无处不在性(设备无关性)。只要这个设备遵循这个协议,都可以建立P2P系统,如图2 所示。
第一层是JXTA的核心层,包括Peer、对等组、Peer发现、Peer通信、Peer监视和相关的安全原语。
第二层是服务层,提供访问JXTA协议的接口。
第三层是应用层,让应用程序访问JXTA的网络和服务。
3 餐馆拍卖模型
拍卖系统被设计为包含2个组成部分:一个用户接口(前端)和一个JXTA集成(后台)。用户接口将为用户显示对等体和对等组的信息[6],以便用户能监控其他对等体和对等组,而对等体和对等组信息的更新是通过JXTA的后台实现的。
由图3所示的餐馆拍卖模型可知:
(1)RestoPeer加入或创建一个对等组,广播自己的基本信息通告,建立自己的输入管道端点,餐馆A和餐馆B分别加入NetPeerGroup,并在小组内部广播自己的服务通告,建立属于自己的RestoNet小组。
(2)用餐者1、用餐者2和用餐者3分别加入NetPeer-
Group,在小组内部广播自己的服务请求,分别根据接收到的通告,根据自己的爱好,加入相应的RestoNet小组,建立对应的输入管道端点;发送广告通告,寻找适合自己的RestoPeer,建立输出管道端点。把自己所要请求的信息[7]先转化为结构化文档(即XML文档),通过已经建立的管道发送给相应的RestoPeer。
(3)餐馆加入对等组,向组中的用餐者发送自己的需求通告,从输入管道中获取信息,转化为结构化文档,读取消息的各个部分,根据消息的内容,将自己的拍卖信息转化为XML文档,建立输出管道端点,发送给所对应的用餐者。
(4)用餐者选择餐馆发送确认通告,发送自己所能接受的价位,拍卖竞标过程完成。
4 餐馆拍卖系统的流程图
餐馆拍卖流程是在一个RestorPeer和一个HungryPeer两个人之间进行的。拍卖系统流程图如图4所示。
(1)RestoPeer在NetPeerGroup的引导下完成自身的初始化,并加入NetPeerGroup小组,若没有发现,则建立一个新的NetPeerGroup对等组。
(2)对RestoPeer这一对等组来说,首先试图通过Net-
PeerGroup的发现服务或PDP去发现RestoNet对等组,如果找到RestoNet则加入这一对等组,如果找不到则创建一个新的RestoNet对等组。
(3)对HungryPeer而言也是在NetPeerGroup的引导下,完成自身的初始化,并加入NetPeerGroup小组,接下来加入RestoNet对等组。加入RestoNet的RestoPeer后,发现了一个RestoPeer发布的管道通告,根据管道通告,建立自己的输出管道,把适合自己的RestoPeer加入到自己的通信列表中,并与相应的RestoPeer建立连接,创建一个输出管道端点,将自己的就餐请求转化成结构化文档,并压缩成消息的格式,通过输出管道将消息发送出去。
(4)RestoPeer从输入管道中获取消息,并转化为结构化文档,获取消息的各个部分,创建输出管道端点,根据相应的请求,发出自己的出价响应,并把消息转化为XML文档,通过输出管道,发送消息到HungryPeer。
(5)HungryPeer获取消息,根据消息所提供的信息,选择能很好满足自己的就餐信息,对RestoPeer发出定单。
本文利用JXTA平台的P2P技术开发一个网上餐馆拍卖系统,详细描述了从对等组的搜索、建立到两个对等体的发现、相互通信直到通信的结束,对从事P2P相关应用程序的开发具有很强的指导意义。
参考文献
[1] 胡忠红,王以群.基于P2P技术的信息网络[J].中国信息导报,2003(4):58-59.
[2] FLENNER R.Java P2P技术内幕[M].北京:人民邮电出版社,2003.
[3] Li Gong.JXTA:a network programming environment[J].IEEE Internet Computing,2001,5(3):88-95.
[4] 吴胜浩,钟亦平,张世永.JXTA:新型的网络计算环境[J]. 计算机工程,2004,30(9):4-6.
[5] 黄小琴,黎星星,朱庆生.对等网络技术的新发展——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技术的研究与应用[J].计算机工程与应用,2002,38(13):20-23.