基于P2P的分布式遥感影像分发系统设计
2016-05-14杜佳恒王栋赵亚萌臧文乾宋奇
杜佳恒 王栋 赵亚萌 臧文乾 宋奇
摘要:随着遥感行业的发展,单一遥感数据越来越多,数据需求量也日益增大。遥感数据分发中心需要提高对外分发能力才能应对日益增长的数据分发请求。鉴于遥感数据分发中心的网络带宽有限,设计了一种基于P2P的分布式遥感影像分发方案。构建资源镜像节点,每个节点在分发过程中同时从多个资源镜像获取数据,并且分发节点也作为资源镜像为其它节点提供数据,有效缓解了中心的分发压力。同时,实现了一种监测端到端网络传输速率的分发机制,加快了当前节点的任务处理速率。
关键词关键词:遥感数据;P2P;资源镜像;传输速率
DOIDOI:10.11907/rjdk.161448
中图分类号:TP319文献标识码:A文章编号文章编号:16727800(2016)007007403
0引言
遥感数据作为重要的信息资源,不仅需要妥善地加以保存,更需要尽可能多地向各类用户进行分发和共享,使数据活用起来,实现其更大价值。随着遥感技术的发展,遥感图像文件越来越大,各行业对遥感数据的需求量也越来越多,使得遥感数据中心对外分发数据量大增。面对大量的分发需求和中心有限的网络带宽,研究如何快速高效地对外分发数据变得越来越迫切。
鉴于遥感单一影像文件大、总体数据海量的特点,针对如何保证遥感数据分发系统能有序、规范、高效地为各行业用户提供共享数据问题,沈夏炯、张振鹏实现了一种基于单队列控制模式的分发方式。遥感数据集中存储在数据分发中心,由数据分发中心的数据库管理系统负责对其进行统一整理、存储和统计,所有的分发请求按先后次序排队处理。此时,网络带宽压力主要集中在数据分发中心,在老分发请求未处理完的情况下新请求将会处于挂起状态,随着分发请求的增多,积压的分发量也越来越大。
针对数据分发量越来越大而分发效率逐渐降低的弊端,结合现有系统架构,本文基于P2P技术构建资源镜像节点,实现了一种基于P2P的分布式遥感影像分发方案,提出并实现了一种监测端到端网络传输速率的分发机制。
1分布式遥感影像分发方案
1.1分发结构改进
遥感影像数据与诸如视频、音频、安装包等常用且重复率高的数据不同,如果构建P2P共享网络,则使用频率高的资源会在共享网络中大面积覆盖。由于需要遥感数据的用户存在行业、地区差异,因而同一个遥感数据一般只被一个终端下载。如果采用多个终端(BT客户端)之间共享策略,数据的实际共享率实际上并不高,最后数据仍需从分发中心获取。
鉴于上述原因,本文采用混合式对等网络\[23\]的思想设计由中心管控节点管理和记录索引信息,各分发节点存储资源数据的分布式遥感影像分发架构。预先将已有的一部分遥感数据分散地存储到各分发节点,分发节点也作为资源节点,同时也为其它分发节点提供资源,形成一个大的资源共享网络,如图1所示。
改进后,每个资源节点都是中心节点的镜像或是部分镜像,新的分发请求可以将压力分散到不同的分发节点上,以缓解中心节点的一部分压力。当中心节点生产出新数据时,在任务空闲时选择当前网络状况最好的分发子节点传输新数据,逐步将新数据分散出去。这样新数据请求在各分散节点的命中率会更高,总体分发效率也会更好。
1.2中心节点数据索引
中心管控节点负责存储各子节点资源索引,当没有子节点存有所需数据时,则中心节点还需要作为唯一的分发节点将数据分发到其它节点。分发中心存有数据的元数据信息即索引信息,包括数据名、数据所在节点服务器地址、数据大小等元数据信息。
1.3数据分块及传输机制
为了从不同节点上获取同一数据资源,需要将整个资源文件进行分片,下载节点从不同的资源节点获取不同位置的数据片,最后合并成完整的文件。每个分发节点设计数据获取网络接口:
输入:给定文件名和起始字节数以及需要字节数。
输出:资源的相应部分加密后的字节流。
下载方通过调用WebService网络接口的方式从数据提供方获取所需要的数据片段。下载节点先根据资源碎片号和分片大小确定需要获取文件的起始文件位置和终止文件位置,从数据资源节点获取加密过的文件碎片信息,接收成功后解密写入碎片文件。全部接收完成后将所有碎片文件合并为原始的资源文件。传输过程如图2所示。
2.1网络传输速率检测
由于不同分发节点部署的地理位置以及接入的ISP(网络提供商)不同,因而网络带宽一般有所差异,它们的分发能力也不一样。还有一些节点ISP分配的带宽很高,但其所处的网络环境导致实际可用带宽并没有那么稳定。因此,在分配分发任务时检测当前节点和配对节点当前端到端的可用带宽很有必要。为了保证总体分发效率最高,系统根据分发任务处理过程中检测端到端可用带宽并根据当前传输速率动态调整分发任务,让系统整体网络利用率更高。
2.2中心调度
中心节点在单队列控制模式的分发调度基础上,在其分发任务处于空闲的情况下,执行新数据推送任务。推送任务选择传输速率最高而又需要存储新镜像的节点,对其推送最新数据。
具体调度流程如下:①检测中心节点控制队列是否有分发任务,如有则等待,没有则转②;②中心节点各分发节点发送数据包,根据响应时间确定网络传输速率,选择速率最优的节点;③查询所选择的节点,看中心索引是否将近一个月的数据全部存储完毕,有则选取速率次之的节点继续③;④选择最新的一景数据推送到所选择的节点,推送完毕后继续①。
分发节点接到用户下载请求后,如果自身节点没有所需要的资源,则查询中心索引得到存有该资源的其它节点信息,然后开启多个线程从不同节点主动拉取,并根据耗时动态调整线程数,让更多线程从速率快的节点下载。
步骤1:资源获取节点查询中心索引信息,确定资源基本信息和资源分布情况。假设资源大小为S,每块大小为s,可提供资源节点数为n,可以提供资源的节点为N1、N2……Nn。
步骤2:资源信息初始化。计算出分块数b。定义节点已经获取的片段数Ns1、Ns2…Nsn为0,以及片段从该节点传输平均耗时t1、t2……t3为-1,最大线程数为m。
步骤3:同时开启thread1、thread2…threadn(n为可提供资源节点数)线程不断获取下一个片段。任何一个线程只要片段获取任务完成,便可统计出其耗时为T。重新计算该节点片段获取平均耗时并将已经获取片段数加1。ti=Nsiti+TNsi+1步骤4:当线程中一次片段获取任务完成时,比较t1,t2……tn找出最少时间对应的Ni,再开启一个线程从Ni节点获取一个新片段直到Ni节点占用的线程数到最大指定数m。如果片段获取失败,则将该片段号写入错误栈并对该片段资源提供节点的平均耗时进行处理修改。该节点的平均耗时为最大平均耗时ti=max{∪nj=1tj}。
步骤5:当b数量的片段都进行过一次任务调用,检查错误栈,如果存在没有成功获取的片段,则对于错误栈中的片段从步骤3开始重新获取。
步骤6:所有片段都成功获取完成后,对b个片段文件进行合并操作。新建一个以资源名为文件名的文件,使用随机读写的方式将每一个片段写进文件对应的位置。
3实验测试
3.1实验环境
为了验证本文提出的数据分发方式的实用性,选择以下测试环境和系统初始环境进行模拟实验:
测试环境:千兆局域网内4个分发节点,中心节点Nc,限制其上传、下载速率Vc为1m/s;分发节点N1,限制其上传、下载速率V1为512k/s;分发节点N2,限制其上传、下载速率V2为1m/s;分发节点N3,限制其上传、下载速率V3为2m/s。
初始条件:中心节点录入5,景数据大小S约为2 122M,3个用户分别从N1、N2、N3这3个节点依次提交下载请求。统计数据从中心节点分发到所在节点的等待时间。
3.2单队列控制模式
该模式理论上是用户从所在节点将请求提交到中心节点,然后中心节点按先后次序依次推送到其所在节点,最后用户将其下载到本地。其理论等待时间Ti为:Ti=∑i-1j=1Tj+Smin{Vc,Vi}(Tj为队列中第j个任务处理时间)其理论等待时间和实际等待时间如表1所示。
本文实现中心节点主动监测,其在上行带宽不满的情况下向资源占有率不满的节点推送新数据。分发节点根据资源在系统中的分布位置从不同节点获取数据,最后合并资源供用户下载。因为数据是动态传输方式,所以其理论等待时间Ti存在最坏情况和最好情况,实际等待时间大致处于二者之间。
最坏情况下,资源只存在于中心节点Ti=∑i-1j=1Tj+Smin{Vc,Vi};最好情况下,资源平均分布在其它节点Ti=Smin{Vi,∑mj=1Vj}(m为有该资源的节点数)。
如果添加多个节点作为镜像站,∑mj=1Vj理论值可以是无限大,则单一节点获取数据的速率只取决于其自身网络传输速率Vi。实际等待时间如表2所示。
表2实际等待时间用户所在
节点节点最大上传速率(k/s)节点最大下载速率(k/s)数据总大小(M)等待时间(传输时间)(s)User1N15125122 1224 763User2N21 024 1 0242 1226 374User3N32 0482 0482 1225 5764结语
经过理论分析和实验验证,构建资源镜像节点,让分发任务从多个节点获取数据,并且选择网络传输速率最好的节点尽可能多地获取数据能使得分发任务平均等待时间缩短。在实际环境中,只要在广域网大量部署分发节点并存储一部分中心节点资源镜像,需要数据的行业和机构作为分发节点只需提高自身网络带宽就可以拥有相应的数据获取能力。
参考文献:
高斌.高分辨率遥感影像共享关键技术研究与实现.成都:电子科技大学,2014.
王学龙,张璟.P2P关键技术研究综述[J].计算机应用研究,2010(3):801805.
何帅.P2P文件共享系统的设计与实现.武汉:华中科技大学,2012.