P2P应用开发框架JXTA
2016-03-28刘班
刘班
武汉职业技术学院
P2P应用开发框架JXTA
刘班
武汉职业技术学院
针对P2P开发应用的特点,Sun公司的科学家Bill Joy提出了JXTA开发框架,论述的JXTA的基本结构和组件。
P2P 应用开发 JXTA
1 概述
JXTA是Sun公司制定的对等网络(P2P)标准,以它来促进和探究分布式计算的新方法。“JXTA”这个名字既用来指代这个标准,也用来指代研究出来的技术,这种技术处于传输平台和P2P通信协议的环绕之中。其开发组织被取名为单词“juxtapose(并置)”的简易形式。在2001年2月由O'Reilly Network组织的P2P会议上,Bill Joy,Sun的首席科学家解释了选择这个名字的原因:并置就是要让东西彼此相邻地放置,而“这正是对等网络的全部意义”。
在JXTA中,并列放置的实体是计算设备和计算机组。此标准就是要使在系统间和组间建立临时性的连接变得更容易。JXTA项目是在Bill Joy和Mike Clary的领导下开始的,他们指导这项开发本着三个核心原则:他们尽可能选择使用熟悉的技术和标准,寻求行业专家的意见,以及鼓励开放式的开发。
JXTA具体来说是一种标准组件平台,它提供了用于开发分布式服务和应用程序的基本组件。整套技术由一组开放源码的P2P协议组成,这组协议使网络上任何连接着的计算设备的协作变为可能。基于协议而不是基于API(应用程序接口)意味着JXTA技术可以用任何语言在任何操作系统上运行。JXTA使P2P应用程序拥有了许多能力,其中包括:在能穿过防火墙通信的不同设备的用户间建立节点组,在网络上寻找节点,简化文件共享,自动侦测到新的网站目录,对节点的远程监控,访问深层网络的数据,以及提供安全的通信等重要功能。
2 总体架构
JXTA的软件架构被分成了三层,分别是:核心层、服务层和应用层。
(1)核心层:该层封装了最小的和必不可少的构建各类P2P网络必须使用的通用原语,其中包括发现、通信传输(包括防火墙和NAT穿越),节点和节点组的创建以及相关的安全原语。
(2)服务层:该层包括对于P2P网络不是必需的,但很通用的或在P2P网络环境中很有必要使用的各类网络服务,其中包括查找、索引、目录、存储系统、文件共享、分布式文件系统、资源整合和租借、协议转换、认证、以及PKI等服务。
(3)应用层:该层包括各种完整应用的实现,比如:P2P即时消息、文档和资源共享、娱乐内容管理和传送、P2P电子邮件系统、分布式拍卖系统等。
服务层和应用层之间的界限是很灵活的,一个客户的应用可以看作其它客户的一个服务。整个系统被设计为模块化结构,允许开发者挑选适合自身应用需要的一套服务和应用。
3 JXTA的组件
JXTA网络由一系列互联节点构成。节点可以是任何类型的设备,包括传感器、超级计算机或虚拟处理器等。多个节点可以运行在一台物理设备上;反之,多台物理设备也可以联合组成一个节点。节点之间可以使用任何适合的协议(TCP/IP、HTTP、Bluetooth、GSM等)进行连接。
每个节点为其它节点提供了一套服务和资源。服务是交互的应用程序,其中包括数据库认证系统、聊天服务或者任何可以联网的程序。有两种类型的服务在JXTA网络中是常用的:节点服务和节点组服务。节点服务由单个节点提供;节点组服务由其中的成员节点以联合、冗余或合作的方式提供。每个节点服务的实例通常独立于其它服务的实例,对一个节点服务实例的操作不会影响到其它实例;每个节点组服务实例一般与核心服务实例交互,对一个节点组服务实例的操作可能会影响到所有实例。所有的JXTA节点都实现了少量必需的核心服务,而且通常也提供了额外的标准服务。每个节点组都包含一套每个节点为了加入其中必须运行的节点服务。
一个节点的资源通常是该节点控制的资源或者是该节点拥有的静态内容,甚至可能只是该内容的一个副本。这些资源包括文件、文档、媒体、广告、索引,也可以是真实世界中的硬件资源(比如:交换机、传感器或者打印机等)。JXTA节点使用称为广告的XML文档发布其服务和资源。节点也可以使用广告在P2P网络中发现资源和服务,并且决定如何连接这些资源,以及如何与这些资源交互。
JXTA节点使用套接字和管道相互之间发送消息。JXTA套接字是用于在应用之间可靠通信的双向连接。管道是一种用于服务通信的单向、异步消息传输机制;消息是封装了路由、摘要以及验证信息的简单XML文档。管道被绑定到特定的端点(比如一个TCP端口以及相应的IP地址)上。
4 结语
目前P2P应用软件的开发主要涉及文件共享、分布式计算、即时通信以及分布式存储等方面。虽然这些软件有着不同的功能,但它们在节点发现、内容搜索、数据传送和文件传送方面等有着很多的相似点。JXTA对于P2P应用开发的良好支持,必将使其成为P2P领域的一款优秀开发框架。
[1]Joseph D.Gradecki.Mastering JXTA[M].USA:Wiley Press,2003.
[2]Project JXTA.http://jxta.dev.java.net,2008.