无忧技术网 - RSS订阅 
无忧技术网

JXTA 技术综述


作者:[佚名] - 发布:2010-4-22 17:35:38 - 来源:无忧技术网
JXTA(juxtapose 的缩写,指并行)JXTA的主要目的,是帮助开发面向各种互联网平台和网络的应用程序。特别应用于对等(PEEP TO PEEP)计算,构成JXTA的协议将可以使用户更容易通过对等网络技术获取资源。

1 概要
----------------------------------------------------------------
评价一个网络包含三方面重要的基本要素:信息,带宽,计算资源。


研究表明,每年全球新增的信息量是2*10的18次方 比特,而被发布的仅仅有3*12的12次方比特。换一句话说,每有新增一百万比特的数据,才仅有一比特的数据被发布,因而,想要实时的找出有用的数据是越来越困难了。


带宽以每16个月增长一倍


新的处理器和存储器的出现不断打破运算速度和存储能力的记录,使得网络上终端的处理能力大大增强。然而,还是有海量的数据积累在少数的计算中心,使得计算中心超负荷的工作。根本没有充分利用这些大量终端的处理能力,无疑是一种巨大的浪费 


P2P广泛的应用于各种网络技术大大的提高了信息,带宽和计算资源的利用率。一般说来,对等技术采用一种即不排斥,也不固有的依赖中心控制节点的,基于网络的计算方式,这种方式除了能显著提高信息发现和处理的能力外,还可以增强整个计算系统的容错能力和可靠性。



1.2 JXTA技术的目标
----------------------------------------------------------------
互操作性:JXTA技术能使互连的对等体方便的相互查找,通信,参与基于通信的活动,并能无缝的通过不同的系统相互提供服务。


平台独立性:JXTA被设计为独立于编程语言(如C,JAVA),系统平台(如MICROSOFT WINDOWS 和 UNIX等等),和网络平台(如TCP/IP,BLUETOOTH)。


普遍性:JXTA技术被设计为可用于所有拥有一颗数字心脏的设备,包括传感器,消费电器,PDA,网络路由器,桌面电脑,数据中心服务器,和存储系统。


JXTA预想了一个世界。在这个世界里,每一个对等体独立于软硬件平台,并且能通过和成千上万的其他对等体连接获得方便和利润。


2 JXTA技术
----------------------------------------------------------------


我们可以粗略的将一个典型的P2P软件划分为三个层次,在最底端是内核层,它的主要功能是对等体的建立,通信管理。居中的是服务层,在这层中提供进行诸如索引,查找,文件共享之类的高级服务。这些服务需要大量调用由核心层提供的基本操作,通常会作为构件包含在几乎所有P2P系统当中。在最顶端是应用层,提供诸如邮件,拍卖,存储之类的服务。一些特性,如安全管理出现于所有三层当中,并贯穿于整个系统。
JXTA被设计为一个层面,在这个层面上可以进一步构造应用程序和服务。这个层面应设计得尽量轻巧,但能给服务和应用程序提供足够的支持。


2.1 JXTA的基本概念
----------------------------------------------------------------
从最抽象的层面讲,JXTA 就是一组协议的集合。每一个协议由一个或多个这个协议的参与者之间传递的消息所定义。每一个消息有个预先定义的格式,并可能包含多个数据字段。
当前已经定义的协议有如下六条:
1、对等体发现协议
2、对等体分辨协议
3、对等体信息协议
4、对等体成员协议
5、管道绑定协议
6、节点路由协议


为了支撑这些协议,JXTA技术又定义了许多新的概念,概念介绍:


标识符:JXTA采用UUID,一个128位的数据来标志一个实体(一个对等体,一个广告,一个服务等等)在一个本地的运行环境里面保证每一个实体有一个唯一的UUID是非常容易的,可是我们不能假设任何一种完全的状态,没有一种绝对的方法可以保证在一个有拥百万个对等体的共同体中UUID的唯一性。这并不是一个非常严重的问题,因为UUID仅仅作为一种外在的标志。但当它与其他的一些如名字和网络地址之类的信息绑定在一起的时候,问题就重要多了。开发一种更加精密的命名方法,是现在的一个需要解决的问题。


