通用的结构化P2P网络支撑平台的设计及实现

2013-11-30 05:01刘林峰
计算机工程与设计 2013年1期
关键词:参考模型应用层结点

刘 业,刘林峰

(1.中国科学技术大学 苏州研究院,江苏 苏州215123;2.中国科学技术大学 软件学院,江苏 苏州215123;3.南京邮电大学 计算机学院,江苏 南京210003;4.阳立电子(苏州)有限公司,江苏 苏州215000)

0 引 言

近年来,CAN、Chord、Tapestry、Pastry、BAKE[1-6]等为代表的结构化拓扑P2P网络技术层出不穷,结构化P2P网络在资源管理过程中同时拥有自组织特性、规模的强可缩放特性以及部署的廉价性等等,突破了网络规模限制的结构化P2P网络技术给广域网范围内规模庞大的资源整合及共享提供了可能性。

目前国内P2P网络研究领域很多都是在某一种开源项目的基础上来开展后续研究,目前尚未有一个通用的P2P网络支撑平台见诸报道。我们通用的结构化P2P网络支撑平台原型系统设计的目的是建立一个可以应用于广域网范围内,集资源整合与利用为一体,面向服务的P2P网络支撑平台,能够提供文件共享、应用层多播、CPU资源整合、网络存储、极速传输等基本服务,从而实现对当前网络中的存储资源、计算资源、存储转发资源(即,带宽资源)以及信息资源的整合。另外,通用平台是基于分层模型的,亦能方便我们进行底层不同结构化P2P网络拓扑及路由算法的替换,利于进行不同结构化P2P网络路由算法的比对研究。

正文部分首先给出了一种通用的结构化P2P网络支撑平台实现框架的模块划分图,接下来介绍了我们所开发的通用平台的具体设计及实现,阐述了课提供给第三方进行新型应用开发的开放接口函数,最后给出了通用平台的相关测试结果。

1 结构化P2P网络支撑平台参考模型

参照文献[7]给出的面向服务的P2P网络体系结构(ISPNA)框架模型,图1给出了一种典型的结构化P2P网络支撑平台参考模型。得益于结构化P2P网络技术所拥有的强大的可缩放特性,我们能够在该结构化P2P网络支撑平台参考模型的指导下,实现一个在广域网范围内进行海量规模的资源整合及共享的系统。

图1 结构化P2P网络支撑平台参考模型

图2给出了一个原型系统的总体实现框架,我们接下来对各主要功能模块的实现做逐一说明。对于P2P网络中的某一节点Node i来说,在功能上该节点既是Client端,亦是Server端。

1.1 结构化P2P网络支撑平台基本模块

(1)P2P路由模块:利用现有的(TCP、UDP、HTTP)通信协议建立P2P路由通道,完成幂次逼近的路由过程,向上层模块提供可调用的P2PAPI接口函数;

(2)路由表维护模块:维护P2P节点间的逻辑邻居关系,即节点路由表的更新操作,适应P2P网络节点在自组织管理模式下的动态(加入、退出)行为;

图2 总体实现框架模块划分

(3)共享资源管理模块:资源在该层以resource_object的形式抽象,该模块负责P2P节点之上所维护的资源稳定性的管理操作,包括节点动态加入、退出时,该节点所维护的resource_object的重新分配过程,等;

(4)Server端图形界面模块:Chord Ring Visualizer,用于查看P2P网络环中每个节点状态的工具,它能够检测当前环中的节点数、每个节点的前驱,后继列表,finger节点等等。可观察到节点的加入退出,邻居节点调整的过程。

1.2 结构化P2P网络支撑平台可用性增强模块

(1)可用性增强扩展模块:结构化P2P网络路由效率的提高是增强P2P网络可用性,推动其进一步发展的关键所在。

(2)安全性增强模块:端节点的自私行为势必导致P2P网络资源的可用性存在极大的变数,在自组织管理模式下的P2P网络中,正因为诸如此类的节点自私行为是大量存在的,因此需要研究相应的机制来约束节点的自私行为,从而增强整个P2P网络的可用性及稳定性。

