遥感数据分发系统单队列控制模式的设计与实现
2015-05-30沈夏炯张振鹏段胜强
沈夏炯 张振鹏 段胜强
摘 要: 鉴于遥感单一影像文件大、总体数据海量的特点,针对如何保证遥感数据分发系统能有序、规范、高效地为各行业用户提供共享数据问题,对遥感数据分
发系统的硬件部署框架结构进行分析,提出一种基于固定容量的单队列控制模式解决方案,并对其进行实现。通过单队列控制模式的控制流程及策略,系统稳定并可靠地完成了数据分发任务,最终保证了系统的运行性能和数据的传输质量,满足了用户对遥感影像的获取需求。
关键词: 遥感数据; 分发; 队列; 控制
中图分类号:TP399 文献标志码:A 文章编号:1006-8228(2015)05-07-03
Abstract: In consideration of the characteristics of remote sensing image data that the single file is large and the total data is massive, aiming at how to ensure the remote sensing data distribution system orderly, standardized and efficiently provides the users in various industries with shared data, a hardware deployment framework of remote sensing data distribution system is analyzed, and a single queue control mode with fixed capacity is proposed and realized. By controlling the processes and strategies of single queue control mode, the system is stable and reliable to complete the data distribution task, ensures the performance and the transmission quality of data, meets the needs of users to access remote sensing images.
Key words: remote sensing data; distribution; queue; control
0 引言
随着高分辨率系列遥感卫星的不断升空及获取遥感影像技术的不断成熟,每天获取的遥感影像数据量也在急剧增长。面对海量的遥感数据,建立一套遥感影像数据分发系统,实现遥感数据资源的有序、规范、高效共享,为各行业用户提供遥感影像的查询与获取很有必要。由于遥感数据的特殊性与信息安全的需要,遥感数据集中存储在数据分发中心,由数据分发中心的数据库管理系统负责对其进行统一整理、存储和统计。单个遥感影像文件的大小通常在数百兆甚至更大,在数据分发过程中,占用网络资源较多,传输压力主要集中在数据分发中心。如何在网络资源有限的环境下对到达数据分发中心的大批量数据分发请求进行处理,同时保证用户的体验与服务性能,是遥感影像数据分发系统中必须解决的问题。
如果采用传统的方法,可以使用多线程技术对每一条到达的分发请求建立单独线程处理,即立即响应请求的控制策略[3],但这样在大批量分发请求的环境下,会出现两个问题:第一,数据分发中心将在服务器上不断的创建销毁线程,这是对系统性能和计算资源的浪费;第二,数据中心的网络带宽有限,在大量请求环境下,不仅降低系统的整体分发效率,同时还会增加数据传输出错的概率。
针对遥感数据的特点及传统分发控制方法的不足,本文实现基于固定容量大小的单队列控制模式,通过控制数据分发中心处理分发请求的顺序及数量,保证系统的运行性能和数据的传输质量,满足多用户多行业对遥感影像的获取请求。
1 系统总体框架结构
遥感数据分发系统采用SOA架构设计,各子系统之间通过WebService进行消息通信,其部署架构图如图1所示。
遥感数据分发系统总体由1个数据分发中心和k个板块中心构成。通过在数据分发中心和用户中间添加板块中心层,将用户登录、订单管理和数据检索等系统压力转移至板块中心,隔离数据分发中心与用户的操作,使得数据分发中心保持数据存储及分发功能惟一性。板块中心拥有用户并负责管理自己的用户,与数据分发中心始终保持系统已有遥感影像卫星、传感器类型、分辨率、经纬度等元数据信息的同步。用户从自己所注册的板块中心检索符合要求的数据,通过板块中心向数据分发中心提交数据获取请求,数据分发中心将数据安全可靠的推送至对应的板块中心。
数据分发中心由m个磁盘阵列、n个推送数据的服务站点和协同子系统组成。磁盘阵列即数据分发中心的数据库管理系统,主要负责组织、存储和管理系统的数据,部署在内网环境中,以保证数据的安全;推送站点主要功能是将用户需要的数据安全、可靠的从磁盘阵列推送至板块中心。
协同子系统负责与各个板块中心、磁盘阵列和推送站点之间的消息通信,控制数据传输的流程,保证系统在网络与系统资源有限的情况下高质量的数据分发,是整个系统的不可或缺的服务组件。协同子系统中的任务库用来保存板块中心信息、系统配置及数据分发过程产生的状态信息等少量控制信息,任务控制队列负责统一调度控制数据的分发,是整个系统的核心,也是本文讨论的重点。
2 单队列控制模式的设计
2.1 数据分发流程
从系统部署架构图(图1)中的数据流向可以得知,为保证数据的安全,系统分发过程中遥感数据首先在数据分发中心内部从磁盘阵列转移至推送站点,再由推送站点负责将数据推送至板块中心,最终到达用户手中。具体的分发流程如下。
⑴ 用户从板块中心登录系统,在检索界面设置卫星、传感器、经纬度和拍摄时间等条件,检索满足条件的遥感数据,可以通过查看数据的详细元数据信息或缩略图等方式确认自己需要的影像。
⑵ 将需要得到的数据作为订单提交至板块中心,板块中心调用数据分发中心协同子系统提供的提交订单WebService服务,提交数据分发任务。
⑶ 协同子系统将收到的分发任务存放在任务库中,等待控制队列的调度执行,同时告知板块中心任务提交成功处于等待处理状态。
⑷ 执行分发任务时,协同子系统选择推送站点将用户请求的数据推送到用户所属的板块中心。
⑸ 推送成功后,由协同子系统通知相应的板块中心用户可以取走数据。
⑹ 数据在分发过程中如果出错即任务失败,则由协同子系统告知板块中心,允许用户再次提交对该数据的获取请求。
2.2 队列控制流程设计
从系统整体部署框架结构可以看出,系统实际运行时,每时每刻都可能有大量的下载请求到达数据分发中心,为保证各个板块中心的数据需求,在传输数据上实现资源的公平分配,同时结合遥感数据大、传输时间不确定的特点,数据分发中心采用主动的、有固定容量的任务控制队列针对板块中心提交的数据分发任务进行统一调度控制。主动性是指队列主动去任务库中获取等待处理的分发任务;固定容量指控制队列的处理资源有限,系统同时运行的任务最多不会超过某个阈值,控制系统并行传输数据量,减小使用网络资源,保证传输速度与质量。
在此模式下,用户从板块中心提交的数据分发请求不会立即得到响应,而是将请求的数据ID、数据名称、数据类型等信息存储在协同子系统的任务库中,任务控制队列主动从任务库中获取等待分发的任务进行处理,具体控制流程如图2所示。
2.3 队列控制流程描述
第一步:协同子系统将用户从板块中心提交的分发任务解析加入任务库,同时发送消息通知控制队列有新的分发任务到达,控制队列如果处于正在“取出wait”状态,则取消该状态立即响应新到达的任务,开始分发流程,否则控制队列忽略该消息,继续执行自己的控制流程。
第二步:控制队列主动从任务库中获取等待分发的任务,如果任务库中不存在等待分发的任务,控制队列进入“取出wait”状态,等待取消该状态的消息到来。
第三步:成功获取到下一条待处理的分发任务,如果控制队列没有空闲资源,即系统正在执行的分发任务占满了队列容量,控制队列进入“加入wait”状态,等待取消该状态的消息到来。
第四步:队列有空闲资源时,则将分发任务加入队列,同时减少队列的空闲资源数量,该任务进入数据分发子流程,同时队列继续获取下一条待处理的分发任务。
第五步:数据分发子流程中队列解析任务相关信息并选择推送站点将数据安全可靠地推送至指定位置(板块中心的惟一FTP地址)。
第六步:推送站点将队列分配的任务完成后,发送消息通知控制队列一条分发任务处理完成,如果队列处于“加入wait”状态,则取消该状态,将待处理的任务加入队列,否则控制队列忽略该消息,继续执行自己的控制流程。
2.4 队列控制策略设计
对用户不同需求提供对应的不同服务是保证网络服务质量的一个重要原则[4],数据分发中心为了保证对板块中心的平等服务,除了采用固定容量、主动的队列外,系统还设计了一系列其他控制策略。
由于数据分发中心对用户是透明的,所以队列在获取分发任务时,对每个板块中心平等对待。在控制队列容量和板块中心数量相等时,如果板块中心均有分发请求,则每个板块中心均有一条正在执行的分发任务,如果存在某个板块中心没有分发请求,则进行下一个板块中心的分发任务,即控制队列获取等待分发任务时,针对所有板块中心进行轮询,同时不浪费空间资源,保证每个中心得到均匀的任务响应。
在传输过程中系统可能出现无法控制的未知异常或错误,如网络中断、数据库系统或某个推送站点意外宕机等,此时协同子系统无法得到失败消息,会导致分发任务无法按照正常的流程执行完毕而一直占用队列资源,进而影响后续分发任务的执行,因此队列提供定时检测机制,对长时间没有结束的任务进行强制移除。
数据传输量大,防止用户恶意提交大批量任务占用系统资源,板块中心对每个用户每天数据下载量进行控制,同时数据分发中心对板块中心每年数据下载量控制。
3 运行实例
协同子系统采用Java+Axis2技术开发,使用Hibernate操作任务库,部署在Linux平台下的Tomcat服务器中,以WebService服务的方式与板块中心、磁盘阵列、推送站点进行消息通信。控制队列作为协同子系统的核心功能,在协同子系统启动时开始执行队列控制流程,贯穿系统整个运行期间,保证数据的有序、高效分发。在实际运行环境中,板块中心为6个,网络为千兆网,设置控制队列容量为6,可以保证对板块中心的平均分配,若网络环境不允许可适当调低队列容量大小。策略上间隔5分钟对队列任务执行一次超时检测,经测试最终设置超时阈值为30分钟。
控制队列没有可视化运行界面,但可以通过即时监控其执行日志获得队列的控制流程及运行情况,如图3所示。可以看到,系统在11月4日14:12没有分发任务,控制队列进入“取出wait”状态,在11月4日20:33进入“加入wait”状态,在11月4日20:34取消“加入wait”状态的消息到来,在11月4日20:35再次进入“加入wait”状态,在11月4日20:36进行了一次超时检测。控制队列执行过程中对分发任务的状态进行更新,用户可以通过在板块中心查看操作历史记录获得分发任务的即时执行状态,如图4所示。
4 结束语
本文阐述了一种基于SOA架构的数据分发系统结构,并针对系统中影像文件大、占用资源严重等特点,提出基于固定容量大小的单队列控制模式解决方案,通过控制分发流程及控制策略,保证系统的性能及数据的传输质量,实现遥感影像数据的有序、规范、高效共享,满足多用户多行对遥感影像的获取需求。
在实际运行测试环境中,单队列控制模式稳定可靠地完成了数据的分发任务,但同时也发现该解决方案的不足,即没有实现任务优先级的设计,无法满足系统对应急分发任务及时优先处理的需要,对此,我们将在后续的工作中进一步研究与完善。
参考文献:
[1] 埃克尔(美)著,陈昊鹏译.Java编程思想[M].机械工业出版社,2007.
[2] 卢传富,蔡志明,夏学知.数据分发服务体系结构的研究[J].计算机与数字工程,2008.36(5):67-69,82
[3] 黄飞龙.分布式计算中多队列线程池的设计与实现[J].科协论坛,2013.4:95-98
[4] 徐建,李善平.用户公平的活动队列管理[J].电子学报,2004.32(3):435-440
[5] 倪志伟.基于排队论的订单处理系统建模与仿真[D].北京交通大学,2009.
[6] 李男,黄永忠,郭绍忠.基于多队列思想的作业处理环境的设计[J].计算机应用,2008.28:116-119
[7] 孟宪福.分布式环境下任务调度模型研究[J].大连理工大学学报,2006.46(6):920-925
[8] 兰秀菊,汤洪涛,陈勇.订单处理过程的响应性分析[J].浙江工业大学学报,2006.34(1):74-77