广告:广告是一类XML结构的文档。它命名,描述,和发布了一个资源的存在。这些资源包括:对等体,对等体群落,服务等等。JXTA技术定义了一个基本的广告集合(详细情况可以参考JXTA TECHNOLOGY SPECIFICATION)更多的广告子类型可以根据XML方案从基本类型中构造出来。


对等体:一个对等体是任意一个能够使用JXTA协议的实体。这一点和INTERNET相似,一个网络节点就是一个能使用IP协议的实体。一个对等体可以表现为一个处理器,一个进程,一台机器,或是一个用户。非常重要的一点是,一个对等体并不需要全部理解前面给出的六条协议。


消息:消息被设计为能够适应异步的,不可靠的,单向的传输。因而,它被设计为一个包含封装体和带有一个协议头堆栈的主体的数据包。这个封装包含一个头,一个消息摘要,源节点,和目的地节点。一个节点是一个逻辑的目的地,它被给出为URL的形式。能够在任何网络传输的情况下,受发数据包形式的消息。节点是典型的通过消息到物理地址的映射。这样一来,一个消息的格式必须设计为支持多传输标准。
每一个协议体都包含许多字节,一个或多个的信任位被用来标志发送方。信任位确切的格式和内容不是特定的。例如:有的时候,当提供消息完整性证明时,信任位是重要的。在另外一些时候,一个消息的主题可能已经被加密,这时就需要信任位提供有关解密的更进一步的信息。

对等体群落:一个对等体群落是一个支持一组对等体群落协议的实体。典型的一个对等体群落是一组合作提供相同服务的对等体的集合。现在的规格说明书没有描述何时,何地,为什么创建一个群落,以及群落的类型和成员。它甚至没有定义如何来建立一个群落。JXTA对一个对等体或群落的产生次序并不关心,甚至,它也不限制当群落中存在嵌套时一个对等体可以属于多少个群落。它仅仅定义了如何使用群落发现协议来发现一个对等体群落。


管道:管道是一种用于异步的受发消息的通信渠道。它被定义为单向的,因而有输入管道和输出管道。管道一直是虚拟的,一个管道的端点可以绑定到多个对等体节点。
管道通常用于在运行时刻通过管道绑定协议动态的绑定到一个对等体节点。这意味着一个管道可以被到处移动,在不同的时刻可以绑定到不同的对等替。这一点非常的有用,例如,当一个对等体群落提供高等级的容错服务时,一旦有一个对等体失效,只需要将管道重新绑定到新的对等体上就可以保证系统继续顺利运行了。
一个点到点的管道确切的将两个对等体联系在一起。对于发送方来说它是输出管道,对于接受方来说它是输入管道,传输是由发送方到接受方——单向的。一个传播的管道可以将一个输出管道与多个输入管道相连,这样做的结果是任何一个发向输出管道的消息将被发向所有与之相连的输入管道。
JXTA并没有定义一个管道工作的内部细节。管道可以使用任何一个单播,或多播协议,以及它们的算法。实际上,管道可以象项链一样串接在一起,项链的每一段可以使用完全不相同的传输协议。
在未来,管道应该能够支持包括可靠性,安全性等在内的高级性质。显然,当JXTA已经运行于支持以上特性的传输协议上时,对管道来说使用并优化这些高级特性并不困难。当两个都支持TCP/IP协议的对等体相互通信时,可以很方便的建立一个双向的管道。


2.2 JXTA技术协议
----------------------------------------------------------------
对等体发现协议: 该协议使一个对等体能发现其他对等体的的广告,并使用这些广告发现其他的对等体,群落,或广告。


对等体分辨协议:该协议使一个对等体能够收发通常的查询来查找对等体,群落,管道,以及其他信息。典型的,本协议仅仅应用于可以进入数据中心,并能提供高级查询能力的对等体。

