薛雙雙,陳 俊,李 宇,葛小青
(1.中國(guó)科學(xué)院 遙感與數(shù)字地球研究所,北京100094;2.中國(guó)科學(xué)院大學(xué),北京100049)
任務(wù)控制系統(tǒng)作為遙感衛(wèi)星地面系統(tǒng)的管理中樞[1],根據(jù)任務(wù)需求組織并調(diào)用系統(tǒng)內(nèi)的資源,使全系統(tǒng)形成松耦合的有機(jī)整體,高效完成任務(wù)[2]。在任務(wù)控制系統(tǒng)設(shè)計(jì)中,需要充分考慮所需處理的各種任務(wù)類型的處理需求,設(shè)計(jì)規(guī)范合理的控制邏輯,以提高地面系統(tǒng)的運(yùn)行效率。
目前,衛(wèi)星地面系統(tǒng)的任務(wù)控制系統(tǒng)主要有兩條設(shè)計(jì)思路:①專用化路線,即只針對(duì)某一顆衛(wèi)星或一系列衛(wèi)星進(jìn)行開(kāi)發(fā)設(shè)計(jì)。這種系統(tǒng)針對(duì)性強(qiáng),運(yùn)行效率高,但是通用性差,如果需要處理新的衛(wèi)星任務(wù),需要重新開(kāi)發(fā)系統(tǒng)。②通用化路線,即在一個(gè)系統(tǒng)中管理多星多任務(wù)。這種方式功能完善,通用性強(qiáng),但是開(kāi)發(fā)周期較長(zhǎng)。隨著衛(wèi)星數(shù)量和種類的增多,衛(wèi)星地面系統(tǒng)需要處理的衛(wèi)星數(shù)據(jù)種類和任務(wù)類型也相應(yīng)增加,走通用化路線,研究適用于多星多任務(wù)的任務(wù)控制系統(tǒng)更具有應(yīng)用前景。隨著衛(wèi)星遙感數(shù)據(jù)量的飛速增長(zhǎng),越來(lái)越多的衛(wèi)星地面系統(tǒng)采用分布式系統(tǒng)架構(gòu),以提升衛(wèi)星地面系統(tǒng)處理能力,因此任務(wù)控制系統(tǒng)相應(yīng)地也需要適應(yīng)分布式系統(tǒng)架構(gòu)的特點(diǎn)。
本文在分析衛(wèi)星地面系統(tǒng)業(yè)務(wù)處理特點(diǎn)的基礎(chǔ)上,設(shè)計(jì)了可擴(kuò)展性和通用性良好的任務(wù)控制系統(tǒng)。該系統(tǒng)適用于多星多任務(wù)的處理,具有良好的平臺(tái)可移植性,不僅能夠應(yīng)用于集中式衛(wèi)星地面系統(tǒng)架構(gòu),也能夠應(yīng)用于分布式的衛(wèi)星地面系統(tǒng)架構(gòu)。
面向多星多任務(wù)的衛(wèi)星地面系統(tǒng)的任務(wù)處理主要有以下3個(gè)特點(diǎn):
(1)任務(wù)處理流程多樣:衛(wèi)星地面系統(tǒng)需要處理的任務(wù)有數(shù)據(jù)的接收、記錄、傳輸、存檔、發(fā)布和產(chǎn)品處理等。不同類型的任務(wù)根據(jù)其實(shí)際需求采用不同的處理流程,根據(jù)實(shí)際的工程經(jīng)驗(yàn),本文將任務(wù)的處理流程歸為4類:
順序執(zhí)行:根據(jù)任務(wù)參數(shù)按順序執(zhí)行各個(gè)功能模塊直至任務(wù)結(jié)束,即一個(gè)功能模塊執(zhí)行完畢調(diào)用下一個(gè)功能模塊,大部分遙感衛(wèi)星數(shù)據(jù)處理任務(wù)都屬于這類情況;
斷續(xù)執(zhí)行:任務(wù)執(zhí)行到某個(gè)功能模塊后,需要等待系統(tǒng)用戶對(duì)任務(wù)進(jìn)行人工干預(yù)或者等待其它條件滿足之后才能調(diào)用下一個(gè)功能模塊,這類任務(wù)常見(jiàn)于遙感產(chǎn)品深加工處理任務(wù),例如監(jiān)督分類任務(wù)等;
并發(fā)執(zhí)行:需要并行發(fā)起多個(gè)功能模塊,例如數(shù)據(jù)記錄任務(wù);
拆分執(zhí)行:任務(wù)執(zhí)行到某個(gè)功能模塊后,需要拆分為多個(gè)子任務(wù)繼續(xù)執(zhí)行,常見(jiàn)于原始數(shù)據(jù)處理任務(wù)。
(2)任務(wù)狀態(tài)動(dòng)態(tài)調(diào)整:衛(wèi)星地面系統(tǒng)處理的任務(wù)是動(dòng)態(tài)變化的,在任務(wù)執(zhí)行過(guò)程中,用戶不僅需要實(shí)時(shí)查看任務(wù)狀態(tài),同時(shí)還需要對(duì)任務(wù)進(jìn)行相應(yīng)的人工干預(yù),如放棄、重做等,以便用戶在任務(wù)無(wú)效或出錯(cuò)的情況下,能及時(shí)調(diào)整任務(wù)處理流向。
(3)資源合理調(diào)度:隨著遙感技術(shù)的發(fā)展,衛(wèi)星地面系統(tǒng)需要處理的數(shù)據(jù)量日益增加,對(duì)數(shù)據(jù)獲取效率的要求也越來(lái)越高。為了滿足日益增長(zhǎng)的業(yè)務(wù)量的需求,采用分布式架構(gòu)是遙感衛(wèi)星地面系統(tǒng)的一個(gè)發(fā)展趨勢(shì),因此系統(tǒng)需要采用合理的資源調(diào)度策略,動(dòng)態(tài)地給任務(wù)分配處理節(jié)點(diǎn),實(shí)現(xiàn)系統(tǒng)高效運(yùn)行。
根據(jù)對(duì)衛(wèi)星地面系統(tǒng)任務(wù)處理特點(diǎn)的分析,任務(wù)控制系統(tǒng)需要實(shí)現(xiàn)以下目標(biāo):
(1)及時(shí)獲取用戶需求:當(dāng)用戶提交新的處理任務(wù)時(shí),系統(tǒng)能夠及時(shí)獲取任務(wù),并對(duì)其進(jìn)行相應(yīng)的處理。
(2)及時(shí)處理人工干預(yù)信息:從用戶需求的角度出發(fā),用戶不僅需要實(shí)時(shí)查看任務(wù)的處理狀態(tài),也需要對(duì)任務(wù)進(jìn)行暫停、放棄、修改或者刪除等操作。因此任務(wù)控制系統(tǒng)需要實(shí)時(shí)處理來(lái)自用戶的人工干預(yù)信息,并及時(shí)更新任務(wù)的處理流向。
(3)任務(wù)處理流程可配置:為了適應(yīng)多星多任務(wù)的處理,需要實(shí)現(xiàn)任務(wù)處理流程的可配置,能夠根據(jù)不同類型任務(wù)特點(diǎn)對(duì)任務(wù)處理流程進(jìn)行修改。
(4)任務(wù)調(diào)度策略可配置:在實(shí)際運(yùn)行過(guò)程中,系統(tǒng)資源、業(yè)務(wù)需求、用戶行為、管理策略等因素常常會(huì)發(fā)生變化,因此任務(wù)調(diào)度的策略也常常需要根據(jù)實(shí)際運(yùn)行情況做出相應(yīng)的調(diào)整。
(5)信息管理:不管是集中式系統(tǒng)還是分布式系統(tǒng),系統(tǒng)的信息管理直接影響系統(tǒng)運(yùn)行的可靠性。
為實(shí)現(xiàn)上述目標(biāo),本文設(shè)計(jì)如圖1所示的系統(tǒng)結(jié)構(gòu)。
圖1 任務(wù)控制系統(tǒng)結(jié)構(gòu)
系統(tǒng)分為人機(jī)交互單元、任務(wù)獲取單元、人工干預(yù)處理單元、任務(wù)調(diào)度單元和任務(wù)執(zhí)行單元,各單元的功能如下:
人機(jī)交互單元:為用戶提供任務(wù)提交、任務(wù)狀態(tài)監(jiān)測(cè)和人工干預(yù)等人工交互接口;
任務(wù)獲取單元:獲取人機(jī)交互單元的任務(wù)單信息,解析信息,并將解析的任務(wù)單信息注入任務(wù)池中,供后續(xù)單元使用;
人工干預(yù)處理單元:獲取人機(jī)交互單元的人工干預(yù)信息,解析信息,對(duì)任務(wù)做相應(yīng)的處理,并將處理結(jié)果更新至任務(wù)池中,供用戶查看;
任務(wù)調(diào)度單元:從任務(wù)池中讀取待執(zhí)行的任務(wù)單列表,并根據(jù)配置文件設(shè)置的調(diào)度策略調(diào)用一個(gè)新任務(wù)進(jìn)入任務(wù)執(zhí)行單元;
任務(wù)執(zhí)行單元:執(zhí)行任務(wù)調(diào)度單元反饋的任務(wù),調(diào)用相應(yīng)的業(yè)務(wù)系統(tǒng)資源,并根據(jù)各業(yè)務(wù)系統(tǒng)反饋的處理信息,及時(shí)更新任務(wù)池中的信息。
本文設(shè)計(jì)的任務(wù)控制系統(tǒng)需要解決幾個(gè)關(guān)鍵性的問(wèn)題:
任務(wù)執(zhí)行單元中,如何使任務(wù)流程動(dòng)態(tài)可配置,以適用不同的任務(wù)需求;
任務(wù)調(diào)度單元中,如何實(shí)現(xiàn)任務(wù)調(diào)度策略的可配置;
系統(tǒng)運(yùn)行過(guò)程中,如何安全有效地管理系統(tǒng)信息;
如何擴(kuò)展到分布式衛(wèi)星地面系統(tǒng)架構(gòu)中;
針對(duì)這幾個(gè)問(wèn)題,本文引入任務(wù)流程模板實(shí)現(xiàn)任務(wù)流程的動(dòng)態(tài)配置,采用消息中間件和數(shù)據(jù)庫(kù)相結(jié)合的信息管理機(jī)制,利用配置文件實(shí)現(xiàn)系統(tǒng)配置信息的靈活變更,使用expect腳本語(yǔ)言完成系統(tǒng)遠(yuǎn)程調(diào)度。
2.3.1 任務(wù)流程模板
為了使任務(wù)的處理流程動(dòng)態(tài)可配置,在系統(tǒng)中引入任務(wù)流程模板。該模板定義任務(wù)的處理流程,以及調(diào)用的功能模塊、調(diào)用順序以及其它任務(wù)參數(shù)。當(dāng)任務(wù)流程有變動(dòng)或者有新的任務(wù)類型加入,只需要修改或增加任務(wù)流程模板,系統(tǒng)自動(dòng)調(diào)用更新的任務(wù)流程模板。
XML (extensible markup language)可 擴(kuò) 展 標(biāo) 記 語(yǔ)言[3],是一種結(jié)構(gòu)性的標(biāo)記語(yǔ)言,不僅可以用來(lái)標(biāo)記數(shù)據(jù),還允許用戶自定義數(shù)據(jù)結(jié)構(gòu),因其使用靈活、程序讀取簡(jiǎn)便的特點(diǎn)已經(jīng)被廣泛應(yīng)用于數(shù)據(jù)交換領(lǐng)域,本文采用XML定義任務(wù)流程模板。
一個(gè)典型的任務(wù)流程模板如圖2所示。根據(jù)任務(wù)單中的“任務(wù)類型”匹配相應(yīng)的任務(wù)流程模板:根據(jù)系統(tǒng)調(diào)度策略,獲取 “優(yōu)先級(jí)”和 “是否立即啟動(dòng)”屬性對(duì)任務(wù)進(jìn)行排序;
“任務(wù)狀態(tài)”用于標(biāo)識(shí)該任務(wù)目前的運(yùn)行狀態(tài),主要有Waiting、Running、Error、Abort和Accomplished;
“起始執(zhí)行模塊名稱”表示該類型任務(wù)調(diào)用的第一個(gè)功能模塊名,根據(jù)該名稱在任務(wù)模塊列表下匹配相應(yīng)的模塊,根據(jù)模塊的 “下一個(gè)執(zhí)行模塊名稱”屬性匹配下一個(gè)功能模塊節(jié)點(diǎn),直至模塊名為 “Ending”;
“模塊狀態(tài)”用來(lái)表示該模塊的執(zhí)行狀態(tài)和執(zhí)行方式,如:
Waiting——等待執(zhí)行,上一個(gè)模塊執(zhí)行完畢即可調(diào)用執(zhí)行,如順序執(zhí)行方式中模塊狀態(tài)均為Waiting;
WaitingOper——執(zhí)行之前需要等待人工處理反饋結(jié)果,需要采用斷續(xù)執(zhí)行方式的任務(wù)中使用該狀態(tài);
圖2 任務(wù)流程模板
當(dāng)一個(gè)任務(wù)的處理流程有變化時(shí),修改相應(yīng)的任務(wù)流程模板,就能實(shí)現(xiàn)任務(wù)流程的改變;當(dāng)系統(tǒng)需要處理新的任務(wù)類型時(shí),只需要加入新的任務(wù)流程模板,而不用去修改系統(tǒng)程序。采用任務(wù)流程模板后,對(duì)任務(wù)流程和任務(wù)類型的管理更加方便和靈活。
2.3.2 信息管理機(jī)制
不管是集中式還是分布式衛(wèi)星地面系統(tǒng)架構(gòu),如何安全有效地在模塊之間或平臺(tái)之間傳遞信息是一個(gè)管理系統(tǒng)能否高效運(yùn)行的關(guān)鍵。從圖1中可以看出,任務(wù)控制系統(tǒng)需要處理兩類信息:一類是持久性信息,保存至任務(wù)池,例如任務(wù)的運(yùn)行狀態(tài)信息;另一類是非持久性信息,是系統(tǒng)間通信信息,例如業(yè)務(wù)系統(tǒng)與任務(wù)調(diào)度單元之間的通信信息。
目前,可用于衛(wèi)星地面系統(tǒng)信息管理的技術(shù)有如下幾種:工作流技術(shù)、數(shù)據(jù)庫(kù)和消息中間件?;跀?shù)據(jù)庫(kù)的穩(wěn)定安全、易于查找的特性,用數(shù)據(jù)庫(kù)來(lái)管理任務(wù)池中的持久性信息。消息中間件[4]基于消息隊(duì)列實(shí)現(xiàn)應(yīng)用間的信息交換,通信方式靈活穩(wěn)定,用消息中間件來(lái)管理系統(tǒng)中的非持久性信息。本文的任務(wù)控制系統(tǒng)采用數(shù)據(jù)庫(kù)和消息中間件相結(jié)合的方式管理系統(tǒng)中不同類型的信息。
(1)數(shù)據(jù)庫(kù)設(shè)計(jì)[5]:數(shù)據(jù)庫(kù)用于管理任務(wù)池,方便用戶查看任務(wù)池中的任務(wù)信息。數(shù)據(jù)庫(kù)中需要保存任務(wù)單信息、任務(wù)執(zhí)行狀態(tài)信息等。人機(jī)交互單元根據(jù)用戶選擇的任務(wù)單號(hào)查找相應(yīng)任務(wù)的信息,并反饋給用戶,具體設(shè)計(jì)參見(jiàn)表1。其中,TaskOrder表用于存儲(chǔ)用戶提交的任務(wù)單信息,屬于靜態(tài)信息,便于用戶查看任務(wù)單信息;Task表用于存儲(chǔ)任務(wù)池中的任務(wù)信息,隨著任務(wù)處理而變化,標(biāo)識(shí)任務(wù)的生命周期狀態(tài)。
表1 數(shù)據(jù)庫(kù)設(shè)計(jì)
“Order_ID”:任務(wù)單號(hào)是主鍵,任務(wù)和任務(wù)單號(hào)是一一對(duì)應(yīng)的關(guān)系;
“Submit_Time”:任務(wù)提交的時(shí)間;
“Start_Time”和”End_Time”:記錄一個(gè)任務(wù)開(kāi)始執(zhí)行的時(shí)間和結(jié)束執(zhí)行的時(shí)間;
“Comment”注釋,用戶可自行添加對(duì)任務(wù)的注釋說(shuō)明;
“Task_State”:任務(wù)執(zhí)行狀態(tài),任務(wù)執(zhí)行過(guò)程中實(shí)時(shí)更新該域;
“Current_Process”:當(dāng)前執(zhí)行模塊,任務(wù)執(zhí)行過(guò)程中實(shí)時(shí)更新該域;
“Redo_Process”:用來(lái)保存任務(wù)的重做點(diǎn),當(dāng)用戶選擇重做任務(wù),根據(jù)該域的值選擇對(duì)應(yīng)的Process開(kāi)始重做任務(wù);
Xml域:TaskOrder中的Xml域用于保存下載的任務(wù)流程模板信息;Task中的Xml域在保存任務(wù)流程模板信息的同時(shí),任務(wù)執(zhí)行過(guò)程中實(shí)時(shí)更新模塊運(yùn)行狀態(tài);
(2)消息中間件:本文選用開(kāi)源消息中間件rabbit-MQ,其核心組件是交換器和消息隊(duì)列,核心概念是綁定[6]。
交換器 (Exchange),它接受消息和路由信息,然后將消息發(fā)送給消息隊(duì)列,它有3種常見(jiàn)的類型:
直接式 (direct),該類型精確匹配消息的綁定關(guān)鍵字,將消息路由到零個(gè)或者多個(gè)隊(duì)列中;
廣播式 (fanout),不論消息的綁定關(guān)鍵字,將消息路由到所有與該交換器綁定的隊(duì)列中;
主題式 (topic),通過(guò)綁定關(guān)鍵字的模式匹配,將消息路由到被綁定的隊(duì)列中,該類型支持經(jīng)典的發(fā)布/訂閱消息傳輸模型。
消息隊(duì)列 (Queue),它是一個(gè)具名緩沖區(qū),它代表一組消費(fèi)者保存消息;
綁定,是RabbitMQ 核心概念,即將一個(gè)特定的Exchange和一個(gè)特定的Queue 綁定起來(lái),每個(gè)發(fā)送給Exchange的消息都有一個(gè)叫做RoutingKey 的關(guān)鍵字,通過(guò)RoutingKey綁定Exchange和Queue。
根據(jù)實(shí)際需要設(shè)定不同的Exchange和RoutingKey,信息發(fā)送者將信息發(fā)送到特定消息隊(duì)列Queue中,信息接收者根據(jù)約定到特定的隊(duì)列中獲得信息,實(shí)現(xiàn)信息的分流。
消息中間件用來(lái)管理任務(wù)控制系統(tǒng)中的非持久性信息,該類信息主要為系統(tǒng)間通信信息,包括功能模塊反饋給任務(wù)執(zhí)行單元的信息、人機(jī)交互單元發(fā)送的任務(wù)單信息和人工干預(yù)信息。各類信息格式設(shè)計(jì)及MQ 消息隊(duì)列參數(shù)設(shè)置間見(jiàn)表2。
通過(guò)Exchange_Name和RoutingKey的不同設(shè)置,將3類信息路由到不同的消息隊(duì)列中,針對(duì)3類信息設(shè)計(jì)不同的消費(fèi)者,不同的信息可根據(jù)需要自定義自己的信息格式,消費(fèi)者按照約定的格式去解析信息。任務(wù)執(zhí)行單元負(fù)責(zé)解析功能模塊信息,該信息用來(lái)指導(dǎo)任務(wù)執(zhí)行單元對(duì)任務(wù)的處理流向;人工干預(yù)單元負(fù)責(zé)解析人工干預(yù)信息,并對(duì)任務(wù)參數(shù)做相應(yīng)的處理,最后將處理結(jié)果更新至任務(wù)池中;新任務(wù)獲取單元負(fù)責(zé)解析任務(wù)單信息,解析后注入數(shù)據(jù)庫(kù)供任務(wù)調(diào)度單元使用。
2.3.3 配置信息管理
為了實(shí)現(xiàn)系統(tǒng)的靈活配置,本系統(tǒng)引入Spring框架技術(shù)。Spring可以通過(guò)配置文件將簡(jiǎn)單的組件配置,組合成為復(fù)雜的應(yīng)用[7]。在采用Spring框架技術(shù)實(shí)現(xiàn)系統(tǒng)松耦合的基礎(chǔ)上,本文利用Spring配置文件實(shí)現(xiàn)了系統(tǒng)調(diào)度算法的靈活配置和分布式應(yīng)用中配置信息的管理。
(1)調(diào)度算法配置信息
采用Spring框架,可以實(shí)現(xiàn)任務(wù)調(diào)度策略的靈活配置,調(diào)度算法的靈活更換,多個(gè)算法可以按照指定順序組合嵌套使用,并由配置文件定義策略組件的調(diào)用關(guān)系[8]。如圖3所示,該配置信息表示選用 “myStrartegy”調(diào)度策略,該策略中從Algorithm1 算法類開(kāi)始進(jìn)行計(jì)算,并將Algorithm1的輸出作為Algorithm2的輸入再次進(jìn)行計(jì)算,依次類推,實(shí)現(xiàn)不同調(diào)度算法的嵌套使用。
表2 消息中間件的使用
圖3 任務(wù)調(diào)度策略的配置信息
可根據(jù)實(shí)際需要定義多個(gè)采用不同算法嵌套的myStrategy類,并在TaskScheduler中指定具體采用的myStrategy方法,從而實(shí)現(xiàn)調(diào)度算法的靈活更換和添加,以適應(yīng)不同的調(diào)度需求。
(2)分布式應(yīng)用配置信息
對(duì)于分布式衛(wèi)星地面系統(tǒng),如何分配任務(wù)使任務(wù)節(jié)點(diǎn)負(fù)載均衡是關(guān)鍵[9],本系統(tǒng)通過(guò)配置文件實(shí)現(xiàn)任務(wù)控制系統(tǒng)對(duì)分布式衛(wèi)星地面系統(tǒng)的管理,其配置信息參如圖4所示,該配置信息表示任務(wù)類型Type1 可用的服務(wù)器有ip1和ip2,對(duì)于集中式系統(tǒng)每個(gè)任務(wù)類型只有一個(gè)可用服務(wù)器,并且每個(gè)任務(wù)類型的可用服務(wù)器節(jié)點(diǎn)相同;對(duì)于分布式系統(tǒng),根據(jù)系統(tǒng)部署的實(shí)際情況配置相應(yīng)的ip信息,其中workload是根據(jù)服務(wù)器性能確定的工作負(fù)載值,host、user、password是登錄服務(wù)器所需要的信息,cpu、hard-Disk、memory分別用于判斷服務(wù)器CPU、硬盤空間以及內(nèi)存占用率是否超過(guò)閾值,設(shè)定合適的閾值以使服務(wù)器工作在最佳狀態(tài)。
基于上述的配置信息,提出一種任務(wù)分配策略,算法描述如下:
假設(shè)cost(i)表示將下一個(gè)任務(wù)分配到第i個(gè)節(jié)點(diǎn)的成本
該任務(wù)分配策略綜合考慮各服務(wù)器的配置水平和任務(wù)需要消耗的系統(tǒng)資源量,工程實(shí)現(xiàn)簡(jiǎn)單。當(dāng)對(duì)服務(wù)器配置進(jìn)行升級(jí)或任務(wù)流程進(jìn)行更改后,只需要修改配置信息中相應(yīng)的權(quán)重值即可實(shí)現(xiàn)算法的重用。通過(guò)配置文件實(shí)現(xiàn)對(duì)任務(wù)調(diào)度策略的靈活變更和任務(wù)部署平臺(tái)的管理,當(dāng)系統(tǒng)部署有變化或者調(diào)度策略需要變更時(shí),只需要修改相應(yīng)的配置信息就能實(shí)現(xiàn)任務(wù)控制系統(tǒng)的復(fù)用。
2.3.4 expect語(yǔ)言
為了使任務(wù)控制系統(tǒng)既能適用于集中式系統(tǒng)架構(gòu)也能使用于分布式系統(tǒng)架構(gòu),采用Expect腳本語(yǔ)言實(shí)現(xiàn)系統(tǒng)的遠(yuǎn)程調(diào)用功能。Expect腳本語(yǔ)言可以模擬人工互動(dòng)的過(guò)程,使用一種自動(dòng)的方式控制,比如SSH、FTP等,能很好地解決訪問(wèn)控制系統(tǒng)中的遠(yuǎn)程調(diào)用問(wèn)題。Expect基本的命令如下[10]:
spawn命令激活一個(gè)Linux程序來(lái)進(jìn)行交互式的運(yùn)行;
圖4 配置信息
send命令向進(jìn)程發(fā)送字符串;
expect命令等待進(jìn)程的某些字符串。
以一個(gè)java程序?yàn)槔?,在Linux系統(tǒng)上遠(yuǎn)程調(diào)用的expect腳本語(yǔ)言如圖5所示。
圖5 Expect腳本語(yǔ)言
該腳本以IP地址、用戶名、密碼和可執(zhí)行程序路徑及輸入?yún)?shù)文件路徑作為輸入?yún)?shù),實(shí)現(xiàn)自動(dòng)的遠(yuǎn)程登錄并在登錄成功后調(diào)用相應(yīng)的可執(zhí)行程序。用不同語(yǔ)言編寫的功能模塊,只用修改相應(yīng)的執(zhí)行語(yǔ)句,不再受開(kāi)發(fā)語(yǔ)言的約束。同時(shí),由于Expect不僅支持Linux平臺(tái)也支持Windows平臺(tái),因此任務(wù)控制系統(tǒng)不再受業(yè)務(wù)系統(tǒng)部署平臺(tái)的限制,可以同時(shí)管理Linux和Windows平臺(tái)上的業(yè)務(wù)系統(tǒng)。
本文設(shè)計(jì)的任務(wù)控制系統(tǒng)已成功應(yīng)用于中科院多個(gè)衛(wèi)星地面系統(tǒng)中,以兩個(gè)典型的工程應(yīng)用為例進(jìn)行結(jié)果分析。
(1)Landsat-8衛(wèi)星數(shù)據(jù)處理系統(tǒng)
該系統(tǒng)采用集中式系統(tǒng)架構(gòu),任務(wù)控制系統(tǒng)、業(yè)務(wù)系統(tǒng)以及數(shù)據(jù)庫(kù)均部署在一臺(tái)Linux服務(wù)器上,任務(wù)控制系統(tǒng)負(fù)責(zé)管理Landsat-8數(shù)據(jù)處理任務(wù),包括編目任務(wù),0級(jí)至4級(jí)數(shù)據(jù)產(chǎn)品任務(wù)等。截止2014年3月,已先后處理了10042景Landsat-8數(shù)據(jù),數(shù)據(jù)處理量達(dá)到16144GB[11]。任務(wù)控制系統(tǒng)性能穩(wěn)定,單景數(shù)據(jù)的4級(jí)產(chǎn)品平均處理時(shí)間為12分鐘,滿足數(shù)據(jù)處理效率的需求。
(2)喀什分中心綜合數(shù)據(jù)處理與服務(wù)系統(tǒng)
該系統(tǒng)采用分布式系統(tǒng)架構(gòu),任務(wù)控制系統(tǒng)、各個(gè)業(yè)務(wù)系統(tǒng)以及數(shù)據(jù)庫(kù)部署在不同的Linux服務(wù)器上,業(yè)務(wù)處理系統(tǒng)包括產(chǎn)品處理、編目處理、深加工處理以及環(huán)境資源監(jiān)測(cè)等多個(gè)系統(tǒng),以Landsat系列衛(wèi)星數(shù)據(jù)、MODIS衛(wèi)星數(shù)據(jù)以及我國(guó)資源衛(wèi)星數(shù)據(jù)為數(shù)據(jù)源。在該系統(tǒng)中,任務(wù)控制系統(tǒng)根據(jù)任務(wù)類型動(dòng)態(tài)分配服務(wù)器資源。根據(jù)項(xiàng)目需求及項(xiàng)目部署情況,為任務(wù)控制系統(tǒng)添加任務(wù)流程模板,修改分布式應(yīng)用配置信息,在不修改源代碼的基礎(chǔ)上成功應(yīng)用于分布式衛(wèi)星地面系統(tǒng)架構(gòu)中。
本文設(shè)計(jì)的任務(wù)控制系統(tǒng)能夠適用于不同需求的衛(wèi)星地面系統(tǒng),能夠快速加入對(duì)不同衛(wèi)星的不同類型任務(wù)的控制,具有良好的通用性和可擴(kuò)展性。
任務(wù)控制系統(tǒng)是遙感衛(wèi)星地面系統(tǒng)的業(yè)務(wù)管理中樞,本文設(shè)計(jì)的任務(wù)控制系統(tǒng)具有良好的可擴(kuò)展性和通用性,適用于多星多任務(wù)的處理,具有良好的平臺(tái)可移植性,既能應(yīng)用于集中式系統(tǒng)架構(gòu)中,也適用于分布式系統(tǒng)架構(gòu)?;诒疚脑O(shè)計(jì)的任務(wù)控制系統(tǒng)目前已成功運(yùn)用于多個(gè)工程實(shí)踐中,系統(tǒng)的通用性和可擴(kuò)展性的設(shè)計(jì)為系統(tǒng)的部署和應(yīng)用提供了很多有利條件,新類型任務(wù)能夠快速在系統(tǒng)中調(diào)度執(zhí)行,提高了系統(tǒng)建設(shè)速度的同時(shí),也大大降低了系統(tǒng)開(kāi)發(fā)和維護(hù)成本。
[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). [王瑞,李曉輝,朱家佳,等.遙感衛(wèi)星地面站業(yè)務(wù)運(yùn)行管理系統(tǒng)模型和流程設(shè)計(jì)方法 [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).[朱小杰,徐京,劉華.工作流技術(shù)在衛(wèi)星地面系統(tǒng)的應(yīng)用分析與設(shè)計(jì)[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實(shí)用教程 [M].北京:北京大學(xué)出版社,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).[馬全水.消息中間件在數(shù)據(jù)交換中的應(yīng)用與實(shí)現(xiàn) [D].上海:華東師范大學(xué),2011:3-9.]
[5]LI Jingyan.Design techniques of database [J].Journal of Weinan Teachers University,2007,22 (5):63-65 (in Chinese).[李靜燕.數(shù)據(jù)庫(kù)設(shè)計(jì)技巧 [J].渭南師范學(xué)院學(xué)報(bào),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).[陳 雄 華,林 開(kāi) 雄.Spring3.X 企業(yè)應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn)[M].北京:電子工業(yè)出版社,2012:3-12.]
[8]XU Lulu,CHEN Jun,F(xiàn)ENG Zhongkui,et al.Configurable method for task scheduling [J].Remote Sensing Information,2012,27 (6):35-38 (in Chinese). [徐露露,陳俊,馮鐘葵,等.一種實(shí)現(xiàn)任務(wù)調(diào)度策略可配置的方法 [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).[梁根,郭小雪,秦勇.基于公平調(diào)度算法的分布式系統(tǒng)負(fù)載均衡研究 [J].計(jì)算機(jī)工程與設(shè)計(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).[對(duì)地觀測(cè)數(shù)據(jù)共享計(jì)劃[DB/OL].[2014-03-28].http://ids.ceode.ac.cn/.]