1.3 结合某一类资源整合需求,面向应用的具体实例举例

(1)文件共享服务模块:整合联入系统的节点的文件资源,提供文件资源共享服务,实现资源的查询及下载服务;

(2)计算力资源整合模块:整合联入系统的节点的CPU资源,完成特定领域的科学计算过程,适合于输入集松耦合、不同节点所使用算法大致相同或者独立的科学计算过程,应用实例举例——特大质数的判别;

(3)网络存储服务模块:整合联入系统的节点的存储资源,提供海量数据存储服务,应用实例举例——网络硬盘的实现;

(4)极速传输服务模块:整合联入系统的节点的带宽资源,提供高速的数据传输服务。其工作原理如下,采用文件分片传输的方法进行文件传输,发送方借助P2P网络邻居节点的带宽,使多个节点同时向接收方发送文件,从而乘数级增加数据传输时的带宽。应用实例举例——极速传输工具。

2 通用平台的设计与实现

2.1 P2P路由模块

P2P路由模块及路由表维护模块(JavaChord模块)是完全自主地利用Java开发的一个P2P路由模块,同时参考文献[8]所提及的15个open问题,对算法作了必要的修改和补充。主要工作包括P2P路由报文的设计及约定。JavaChord模块使用JavaRMI[9]实现,主要包括sigp2p.chord.datatypes,sigp2p.chord.protocol,sigp2p.chord.protocol.rmi这3个包,每个包的详细说明略。其中在rmi包中使用了RMICache机制,即Cache将最近访问过的RMI服务保存在列表中,如果程序马上访问,可以直接从列表中得到。目的就是为了提高P2P资源查找效率而设的。

2.2 通用平台用户界面实现

本部分主要介绍通用平台的用户界面Server部分的控制界面,如图3所示。

图3 通用平台用户界面:Server端控制界面

下面分区域介绍Server部分的控制界面的功能:

(1)本地节点信息区:这一部分设置本节点的IP地址,基本端口号和虚拟节点号。本机IP地址可以点击Refresh按钮获得,端口号和虚拟节点号可以自行设定,也可以点击 “Randomly select port and vid”随机选取。

(2)启动模式控制区:控制启动模式。选中 “Start bootstrap mode”将本机作为启动节点(即环中第一个节点)。点击Join now可以加入环中已存在的节点。如果没有选中将本机作为启动节点的模式,启动节点后将自动执行Join操作。

(3)节点控制区:控制节点。包括启动,关闭,参数设置,显示finger表,退出程序等。

(4)应用层服务控制区:控制应用服务器。程序启动后,下拉列表框中会出现所有已安装的应用插件。port是报告给应用程序的端口号,不是基本端口号。

(5)日志区:显示程序日志。

(6)性能计数器区:显示程序的性能计数器。

3 第三方应用开发接口

P2P通用平台以开放API函数的形式提供给第三方进行新型应用的开发。接口函数说明如下:

3.1 服务器端API

(1)接口:服务器端应用程序以插件的形式加入到SPIS中。所有服务器端应用程序都要实现ApplicationServer接口,该接口在sigp2p.spis.appserver包中定义。共有如下3个方法:

·voidstartup(finalChordServercs,intport);

该方法用于启动应用层服务,由SPIS Server调用。参数cs是对当前Chord服务器的引用,参数port为SPIS Server报告给应用层服务的端口,此端口的含义由应用层服务器自行约定,也可以忽略它。

·voidshutdown();

该方法用于关闭应用层服务,由SPIS Server调用。SPIS不保证调用此方法时应用层服务器正在运行。因此,应用层服务器应自行维护自身状态。

·StringgetAppName();

该方法用于获取应用层服务的名称,由SPIS Server调用。