对等体信息协议:该协议使一个对等体能够了解其他对等体的信息和状态。例如:可以发送一个PEEP消息来判断一个对等体是否是激活的。如果对等体的属性都有名字和字符值的话,我们可以通过本协议得到它的属性信息。


对等体成员协议:该协议使一个对等体获得群落的认证。这样的认证需要得到成员信任,向整个群落广告,并且修改现有的成员信任状。权力认证和安全管理可以提供相应等级的保护。



管道绑定协议:该协议允许一个对等体绑定一个管道广告到另外的一个管道节点。从某种意义上来说,一个管道可以看做支持新建,打开,关闭,删除,发送,接受等抽象操作的命名的消息队列。办定发生在打开操作的时候,而解除绑定发生在关闭阶段。


节点路由协议: 该协议可以保证一个对等体要求另一个对等体作为它发送消息到目的地的中间路由。通常的来说,两个通信的对等体并不是直接相连的。这样的例子有很多:如两个使用不同网络协议的对等体,或被防火墙和网络分割的对等体。对等体路由用有效的路由信息来响应请求,使用节点路由协议,每都一个对等体可以决定是否成为一个路由。


2.3 JXTA技术1.0版本
----------------------------------------------------------------
下面介绍一些该项目中的关键技术问题。


2.3.1、发现机制
JXTA并没有明确规定如何实现发现。它可以实现为完全分布,完全集中,或是两者的混合。JXTA项目支持以下发现机制:
基于LAN的发现。主要通过本地广播来实现。
通过邀请的发现。如果一个对等体接受到一个邀请,则包含于邀请之中的信息能够用于发现一个(也许是远程的)对等体。
层叠发现。如果一个对等体发现了第二个对等体,通过第二个对等体的允许,第一个对等体可以得到第二个对等体的知识,从而发现新的对等体,群落和服务。
通过集合点发现。集合点是一个拥有所有它所知道的对等体信息的特殊对等体。一个对等体首先与集合点联系,可以了解到其他对等体的存在。
当需要给一个孤立的对等体迅速的给予大量的信息时,集合点非常的有用。


2.3.2、 传播范围
JXTA也没有规定消息如何被传播。例如:当一个对等体发出一个PEEP 发现消息时,发现协议并没有描述,这个信息仅仅只能限制在本地网络当中,还是必须发送到世界上的每一个角落。
JXTA的当前版本使用了对等体群落的概念作为所有在该群落中产生的消息的默认传播范围。理论上,任何的范围都可以由产生响应的群落来实现。例如:一个位于SAN FRANCISCO的对等体,它需要购买一辆二手的汽车。一般地说来,它对该地区之外的汽车不会感兴趣。在这种情况下,该对等体可以对世界对等体群落的一个当前子集进行消息的多播,这一个子群落可以专门为这个目的来构造。另外一方面,如果这样一个多播不需要建立一个新的群落则会更加的方便和高效。
我们可以想出多种方法来解决这个问题,例如:所有的消息都可以带上一个特殊的范围字段,这一个字段表明了该消息可以投递的范围。任何一个得到该消息的对等体能够根据该字段所描述的范围进行投递。使用这种解决方案,需要一个对等体有一个定义好的范围,而且可以发现添加的范围。这方面还需要进一步的研究。


2.3.3、XML
理论上,JXTA可以独立与任何用于对广告文档和消息编码的格式。实际上,它使用XML作为编码格式,这主要的由于它在可扩展性方面的便利。XML的使用主要有三个方面值得一提:
如果未来的技术抛弃了XML而采用YML,这时候,JXTA仅仅只需要简单的重定义,并用YML重新编码。
XML的使用并不意味着所有的对等体节点都必须可以新建XML文档。例如:一个资源有限的蜂窝电话可编程实现识别和新建某一使用XML包装的消息,并能参与某一个对等体的网络。
为了保证1.0版本的精简性,使用的XML并不能支持XML的所有特性,而是选择了支持了XML的一个子集。这个子集又被称为MICRO-XML。


