APP下载

卫星地面任务控制系统的关键技术

2015-12-23薛双双葛小青

计算机工程与设计 2015年2期
关键词:任务调度功能模块模板

薛双双,陈 俊,李 宇,葛小青

(1.中国科学院 遥感与数字地球研究所,北京100094;2.中国科学院大学,北京100049)

0 引 言

任务控制系统作为遥感卫星地面系统的管理中枢[1],根据任务需求组织并调用系统内的资源,使全系统形成松耦合的有机整体,高效完成任务[2]。在任务控制系统设计中,需要充分考虑所需处理的各种任务类型的处理需求,设计规范合理的控制逻辑,以提高地面系统的运行效率。

目前,卫星地面系统的任务控制系统主要有两条设计思路:①专用化路线,即只针对某一颗卫星或一系列卫星进行开发设计。这种系统针对性强,运行效率高,但是通用性差,如果需要处理新的卫星任务,需要重新开发系统。②通用化路线,即在一个系统中管理多星多任务。这种方式功能完善,通用性强,但是开发周期较长。随着卫星数量和种类的增多,卫星地面系统需要处理的卫星数据种类和任务类型也相应增加,走通用化路线,研究适用于多星多任务的任务控制系统更具有应用前景。随着卫星遥感数据量的飞速增长,越来越多的卫星地面系统采用分布式系统架构,以提升卫星地面系统处理能力,因此任务控制系统相应地也需要适应分布式系统架构的特点。

本文在分析卫星地面系统业务处理特点的基础上,设计了可扩展性和通用性良好的任务控制系统。该系统适用于多星多任务的处理,具有良好的平台可移植性,不仅能够应用于集中式卫星地面系统架构,也能够应用于分布式的卫星地面系统架构。

1 卫星地面系统任务处理特点

面向多星多任务的卫星地面系统的任务处理主要有以下3个特点:

(1)任务处理流程多样:卫星地面系统需要处理的任务有数据的接收、记录、传输、存档、发布和产品处理等。不同类型的任务根据其实际需求采用不同的处理流程,根据实际的工程经验,本文将任务的处理流程归为4类:

顺序执行:根据任务参数按顺序执行各个功能模块直至任务结束,即一个功能模块执行完毕调用下一个功能模块,大部分遥感卫星数据处理任务都属于这类情况;

断续执行:任务执行到某个功能模块后,需要等待系统用户对任务进行人工干预或者等待其它条件满足之后才能调用下一个功能模块,这类任务常见于遥感产品深加工处理任务,例如监督分类任务等;

并发执行:需要并行发起多个功能模块,例如数据记录任务;

拆分执行:任务执行到某个功能模块后,需要拆分为多个子任务继续执行,常见于原始数据处理任务。

(2)任务状态动态调整:卫星地面系统处理的任务是动态变化的,在任务执行过程中,用户不仅需要实时查看任务状态,同时还需要对任务进行相应的人工干预,如放弃、重做等,以便用户在任务无效或出错的情况下,能及时调整任务处理流向。

(3)资源合理调度:随着遥感技术的发展,卫星地面系统需要处理的数据量日益增加,对数据获取效率的要求也越来越高。为了满足日益增长的业务量的需求,采用分布式架构是遥感卫星地面系统的一个发展趋势,因此系统需要采用合理的资源调度策略,动态地给任务分配处理节点,实现系统高效运行。

2 任务控制系统

2.1 系统实现目标

根据对卫星地面系统任务处理特点的分析,任务控制系统需要实现以下目标:

(1)及时获取用户需求:当用户提交新的处理任务时,系统能够及时获取任务,并对其进行相应的处理。

(2)及时处理人工干预信息:从用户需求的角度出发,用户不仅需要实时查看任务的处理状态,也需要对任务进行暂停、放弃、修改或者删除等操作。因此任务控制系统需要实时处理来自用户的人工干预信息,并及时更新任务的处理流向。

(3)任务处理流程可配置:为了适应多星多任务的处理,需要实现任务处理流程的可配置,能够根据不同类型任务特点对任务处理流程进行修改。

