JXTA的共享资源分布式索引SRDI
2016-11-09刘班
刘班
摘要:通过对共享资源分布式索引(SRDI)服务的支持,JXSE为JXTA网络中查询请求的传播提供了一个高效的机制。集合节点维护了一个由边缘节点发布的广告的索引。当边缘节点发布了一个新广告,该节点就会使用SRDI服务,将新广告的索引保存到集合节点中。通过这种集合-边缘节点的层次体系,查询只在集合节点之间传播,从而在很大程度上减少了搜索一个广告所涉及的节点数目。JXTA网络的操作依赖于其解析分布式查询的能力。JXTA使用了一种称为共享资源分布式索引(SRDI)的分布式算法,以创建并维护网络中资源的一个总体索引。论述了SRDI的工作原理和简单应用实例。
关键词:JXTA SRDI 共享资源分布式索引
中图分类号:TP393.02 文献标识码:A 文章编号:1007-9416(2016)09-0235-01
1 工作原理
每个集合节点都维护着自己的一套同节点组中已知集合节点的列表。一个集合节点可能从一套预先定义好的种子集合节点列表中获取其它集合节点的信息。集合节点周期性地选择另外一些随机数量的集合节点,并向这些集合节点发送其已知集合节点的一个随机列表。同时,集合节点也周期性的清除掉那些没有响应的集合节点。因而集合节点维护着其已知集合节点的一个大致上连续的网络。
当一个节点发布了一个新的广告后,这个广告就被SRDI服务使用主键(比如广告名称或ID)进行了索引。SRDI只将广告的索引存入集合节点,从而最小化那些需要存入集合节点的数据量。集合节点也将广告的索引存入另外一些集合节点之中,这些集合节点是根据广告索引的一个哈希函数计算结果选择的。
本地网络中的查询(比如在一个子网内)会借助一个定义为广播或多播方式的传播协议传播到本地网络的节点之中。如果接收到该查询的节点本地缓存中包含要查询的信息,则该节点会直接响应发出该请求的节点。发往本地网络以外的查询首先被转发到与本地网络相连的集合节点上。该集合节点先在其本地缓存中查找是否有满足查询要求的信息。如果这个集合节点包含请求的信息,那么它就会直接回复发出该请求的节点,并且不会再传播这个请求。如果这个集合节点在其SRDI缓存中包含此请求资源的索引,那么它就会通知发布该资源的节点,使那个节点可以直接响应发出该请求的节点,在这种情况下,集合节点只存储了广告的索引,而没有存储广告本身,因而集合节点是不能直接响应请求节点的。
如果集合节点没有包含请求的信息,那么JXTA网络就会使用一个默认的有范围限制的遍历算法在一套集合节点中遍历寻找包含了请求信息广告索引的集合节点。为了减少一个查询的TTL值,一个查询的路径可能会被一个网络映射函数修改。为了避免可能导致网络不稳定的Ping-Pong命令的影响,一个跳跃计数用于指定请求被映射/转发的最大次数。一旦查询到达了节点,该节点就可以直接回复最初发起该查询的节点。
SRDI使用一个SHA1哈希寻址方案。在这个方案中,一个160位的哈希地址空间在一个集合节点的有序列表之中分配。当索引被接收后,哈希函数就会根据这些索引计算出他们的复制地址,然后将他们复制到这些地址对应的目标集合节点之上。
2 配置实例
图1是一种配置的实例。节点A是一个边缘节点,并配置为使用R1作为其集合节点(Rendezvous)。当节点A生成一个发现或搜索请求后,该请求就会首先被发送给它的集合节点R1,在这个实例中,该请求也会通过多播方式发送给同一子网的其它节点。
3 结语
在SRDI的支持下,JXTA网络可以快速地对一个节点发出的公告查询进行响应, 从而提高了JXTA网络中节点间信息传递的效率,为基于JXTA框架的应用程序开发提供了方便。
参考文献
[1]杨天路,刘宇宏等.P2P网络技术原理与系统开发案例[M].北京:人民邮电出版社,2007.
[2]Sing Li.JXTA2:具有高性能、海量伸缩性的P2P网络.