JXTA开发手册(三)JXTA网络结构

 

第四章                       JXTA网络结构

网络组织

       JXTA网络是自组织的,多跳的,可配置的节点之间不具备紧密联系的网络。节点之间的连接是暂时的,节点之间的消息路由是不确定的,节点的加入离开和路由变化非常的频繁。

       节点将才用各种形式的方法,确保连接的建立。这些节点的组织采用,网络的组织由JXTA网络托管,一般包含下面几类的节点:

       ·最小限度的节点:最小限度节点可以发送和收取消息,但是不能缓存通告和为其他节点节点进行路由。这类节点运行在资源相对匮乏的设备之上(PDA,蜂窝电话)

       ·全业务节点:全业务节点在接受和发送消息的同时,也缓存收到的通告。当收到其他节点的资源查询请求时,节点搜索自己的通告缓存,查看是否有与之匹配的内容。如果有,就返回相应的应答。但是,全业务节点本身并不向前转发查询请求。JXTA网络中的大部分节点都属于这类节点。

       ·集中节点:集中节点和全业务节点一样,缓存有收到的通告的信息。但是,集中节点同时也向其他节点转发查询通告,以便帮助其他节点查找需要的资源。当一个节点加入到节点组中时,节点自动查找当前节点组的集中节点,如果不能找到集中节点,节点动态的升级自己为集中节点。任何集中节点本身也保有一个集中节点列表,以便自己也可以把这个节点作为集中节点。

       每个节点组中的节点都保存有自己的集中节点列表,并且可以根据自己需要保有很多个集中节点。集中节点是节点组中唯一可以看见全部查询信息的节点。消息含有默认的TTL7跳,并通过节点经过的节点列表进行回嗍。

       ·中继节点:中继节点保存着节点之间的路由信息,节点首先查找本地缓存的路由表,如果不能找到路由信息,节点将路由请求传送给中继节点,中继节点将返回路由信息。中继节点也担负着转发位于NAT之后,不能直接通信的节点之间的数据转发任务。

 

      共享资源分布索引(SRDI)

       JXTA2.0 J2SE平台提供了一种机制以提高JXTA网络资源定位的效率,这种机制叫做共享资源分布索引。中心节点上维护着一个边缘节点发出的通告列表,当边缘节点发布新的通告时,他们发送给所在节点组中心节点其发布的资源索引。采用这种中心——边缘节点层次,查询请求仅仅在中心节点之间传播,减少了在一次通告中参与查询的节点数目,这是非常有意义的。

       每个中心节点都包含有节点组内已知其他中心节点的列表。一个中心节点可以通过回溯重新得到其他中心节点的信息。中心节点周期性的选择随机数量的其他中心节点,并随机的选取自己列表中的中心节点信息进行交互。同时,也周期性的清除没有响应的其他中心节点。因此,中心节点之间维护了紧密联系的JXTA网络。

       当一个节点发布了新的通告,那么这个通告将会以通告的名称和ID作为关键字被索引。仅仅这些索引被传送给中心节点,以便减少中心节点上面存储的数据量。中心节点同样回把通告转发给其他的中心节点。

 

      查询

       网络的结构如下图所示,节点A是边缘节点,默认配置节点R1为其中心节点。当节点A初始一个查询请求,它首先将请求发送给中心节点R1,在本例中,同时也会通过广播将请求发送给同一子网下的其他节点。

       邻居节点之间的查询(也就是说在同一子网内的查询)通过广播方式发送给子网中其他的JXTA节点。如果子网中的其他节点的本地缓存中含有被查询的内容,那么它将直接给查询发起节点响应。

       子网外的资源查询请求被直接传送至中心节点。中心节点首先检索本地缓存是否满足查询,如果包含,直接返回查询结果,不再转发查询请求。如果中心节点包含此资源的SRDI,那么它会通告发布这个SRDI 的节点,令它响应查询节点的查询请求(这里主要中心节点仅仅存储的是SRDI,并不是通告本身)。

       如果中心节点不能包含节点的查询请求,那么中心节点将会启动limited-range walker算法,搜索含有此资源的其他中心节点。此算法伴随着一个计数器以便避免广播风暴。当找到包含此资源的节点时,节点将直接响应给发起查询的节点。

       整个SRDI工作模式如下图所示:节点2发布了一个新的通告,然后送SRDI至中心节点R3。通告索引存储在R3上,同时也将发布在节点组的其他中心节点之上。当节点1发送查询请求时,它首先将查询请求送至R1R1首先检查自己的本地缓存,如果不能满足查询将查询转发。当资源查询请求发送至p2是,p2直接给出查询响应。

 

防火墙和NAT

       防火墙内的节点可以直接给防火墙外的节点发送消息,但是防火墙外的节点通常不能向防火墙内的节点发送消息。

       为了JXTA节点可以穿透防火墙自由的互相通信,必须具备以下的几个条件:

       ·节点组内位于防火墙后面的节点必须知道至少一个位于防火墙外的组内节点。

       ·防火墙两端的节点必须能够支持HTTP协议。

       ·防火墙允许HTTP协议通过。

      

下图描述了一个穿透防火墙的典型场景,

JXTA节点A和节点B需要通信,但是节点A位于防火墙之后,采用C做中转。

      

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值