(4)任务调度策略可配置:在实际运行过程中,系统资源、业务需求、用户行为、管理策略等因素常常会发生变化,因此任务调度的策略也常常需要根据实际运行情况做出相应的调整。

(5)信息管理:不管是集中式系统还是分布式系统,系统的信息管理直接影响系统运行的可靠性。

2.2 系统结构

为实现上述目标,本文设计如图1所示的系统结构。

图1 任务控制系统结构

系统分为人机交互单元、任务获取单元、人工干预处理单元、任务调度单元和任务执行单元,各单元的功能如下:

人机交互单元:为用户提供任务提交、任务状态监测和人工干预等人工交互接口;

任务获取单元:获取人机交互单元的任务单信息,解析信息,并将解析的任务单信息注入任务池中,供后续单元使用;

人工干预处理单元:获取人机交互单元的人工干预信息,解析信息,对任务做相应的处理,并将处理结果更新至任务池中,供用户查看;

任务调度单元:从任务池中读取待执行的任务单列表,并根据配置文件设置的调度策略调用一个新任务进入任务执行单元;

任务执行单元:执行任务调度单元反馈的任务,调用相应的业务系统资源,并根据各业务系统反馈的处理信息,及时更新任务池中的信息。

2.3 关键设计

本文设计的任务控制系统需要解决几个关键性的问题:

任务执行单元中,如何使任务流程动态可配置,以适用不同的任务需求;

任务调度单元中,如何实现任务调度策略的可配置;

系统运行过程中,如何安全有效地管理系统信息;

如何扩展到分布式卫星地面系统架构中;

针对这几个问题,本文引入任务流程模板实现任务流程的动态配置,采用消息中间件和数据库相结合的信息管理机制,利用配置文件实现系统配置信息的灵活变更,使用expect脚本语言完成系统远程调度。

2.3.1 任务流程模板

为了使任务的处理流程动态可配置,在系统中引入任务流程模板。该模板定义任务的处理流程,以及调用的功能模块、调用顺序以及其它任务参数。当任务流程有变动或者有新的任务类型加入,只需要修改或增加任务流程模板,系统自动调用更新的任务流程模板。

XML (extensible markup language)可 扩 展 标 记 语言[3],是一种结构性的标记语言,不仅可以用来标记数据,还允许用户自定义数据结构,因其使用灵活、程序读取简便的特点已经被广泛应用于数据交换领域,本文采用XML定义任务流程模板。

一个典型的任务流程模板如图2所示。根据任务单中的“任务类型”匹配相应的任务流程模板:根据系统调度策略,获取 “优先级”和 “是否立即启动”属性对任务进行排序;

“任务状态”用于标识该任务目前的运行状态,主要有Waiting、Running、Error、Abort和Accomplished;

“起始执行模块名称”表示该类型任务调用的第一个功能模块名,根据该名称在任务模块列表下匹配相应的模块,根据模块的 “下一个执行模块名称”属性匹配下一个功能模块节点,直至模块名为 “Ending”;

“模块状态”用来表示该模块的执行状态和执行方式,如:

Waiting——等待执行,上一个模块执行完毕即可调用执行,如顺序执行方式中模块状态均为Waiting;

WaitingOper——执行之前需要等待人工处理反馈结果,需要采用断续执行方式的任务中使用该状态;

图2 任务流程模板

当一个任务的处理流程有变化时,修改相应的任务流程模板,就能实现任务流程的改变;当系统需要处理新的任务类型时,只需要加入新的任务流程模板,而不用去修改系统程序。采用任务流程模板后,对任务流程和任务类型的管理更加方便和灵活。

2.3.2 信息管理机制

不管是集中式还是分布式卫星地面系统架构,如何安全有效地在模块之间或平台之间传递信息是一个管理系统能否高效运行的关键。从图1中可以看出,任务控制系统需要处理两类信息:一类是持久性信息,保存至任务池,例如任务的运行状态信息;另一类是非持久性信息,是系统间通信信息,例如业务系统与任务调度单元之间的通信信息。

目前,可用于卫星地面系统信息管理的技术有如下几种:工作流技术、数据库和消息中间件。基于数据库的稳定安全、易于查找的特性,用数据库来管理任务池中的持久性信息。消息中间件[4]基于消息队列实现应用间的信息交换,通信方式灵活稳定,用消息中间件来管理系统中的非持久性信息。本文的任务控制系统采用数据库和消息中间件相结合的方式管理系统中不同类型的信息。