(2)处理Chord结点:每一个Chord结点由IP地址,基本端口号,虚拟结点号组成。Chord基本端口指的是SPIS服务器向客户端或其它服务器报告SPIS结点时采用IP地址加Chord基本端口的方式。如果应用层服务自身协议没有约定端口,则必须在Chord基本端口上进行监听,以接受服务请求。Chord结点用ChordNode类来表示,该类中对应用层服务开发有帮助的成员函数介绍(略)。

(3)Chord Server API:一般情况下,对于应用层服务开发而言,不会用到join,SetParams,startup,shutdown这4个方法。因此,这里只介绍其余的5个方法。

·publicabstractChordNodegetSucessor();

获取当前结点的后继,在环未稳定的情况下,后继可能没有找到,此时返回null。

·publicabstractChordNodegetPredecessor();

获取当前结点的前驱,在环未稳定的情况下,前驱可能没有找到,此时返回null。

·publicabstractChordNodegetFinger(intindex);

获取当前结点的finger,参数index是finger本身,可取的范围是0<=index<=159。finger 0即结点本身。

·publicabstractbooleanisRunning();

判断Chord服务器是否在正运行。若正在运行,返回true,否则返回false。

·publicabstractChordNodegetNode();

获取当前结点。

3.2 客户端API

一个客户端可以用ChordClient抽象类来表示,Chord-Client提供基本服务有两项,一是向结点查找,二是向环发送UDP数据报。

(1)创建和初始化Chord客户端:为了使用Chord客户端提供的服务,首先需要创建ChordClient对象。可以通过调用ChordClientFactory工厂类的静态工厂方法产生,ChordClient创建后,对环一无所知。需要使用addNode将环中的一个结点告诉ChordClient。通过多次调用addNode加入更多的结点。

(2)结点查找API:

·publicabstractFindResultlookup(ChordIdkey,int retryCount,intretryInterval,booleanstickToNode);

根据提供的key查找结点,retryCount为重试次数,retryInterval为两次重试间隔的毫秒数,stickToNode指明是否只通过列表中的第一个结点开始查找。如果stickTo-Node为false,每次重试将依次使用列表中的下一次结点启动查找。retryCount,retryInterval,stickToNode参数的含义在所有的ChordClient API中都相同。