2.3.4、FIREWALL
防火墙的广泛使用大大的影响了许多的P2P系统的平滑性,同样也影响了JXTA的适用性。特别的,一个位于防火墙外的对等体不能发现防火墙内的对等体,在缺乏系统管理员使JXTA通过房火墙传输的情况下,有如下两个思路解决这个问题。
1、要求防火墙内的对等体建立到外部对等体的初始化连接。
2、将对等体设置为如同邮件箱一样,所有到防火墙类对等题的传输排成队列,由一个设计好的防火墙外的对等体进行接力处理。防火墙内的对等体可以初始化到达防火墙外,并选择一个接力的对等体,广泛的发布这个消息。然后,它就能定时的联系接力的对等体,从而获得消息。


2.3.5、对等体监视
对等体监视指的是保持对某一对等体的状态密切跟踪的能力,控制一个对等体的行为。这个能力非常有利于一个对等体网络提供诸如依赖性,伸缩能力,保证响应时间等重要的属性信息。例如:对等体网络中的错误应该被及时的发现以便于排除。有的时候,关闭一个失效的对等体,并将它的责任转移到其他对等体说不准是一种更好的解决方案。
显然,安全控制是对等体监视的中心问题,一个对等体可以选择对任何它所接受的命令进行鉴别。它同样可决定对来至于可疑地方的请求不予响应。


3 基于JXTA技术的服务
----------------------------------------------------------------
一个服务指的是一组提供者所提供的功能。一个对等体可以仅仅靠它自己,或和其他对等体合作来提供服务。一个提供服务的对等体通过发布一个服务广告来发布服务。其他的对等体可以发现该服务,并且利用它。每一个服务拥有一个唯一的ID,名字和一系列唯一标识该服务的描述关键字。
有时候,一个服务是定义良好的,并能被广泛应用。另外一些时候,为了确切的获得某项服务,需要特殊的代码。例如:与服务提供者的接口方法可用某种软件进行编码。这种情况下,如果一个对等体能找到适应它的特殊的运行环境的实现的话是最便利的了。当然,如果同一个服务的多个实现都是可用的,则基于JAVA运行环境的对等体能够使用JAVA语言的实现。服务的实现能够被预安装到对等体节点,或从网络上下载。这个寻找,下载,从网络安装服务的过程和在INTERNET上查找一个网页非常的相类似。一旦服务被安装并且被激活,管道就可以用来与服务进行交流。
一个对等体服务指的是仅运行在单个对等体上的服务。我们称运行于多个对等体,提供一组协做的实例的服务为群落服务。相比之下,群落服务有着更好的容错性和灵活性。

责任编辑:liqwei
打印本页】【关闭本页】【返回列表
·上一篇:JSP与Servlet的区别
·下一篇:Servlet 是什么
 文章评分
  • current rating
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
 相关文章
 相关评论
 站点最新文章 更多>> 
·[经典影音]弱点
·[经典影音]萨利机长
·[经典影音]天空之眼
·[管理知识]康奈尔笔记法,提高100%学习效率
·[管理知识]刘强东:我管75000人靠这4张表格
·[管理知识]跟壳牌学HSE管理
·[运营策划]编辑工作内容整理
·[至理名言]奋斗与决定
·[瀚海拾遗]盲人打灯笼之各家论道
·[搞笑段子]中国男足
 站点浏览最多 更多>> 
·[协议规范]http断点续传原理:http头 Range、…
·[JS/CSS/HTML]HTML 空格的表示符号 nbsp / en…
·[NoSQL]Mongo数据库简介
·[协议规范]什么是SPF记录?如何设置、检测SP…
·[协议规范]图解 HTTPS 通信过程
·[PHP]精选国外免费PHP空间推荐
·[程序综合]常用IP地址查询接口
·[程序综合]什么是 DNS Prefetch ?
·[程序综合]获取客户端IP地址的三个HTTP请求…
·[Linux]/usr 目录的由来