(1)数据库设计[5]:数据库用于管理任务池,方便用户查看任务池中的任务信息。数据库中需要保存任务单信息、任务执行状态信息等。人机交互单元根据用户选择的任务单号查找相应任务的信息,并反馈给用户,具体设计参见表1。其中,TaskOrder表用于存储用户提交的任务单信息,属于静态信息,便于用户查看任务单信息;Task表用于存储任务池中的任务信息,随着任务处理而变化,标识任务的生命周期状态。

表1 数据库设计

“Order_ID”:任务单号是主键,任务和任务单号是一一对应的关系;

“Submit_Time”:任务提交的时间;

“Start_Time”和”End_Time”:记录一个任务开始执行的时间和结束执行的时间;

“Comment”注释,用户可自行添加对任务的注释说明;

“Task_State”:任务执行状态,任务执行过程中实时更新该域;

“Current_Process”:当前执行模块,任务执行过程中实时更新该域;

“Redo_Process”:用来保存任务的重做点,当用户选择重做任务,根据该域的值选择对应的Process开始重做任务;

Xml域:TaskOrder中的Xml域用于保存下载的任务流程模板信息;Task中的Xml域在保存任务流程模板信息的同时,任务执行过程中实时更新模块运行状态;

(2)消息中间件:本文选用开源消息中间件rabbit-MQ,其核心组件是交换器和消息队列,核心概念是绑定[6]。

交换器 (Exchange),它接受消息和路由信息,然后将消息发送给消息队列,它有3种常见的类型:

直接式 (direct),该类型精确匹配消息的绑定关键字,将消息路由到零个或者多个队列中;

广播式 (fanout),不论消息的绑定关键字,将消息路由到所有与该交换器绑定的队列中;

主题式 (topic),通过绑定关键字的模式匹配,将消息路由到被绑定的队列中,该类型支持经典的发布/订阅消息传输模型。

消息队列 (Queue),它是一个具名缓冲区,它代表一组消费者保存消息;

绑定,是RabbitMQ 核心概念,即将一个特定的Exchange和一个特定的Queue 绑定起来,每个发送给Exchange的消息都有一个叫做RoutingKey 的关键字,通过RoutingKey绑定Exchange和Queue。

根据实际需要设定不同的Exchange和RoutingKey,信息发送者将信息发送到特定消息队列Queue中,信息接收者根据约定到特定的队列中获得信息,实现信息的分流。

消息中间件用来管理任务控制系统中的非持久性信息,该类信息主要为系统间通信信息,包括功能模块反馈给任务执行单元的信息、人机交互单元发送的任务单信息和人工干预信息。各类信息格式设计及MQ 消息队列参数设置间见表2。

通过Exchange_Name和RoutingKey的不同设置,将3类信息路由到不同的消息队列中,针对3类信息设计不同的消费者,不同的信息可根据需要自定义自己的信息格式,消费者按照约定的格式去解析信息。任务执行单元负责解析功能模块信息,该信息用来指导任务执行单元对任务的处理流向;人工干预单元负责解析人工干预信息,并对任务参数做相应的处理,最后将处理结果更新至任务池中;新任务获取单元负责解析任务单信息,解析后注入数据库供任务调度单元使用。

2.3.3 配置信息管理

为了实现系统的灵活配置,本系统引入Spring框架技术。Spring可以通过配置文件将简单的组件配置,组合成为复杂的应用[7]。在采用Spring框架技术实现系统松耦合的基础上,本文利用Spring配置文件实现了系统调度算法的灵活配置和分布式应用中配置信息的管理。

(1)调度算法配置信息

采用Spring框架,可以实现任务调度策略的灵活配置,调度算法的灵活更换,多个算法可以按照指定顺序组合嵌套使用,并由配置文件定义策略组件的调用关系[8]。如图3所示,该配置信息表示选用 “myStrartegy”调度策略,该策略中从Algorithm1 算法类开始进行计算,并将Algorithm1的输出作为Algorithm2的输入再次进行计算,依次类推,实现不同调度算法的嵌套使用。