·publicabstractFindResultlookup(byte[]bytes,intretryCount,intretryInterval,boolean

根据提供的字节数组查找结点。ChordClient将自动在字节数组上施加SHA-1散列算法,以生成160bit的key。

(3)向Chord环发送UDP数据报:ChordClient客户端提供的第二项基本服务是向环发送UDP数据报。Chord Client首先根据key找到Chord环中的结点,然后向该结点发送UDP数据报。

·publicabstractvoidsendUDP(byte[]msg,intretryCount,intretryInterval,booleanstickToNode);

字节数组为要发送的UDP数据报,ChordClient自动在其上施加SHA-1算法以生成160bit的key。该方法是不阻塞的,如果发送失败了,客户将得不到任何提示。

·publicabstractbooleanblockSendUDP(byte[]msg,intretryCount,intretryInterval,booleanstickTo-Node);

这个方法是sendUDP的阻塞版本。如果成功,返回true,否则返回false。这里的成功仅表示结点已被找到,UDP数据报已发送。并不保证数据报被正确接收。

4 公共工具集

公共工具集是为在通用平台的开发、调试过程中,所构建的公共工具集。

4.1 Chord Ring Visualizer

Chord Ring Visualizer(图4)是一个用于查看Chord环中每个节点状态的工具,它能够检测当前环中的节点数、每个节点的前驱,后继列表,finger节点等等。可观察到节点的加入退出,邻居节点调整的过程。

4.2 Benchmark Chord

Benchmark Chord(图5)是用于测试Chord环性能的工具,可用于测试Chord环的平均查找时间,查找跳数等参数。

5 平台性能测试

网络测试环境如图6所示。 主机 172.18.7.7~172.18.7.10通过交换机连接成局域网络。我们利用公共工具集完成了通用平台的功能测试,包括节点的加入、退出过程中P2P网络的稳定性测试等。

图6 CHORD测试硬件环境

在4台PC上分别运行10个节点。同时使用Benchmark Chord记录每秒完成的查找的数量。由于底层网络及节点处于动态变化中,瞬间值波动比较大。为了消除瞬间波动带来的误差,图中每个数据点代表该点前60s内平均每秒完成的查找数量。在开启RMI Cache和关闭RMI Cache两种情况下,分别做上述实验,得到如图7所示结果。使用RMI Cache后,查找的速度提高了30%左右,性能得到了很大的改善。在节点数量进一步增加的情况下,节省的TCP连接数更多,性能还可进一步提高。

6 结束语

图7 开启RMI Cache和关闭RMI Cache通用平台查找资源次数对比

本文提出了一种结构化P2P网络支撑平台参考模型,并在该参考模型的指导下,设计开发出一种通用的结构化P2P网络支撑平台,并详细介绍了通用平台的具体设计及实现,详细阐述了可提供给第三方进行新型应用开发的API函数,同时给出了通用平台的相关测试结果。同非结构化P2P网络相比较,结构化P2P网络技术所拥有的强大的可缩放特性,为在广域网范围内实现海量规模的资源整合及共享提供了可能性,由于我们在通用平台中提供了ApplicationServer接口,很容易利用插件开发的形式完成应用层服务的开发。本论文的工作对于促进基于结构化P2P网络的新型应用的开发和推广有着广泛的应用前景的。

[1]Chen Zhijia,Zhao Yang.P2Paccelerated mass data distribution over booming internet:Effectiveness and bottlenecks[C]//Montreal,Québec,Canada:Proceedings of the 29th IEEE International Conference on Distributed Computing Systems Workshops,2009:239-244.

[2]Xiong Naixue,Liu Yuhua,Wu Shishun.An efficient search algorithm without memory for Peer-to-Peer cloud computing networks[C]//Anchorage,Alaska,USA:Proceedings of the IEEE International Symposium on Parallel and Distributed Processing Workshops and PhD Forum,2011:1452-1457.

[3]Mohsen Sharifi,Seyedeh Leili Mirtaheri.A dynamic framework for integrated management of all types of resources in P2P systems[J].The Journal of Supercomputing,2010,52(2):149-170.

[4]Pierre Fraigniaud,Philippe Gauron.D2B:A de Bruijn based content-addressable network[J].Theoretical Computer Science,2006,355(1):65-79.

[5]Maenpaa J,Camarillo G.Study on maintenance operations in a chord-based Peer-to-Peer session initiation protocol overlay network[C]//Rome,Italy:Parallel & Distributed Processing,2009:1-9.

[6]Guo D,Liu Y,Ki X.Bake:A balanced Kautz tree structure for peer-to-peer networks[C]//Phoenix,AZ,USA:Proc 27th IEEE INFOCOM,2008.

[7]LIU Ye,LIU Linfeng,ZHUANG Yanyan.An interactive service-oriented P2Pnetworks architecture reference model[J].Engineering Sciences,2007(9):72-77(in Chinese).[刘业,刘林峰,庄艳艳.面向服务的P2P网络体系结构层次参考模型的研究[J].中国工程科学,2007(9):72-77.]

[8]Joseph D,John D Kubiatowicz.Routing algorithms for DHTs:Some open questions[C]//Cambridge,MA,USA:Electronic Proceedings for the 1st International Workshop on Peerto-Peer Systems,MIT Faculty Club,2002.

[9]JavaRMI[CP/OL].http://docs.oracle.com/javase/6/docs/technotes/guides/rmi.Jan 2012.

猜你喜欢
参考模型应用层结点
LEACH 算法应用于矿井无线通信的路由算法研究
基于八数码问题的搜索算法的研究
适应性学习支持系统参考模型研究现状及发展趋势
基于分级保护的OA系统应用层访问控制研究
基于环境的军事信息系统需求参考模型
适应性学习系统的参考模型对比研究
语义网络P2P参考模型的查询过程构建
物联网技术在信息机房制冷系统中的应用
Current advances in neurotrauma research: diagnosis, neuroprotection, and neurorepair