1. JXTA定义
JXTA是深入的,特别的为了实现pear to pear网络计算而设计的一组(6种)协议。使用JXTA协议,pears能够自己组织和配置自己的pear groups而脱离现在的互联网,并且不需要实现集中管理的架构(集中管理架构流行于现在很多p2p软件)。
2. JXTA 概念
Pear同位体
一个可以进行虚拟通信的点,可以是一台电脑,一个电话,pda等。一台设备也可以有多个pear(虽然这是个不好的设计,但是对于debuging来说很有用)。
每一个同位体能够和一些服务联系在一起,比如路由,网关,rendezvous等等。这些服务提供了一些比如搜索和通讯的服务。
不是说所有的同位体都要实现这些服务,但是,有一部分实现这些服务确保整个网格的运行还是有必要的。
比较通常的来讲,一个设备上一般只有一个pear,比如进行分布搜索,内容共享,带宽共享等,这样是有好处的。然而,并不排除一个设备上多个pear,因为pear是一个个分开的实体,多个pear并没什么问题,只是会多消耗一些资源。有几种情况我们可以使用一个multi-pear的设备:
1. 提供proxy服务
2. 与已经存在的服务器建立接口
但是,这个已经不必要了,可以由其他方法实现,比如基于p2p的分布式系统。所以,我们尽量不要建立multi-sever的设备,违背true p2p的思想。
Pear Group:同位体组
一个Pear Group是提供一个通用服务的同位体的集合。
由于安全以及隐私等方面的原因可以组成一个pear group。这个pear group是实现了安全和加密等,类似于一个VPN。
Endpoint:端点
端点是JXTA的基本的寻址形式,一个端点是某个同位体实现了某种协议的地址。一个同位体可以实现多种协议,所以也就可能拥有多个端点。
最简单的端点的例子就是ip地址和port。
Pipe:管道
管道在JXTA中是最基本的概念,是对等点之间的数据传输的主要方式。对等管道协议(PBP)明确规范了对等管道的绑定,解析,响应。
有两种形式:
1. 点对点形式。
2. 广播形式。
Endpoint and Pipes:端点和管道
一个同位体可能含有多个端点-因为实现了多种协议。比如,我们可以用tcp进行连接,也可以用http进行连接-当有firewall的时候。
如果觉得一个pear实现多种协议很麻烦,也可以只用一种协议:http。
Advertisement:广告
一个广告是一个XML结构的文档,用来命名,描述和公布现有的资源,如同位体,同位体组,管道,或服务。各种广告的格式请参考JXTA规范。
大概说明:
广告的格式是utf8编码的,为了更有效的利用资源,所以并没有利用unicode编码。因为unicode是16位而utf8是8位。
Message:消息
有两种形式的消息:
1. Xml格式的
2. 二进制格式的。之所以有这个格式的,是因为这个速度比较快,虽然message是二进制的,但是传输消息的协议仍然是xml格式的。
Identifiers:标志
Rendezvous Pear:
从其他同位体进行查询操作的同位体,Rendezvous Pear也可以委派查询操作给其他的pear-当然也必须是一个Rendezvous Pear。Rendezvous Pear其实可以说是在一个对等网络环境中代替原来的非完全对等环境中的集中服务器的东西。
Rendezvous Pear还能够传递检索。也能够传递发现(discovery)给其他的Rendezvous Pear。
Router Pear:路由同位体
实现端点协议的同位体。和路由器功能类似
Gateway Pear:网关同位体
通讯的中间体,作为传递消息的中间体,和Rendezvous Pear不同。现在支持的网关协议有tcp和http(都是通过管道来组织)。
3. 同位体和组(peer and group)
为什么使用组?
安全,隐私,更加高效的数据共享。
4. 广告(Advertisements)
同位组广告:
定义这个同位组的识别标志和服务:
Name
DESC
GID(Peer group id)
MSID
SVC(Service)-list of the service denoted by MCID and Parmeters
Peer Advertisements
同位体广告:
Name
DESC
PID(Peergroup id)
Debug Flag(Dbg)-optional tag for debugging
Service(SVC)
模块-Modules
模块是定义了一个同位体或者一个同位体组所提供的服务。
模块类广告-Module Class Advertisement
定义了一种行为。
格式:
MCID(Module class id)-Module唯一的识别标志
Name-模块名称,用来进行search和识别,不保证唯一
DESC(Descripition)-描述:供搜索和识别用。
模块规范描述广告-Module Specification Advertisement
比较详细的描述模块的规范定义。
Module Spec ID(MSID)-定义一个模块-和MCID有和区别?
Compatibility(COMP)兼容性-定义代码的兼容性,跨语言和跨平台。
Name
Desc
Sprcification URI document.定义URI
Vers-the version
Parm-定义参数-供Implementation使用
Proxy-ModuleSpecID of a proxy if one exists
Authenticator-ModuleSpecID of an authenticator module if required
模块执行广告
Name
DESC
MSID
COMP
PURI(Package URI)-Download the special code
Code-a reference code,for a java module,this is a classname
Prov(Provider)
管道广告-Pipe Advertisements
Name
ID
TYPE-Related to a protocol, unicasttype,unicastsecuretype,propagatetype
端点路由信息-Endpoint Router Messages
查询和回应消息,以发现Router。分查询和回应两类Messages
消息-Messages
分为XML message和Binary Message
管道绑定协议-Pipe Binding Protocol
要建立管道,一个peer必须宪发布一个管道广告,表示自己在request。接收方会回应并同时发布广告。
Request Adv:
Msgtype-Query or Respond
PopeId-Pipe id being resolved
Type-the type of pope resolution requested
Cached-cache里是否有答案
Peer-指定链接的peer
Response Adv:
Msgtype
Pipeid
Type
Found
Resolver-解释器
用来发现来自对等组内其它对等机的广告;有助于发现对等机、对等组、管道和服务
解释器的ResolverQuery message的schema:
credential-信任证书 of the peer sending the query
HandlerName
QueryID
Query
Rendezvous Protocol:
描述了消息是怎么在组里面广播的。
使用端点协议来定位同位体和路由以及传输
使用Rendezvous Protocol来传输消息。
Rendezvous ADV:
Name
Rdvgroupid-peergroup uuid
Rdvpeerid-peer id of the Rendezvous peer