表2 消息中间件的使用

图3 任务调度策略的配置信息

可根据实际需要定义多个采用不同算法嵌套的myStrategy类,并在TaskScheduler中指定具体采用的myStrategy方法,从而实现调度算法的灵活更换和添加,以适应不同的调度需求。

(2)分布式应用配置信息

对于分布式卫星地面系统,如何分配任务使任务节点负载均衡是关键[9],本系统通过配置文件实现任务控制系统对分布式卫星地面系统的管理,其配置信息参如图4所示,该配置信息表示任务类型Type1 可用的服务器有ip1和ip2,对于集中式系统每个任务类型只有一个可用服务器,并且每个任务类型的可用服务器节点相同;对于分布式系统,根据系统部署的实际情况配置相应的ip信息,其中workload是根据服务器性能确定的工作负载值,host、user、password是登录服务器所需要的信息,cpu、hard-Disk、memory分别用于判断服务器CPU、硬盘空间以及内存占用率是否超过阈值,设定合适的阈值以使服务器工作在最佳状态。

基于上述的配置信息,提出一种任务分配策略,算法描述如下:

假设cost(i)表示将下一个任务分配到第i个节点的成本

该任务分配策略综合考虑各服务器的配置水平和任务需要消耗的系统资源量,工程实现简单。当对服务器配置进行升级或任务流程进行更改后,只需要修改配置信息中相应的权重值即可实现算法的重用。通过配置文件实现对任务调度策略的灵活变更和任务部署平台的管理,当系统部署有变化或者调度策略需要变更时,只需要修改相应的配置信息就能实现任务控制系统的复用。

2.3.4 expect语言

为了使任务控制系统既能适用于集中式系统架构也能使用于分布式系统架构,采用Expect脚本语言实现系统的远程调用功能。Expect脚本语言可以模拟人工互动的过程,使用一种自动的方式控制,比如SSH、FTP等,能很好地解决访问控制系统中的远程调用问题。Expect基本的命令如下[10]:

spawn命令激活一个Linux程序来进行交互式的运行;

图4 配置信息

send命令向进程发送字符串;

expect命令等待进程的某些字符串。

以一个java程序为例,在Linux系统上远程调用的expect脚本语言如图5所示。

图5 Expect脚本语言

该脚本以IP地址、用户名、密码和可执行程序路径及输入参数文件路径作为输入参数,实现自动的远程登录并在登录成功后调用相应的可执行程序。用不同语言编写的功能模块,只用修改相应的执行语句,不再受开发语言的约束。同时,由于Expect不仅支持Linux平台也支持Windows平台,因此任务控制系统不再受业务系统部署平台的限制,可以同时管理Linux和Windows平台上的业务系统。

3 实验与分析

本文设计的任务控制系统已成功应用于中科院多个卫星地面系统中,以两个典型的工程应用为例进行结果分析。

(1)Landsat-8卫星数据处理系统

该系统采用集中式系统架构,任务控制系统、业务系统以及数据库均部署在一台Linux服务器上,任务控制系统负责管理Landsat-8数据处理任务,包括编目任务,0级至4级数据产品任务等。截止2014年3月,已先后处理了10042景Landsat-8数据,数据处理量达到16144GB[11]。任务控制系统性能稳定,单景数据的4级产品平均处理时间为12分钟,满足数据处理效率的需求。

(2)喀什分中心综合数据处理与服务系统

该系统采用分布式系统架构,任务控制系统、各个业务系统以及数据库部署在不同的Linux服务器上,业务处理系统包括产品处理、编目处理、深加工处理以及环境资源监测等多个系统,以Landsat系列卫星数据、MODIS卫星数据以及我国资源卫星数据为数据源。在该系统中,任务控制系统根据任务类型动态分配服务器资源。根据项目需求及项目部署情况,为任务控制系统添加任务流程模板,修改分布式应用配置信息,在不修改源代码的基础上成功应用于分布式卫星地面系统架构中。

本文设计的任务控制系统能够适用于不同需求的卫星地面系统,能够快速加入对不同卫星的不同类型任务的控制,具有良好的通用性和可扩展性。

