薛雙雙,陳 俊,李 宇,葛小青
(1.中國科學院 遙感與數字地球研究所,北京100094;2.中國科學院大學,北京100049)
任務控制系統作為遙感衛星地面系統的管理中樞[1],根據任務需求組織并調用系統內的資源,使全系統形成松耦合的有機整體,高效完成任務[2]。在任務控制系統設計中,需要充分考慮所需處理的各種任務類型的處理需求,設計規范合理的控制邏輯,以提高地面系統的運行效率。
目前,衛星地面系統的任務控制系統主要有兩條設計思路:①專用化路線,即只針對某一顆衛星或一系列衛星進行開發設計。這種系統針對性強,運行效率高,但是通用性差,如果需要處理新的衛星任務,需要重新開發系統。②通用化路線,即在一個系統中管理多星多任務。這種方式功能完善,通用性強,但是開發周期較長。隨著衛星數量和種類的增多,衛星地面系統需要處理的衛星數據種類和任務類型也相應增加,走通用化路線,研究適用于多星多任務的任務控制系統更具有應用前景。隨著衛星遙感數據量的飛速增長,越來越多的衛星地面系統采用分布式系統架構,以提升衛星地面系統處理能力,因此任務控制系統相應地也需要適應分布式系統架構的特點。
本文在分析衛星地面系統業務處理特點的基礎上,設計了可擴展性和通用性良好的任務控制系統。該系統適用于多星多任務的處理,具有良好的平臺可移植性,不僅能夠應用于集中式衛星地面系統架構,也能夠應用于分布式的衛星地面系統架構。
面向多星多任務的衛星地面系統的任務處理主要有以下3個特點:
(1)任務處理流程多樣:衛星地面系統需要處理的任務有數據的接收、記錄、傳輸、存檔、發布和產品處理等。不同類型的任務根據其實際需求采用不同的處理流程,根據實際的工程經驗,本文將任務的處理流程歸為4類:
順序執行:根據任務參數按順序執行各個功能模塊直至任務結束,即一個功能模塊執行完畢調用下一個功能模塊,大部分遙感衛星數據處理任務都屬于這類情況;
斷續執行:任務執行到某個功能模塊后,需要等待系統用戶對任務進行人工干預或者等待其它條件滿足之后才能調用下一個功能模塊,這類任務常見于遙感產品深加工處理任務,例如監督分類任務等;
并發執行:需要并行發起多個功能模塊,例如數據記錄任務;
拆分執行:任務執行到某個功能模塊后,需要拆分為多個子任務繼續執行,常見于原始數據處理任務。
(2)任務狀態動態調整:衛星地面系統處理的任務是動態變化的,在任務執行過程中,用戶不僅需要實時查看任務狀態,同時還需要對任務進行相應的人工干預,如放棄、重做等,以便用戶在任務無效或出錯的情況下,能及時調整任務處理流向。
(3)資源合理調度:隨著遙感技術的發展,衛星地面系統需要處理的數據量日益增加,對數據獲取效率的要求也越來越高。為了滿足日益增長的業務量的需求,采用分布式架構是遙感衛星地面系統的一個發展趨勢,因此系統需要采用合理的資源調度策略,動態地給任務分配處理節點,實現系統高效運行。
根據對衛星地面系統任務處理特點的分析,任務控制系統需要實現以下目標:
(1)及時獲取用戶需求:當用戶提交新的處理任務時,系統能夠及時獲取任務,并對其進行相應的處理。
(2)及時處理人工干預信息:從用戶需求的角度出發,用戶不僅需要實時查看任務的處理狀態,也需要對任務進行暫停、放棄、修改或者刪除等操作。因此任務控制系統需要實時處理來自用戶的人工干預信息,并及時更新任務的處理流向。
(3)任務處理流程可配置:為了適應多星多任務的處理,需要實現任務處理流程的可配置,能夠根據不同類型任務特點對任務處理流程進行修改。
(4)任務調度策略可配置:在實際運行過程中,系統資源、業務需求、用戶行為、管理策略等因素常常會發生變化,因此任務調度的策略也常常需要根據實際運行情況做出相應的調整。
(5)信息管理:不管是集中式系統還是分布式系統,系統的信息管理直接影響系統運行的可靠性。
為實現上述目標,本文設計如圖1所示的系統結構。
圖1 任務控制系統結構
系統分為人機交互單元、任務獲取單元、人工干預處理單元、任務調度單元和任務執行單元,各單元的功能如下:
人機交互單元:為用戶提供任務提交、任務狀態監測和人工干預等人工交互接口;
任務獲取單元:獲取人機交互單元的任務單信息,解析信息,并將解析的任務單信息注入任務池中,供后續單元使用;
人工干預處理單元:獲取人機交互單元的人工干預信息,解析信息,對任務做相應的處理,并將處理結果更新至任務池中,供用戶查看;
任務調度單元:從任務池中讀取待執行的任務單列表,并根據配置文件設置的調度策略調用一個新任務進入任務執行單元;
任務執行單元:執行任務調度單元反饋的任務,調用相應的業務系統資源,并根據各業務系統反饋的處理信息,及時更新任務池中的信息。
本文設計的任務控制系統需要解決幾個關鍵性的問題:
任務執行單元中,如何使任務流程動態可配置,以適用不同的任務需求;
任務調度單元中,如何實現任務調度策略的可配置;
系統運行過程中,如何安全有效地管理系統信息;
如何擴展到分布式衛星地面系統架構中;
針對這幾個問題,本文引入任務流程模板實現任務流程的動態配置,采用消息中間件和數據庫相結合的信息管理機制,利用配置文件實現系統配置信息的靈活變更,使用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平臺上的業務系統。
本文設計的任務控制系統已成功應用于中科院多個衛星地面系統中,以兩個典型的工程應用為例進行結果分析。
(1)Landsat-8衛星數據處理系統
該系統采用集中式系統架構,任務控制系統、業務系統以及數據庫均部署在一臺Linux服務器上,任務控制系統負責管理Landsat-8數據處理任務,包括編目任務,0級至4級數據產品任務等。截止2014年3月,已先后處理了10042景Landsat-8數據,數據處理量達到16144GB[11]。任務控制系統性能穩定,單景數據的4級產品平均處理時間為12分鐘,滿足數據處理效率的需求。
(2)喀什分中心綜合數據處理與服務系統
該系統采用分布式系統架構,任務控制系統、各個業務系統以及數據庫部署在不同的Linux服務器上,業務處理系統包括產品處理、編目處理、深加工處理以及環境資源監測等多個系統,以Landsat系列衛星數據、MODIS衛星數據以及我國資源衛星數據為數據源。在該系統中,任務控制系統根據任務類型動態分配服務器資源。根據項目需求及項目部署情況,為任務控制系統添加任務流程模板,修改分布式應用配置信息,在不修改源代碼的基礎上成功應用于分布式衛星地面系統架構中。
本文設計的任務控制系統能夠適用于不同需求的衛星地面系統,能夠快速加入對不同衛星的不同類型任務的控制,具有良好的通用性和可擴展性。
任務控制系統是遙感衛星地面系統的業務管理中樞,本文設計的任務控制系統具有良好的可擴展性和通用性,適用于多星多任務的處理,具有良好的平臺可移植性,既能應用于集中式系統架構中,也適用于分布式系統架構?;诒疚脑O計的任務控制系統目前已成功運用于多個工程實踐中,系統的通用性和可擴展性的設計為系統的部署和應用提供了很多有利條件,新類型任務能夠快速在系統中調度執行,提高了系統建設速度的同時,也大大降低了系統開發和維護成本。
[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/.]