4 结束语

任务控制系统是遥感卫星地面系统的业务管理中枢,本文设计的任务控制系统具有良好的可扩展性和通用性,适用于多星多任务的处理,具有良好的平台可移植性,既能应用于集中式系统架构中,也适用于分布式系统架构。基于本文设计的任务控制系统目前已成功运用于多个工程实践中,系统的通用性和可扩展性的设计为系统的部署和应用提供了很多有利条件,新类型任务能够快速在系统中调度执行,提高了系统建设速度的同时,也大大降低了系统开发和维护成本。

[1]WANG Rui,LI Xiaohui,ZHU Jiajia,et al.The business model and flow design of the ground operational management system of remote sensing satellite[J].Remote Sensing Information,2010,25 (2):53-58 (in Chinese). [王瑞,李晓辉,朱家佳,等.遥感卫星地面站业务运行管理系统模型和流程设计方法 [J].遥感信息,2010,25 (2):53-58.]

[2]ZHU Xiaojie,XU Jing,LIU Hua.On application of workflow technology in satellite ground system [J].Spacecraft Engineering,2011,20 (1):114-117 (in Chinese).[朱小杰,徐京,刘华.工作流技术在卫星地面系统的应用分析与设计[J].航天器工程,2011,20 (1):114-117.]

[3]DING Yuechao,ZHANG Tao.Practical course on XML[M].Beijing:Peking University Press,2006:2-20 (in Chinese).[丁跃潮,张涛.XML实用教程 [M].北京:北京大学出版社,2006:2-20.]

[4]MA Quanshui.The application and implementation of messageoriented middleware in data interchange[D].Shanghai:East China Normal University,2011:3-9 (in Chinese).[马全水.消息中间件在数据交换中的应用与实现 [D].上海:华东师范大学,2011:3-9.]

[5]LI Jingyan.Design techniques of database [J].Journal of Weinan Teachers University,2007,22 (5):63-65 (in Chinese).[李静燕.数据库设计技巧 [J].渭南师范学院学报,2007,22 (5):63-65.]

[6]Rabbitmq [DB/OL]. [2014-01-20].http://www.rabbitmq.com/tutorials/tutorial-one-python.html.

[7]CHEN Xionghua,LIN Kaixiong.Spring3.X real enterprise application development[M].Beijing:Publishing House of Electronics Industry,2012:3-12(in Chinese).[陈 雄 华,林 开 雄.Spring3.X 企业应用开发实战[M].北京:电子工业出版社,2012:3-12.]

[8]XU Lulu,CHEN Jun,FENG Zhongkui,et al.Configurable method for task scheduling [J].Remote Sensing Information,2012,27 (6):35-38 (in Chinese). [徐露露,陈俊,冯钟葵,等.一种实现任务调度策略可配置的方法 [J].遥感信息,2012,27 (6):35-38.]

[9]LIANG Gen,GUO Xiaoxue,QIN Yong.Research of loadbalancing of distributed system based on fair scheduling algorithm [J].Computer Engineering and Design,2008,29 (6):1362-1363 (in Chinese).[梁根,郭小雪,秦勇.基于公平调度算法的分布式系统负载均衡研究 [J].计算机工程与设计,2008,29 (6):1362-1363.]

[10]Expect[DB/OL].[2013-12-15].http://www.nist.gov/el/msid/expect.cfm.

[11]Open spatial data sharing project RAD [DB/OL].[2014-03-28].http://ids.ceode.ac.cn/(in Chinese).[对地观测数据共享计划[DB/OL].[2014-03-28].http://ids.ceode.ac.cn/.]

猜你喜欢

任务调度功能模块模板
铝模板在高层建筑施工中的应用
铝模板在高层建筑施工中的应用
基于改进NSGA-Ⅱ算法的协同制造任务调度研究
基于时间负载均衡蚁群算法的云任务调度优化
基于ASP.NET标准的采购管理系统研究
输电线路附着物测算系统测算功能模块的研究
M市石油装备公服平台网站主要功能模块设计与实现
铝模板在高层建筑施工中的应用
云计算环境中任务调度策略
云计算中基于进化算法的任务调度策略