劉軍 劉海波 王萬金
(中國人民解放軍91550 部隊 遼寧省大連市 116023)
實時數(shù)據(jù)處理系統(tǒng)主要用于對武器試驗的光測、雷測和遙測等實時數(shù)據(jù)進行處理[1],并將處理結(jié)果傳輸?shù)街革@、安控等其它子系統(tǒng),從而為指揮員決策提供有效的數(shù)據(jù)支撐。隨著新型武器系統(tǒng)的不斷發(fā)展、新型測控裝備的研制建設和新型試驗模式的探索發(fā)展,武器試驗呈現(xiàn)出任務類型和任務數(shù)量劇增、多種任務交叉并行開展的特點,這些都對實時數(shù)據(jù)處理系統(tǒng)的數(shù)據(jù)處理能力和狀態(tài)轉(zhuǎn)換速度提出了新的要求。
為適應多種任務交叉進行的試驗模式,現(xiàn)有的實時數(shù)據(jù)處理系統(tǒng)主要依據(jù)高內(nèi)聚、低耦合的軟件設計原則劃分為多個功能相異的子系統(tǒng),并通過修改軟件配置文件的方式實現(xiàn)對系統(tǒng)的平滑擴充和改造,從而達到在不同任務間進行狀態(tài)切換的目的[2]。然而,隨著武器試驗任務類型和任務數(shù)量的增加變化,軟件系統(tǒng)配置文件的種類和數(shù)量成倍增加;同時受到飛行試驗任務技術(shù)狀態(tài)變更的影響,軟件系統(tǒng)配置文件的版本迭代次數(shù)也相應增加,這些都極大增加了實時數(shù)據(jù)處理系統(tǒng)配置文件的管理和使用難度,從而降低了軟件系統(tǒng)改造維護的效率和質(zhì)量。此外,受到實時數(shù)據(jù)處理系統(tǒng)配置文件格式特殊性的影響,傳統(tǒng)的單一依托數(shù)據(jù)庫進行配置文件管理的方式靈活性差,且難以滿足使用者的個性化操作需求。
針對上述問題,本文設計了基于Docker的實時數(shù)據(jù)處理系統(tǒng)配置文件管理軟件,在提供良好的人機交互體驗的同時,依托數(shù)據(jù)庫對軟件配置文件進行高效管理,可有效提高實時數(shù)據(jù)處理系統(tǒng)的軟件改造維護效率。
實時數(shù)據(jù)處理系統(tǒng)配置文件管理軟件主要需求如下:
(1)實時數(shù)據(jù)處理子系統(tǒng)數(shù)據(jù)庫管理,主要包括在線創(chuàng)建和刪除針對該子系統(tǒng)的數(shù)據(jù)庫;
(2)實時數(shù)據(jù)處理系統(tǒng)數(shù)據(jù)表管理,主要包括在線創(chuàng)建基于特定配置文件格式的數(shù)據(jù)表和自定義數(shù)據(jù)表、刪除數(shù)據(jù)表以及復制數(shù)據(jù)表;
(3)實時數(shù)據(jù)處理系統(tǒng)軟件配置文件管理,主要包括在線導入配置文件至相應數(shù)據(jù)庫以及導出數(shù)據(jù)表為軟件系統(tǒng)直接可用的配置文件;
(4)實時數(shù)據(jù)處理系統(tǒng)數(shù)據(jù)表編輯,主要包括在線增加、修改以及刪除數(shù)據(jù)表數(shù)據(jù)。
根據(jù)實時數(shù)據(jù)處理系統(tǒng)軟件配置文件個性化管理功能需求,通過對數(shù)據(jù)庫、數(shù)據(jù)可視化[3]以及人機交互[4]進行研究,基于Docker的實時數(shù)據(jù)處理系統(tǒng)配置文件管理軟件設計[5]組成如圖1所示,主要包含三個模塊:文件處理模塊、數(shù)據(jù)處理模塊和系統(tǒng)處理模塊[6][7]。
圖1:實時數(shù)據(jù)處理系統(tǒng)配置文件管理軟件功能框圖
文件處理模塊:包括將基于txt、ini和xlsx格式的軟件配置文件導入相應的數(shù)據(jù)庫和將數(shù)據(jù)表導出為約定格式的軟件配置文件,主要實現(xiàn)對配置文件出入庫的靈活操作。
數(shù)據(jù)處理模塊:包括對已有數(shù)據(jù)表進行數(shù)據(jù)增加、修改和刪除等操作,主要實現(xiàn)對軟件配置文件對應數(shù)據(jù)表的自定義編輯。
系統(tǒng)處理模塊:包括創(chuàng)建實時數(shù)據(jù)處理子系統(tǒng)對應的數(shù)據(jù)庫、刪除數(shù)據(jù)庫、創(chuàng)建指定格式和自定義數(shù)據(jù)表、刪除數(shù)據(jù)表和復制數(shù)據(jù)表,主要實現(xiàn)對配置文件管理軟件底層數(shù)據(jù)庫和數(shù)據(jù)表的高效管理。
實時數(shù)據(jù)處理系統(tǒng)配置文件管理軟件采用MVC設計模式[8][9]將數(shù)據(jù)視圖和數(shù)據(jù)操作相分離,由三部分組成,包括:實時數(shù)據(jù)處理系統(tǒng)配置文件管理軟件客戶端、實時數(shù)據(jù)處理系統(tǒng)配置文件管理軟件控制端和基于Docker的數(shù)據(jù)庫服務端,其軟件組成結(jié)構(gòu)如圖2所示。
圖2:軟件系統(tǒng)組成結(jié)構(gòu)
實時數(shù)據(jù)處理系統(tǒng)配置文件管理軟件客戶端主要負責用戶與軟件系統(tǒng)間的人機交互,包括配置文件的數(shù)據(jù)可視化、配置文件的前端修改、數(shù)據(jù)庫和數(shù)據(jù)表的前端創(chuàng)建刪除復制等。
實時數(shù)據(jù)處理系統(tǒng)配置文件管理軟件控制端主要負責配置文件管理軟件客戶端和數(shù)據(jù)庫服務端的通信和數(shù)據(jù)綁定,包括將客戶端的請求提交至數(shù)據(jù)庫服務端、將數(shù)據(jù)庫服務端的數(shù)據(jù)更新推送至客戶端。
基于Docker的數(shù)據(jù)庫服務端主要負責數(shù)據(jù)庫的高可靠性和響應管理軟件控制端的操作提交,包括對數(shù)據(jù)庫進行冗余備份、執(zhí)行數(shù)據(jù)庫的創(chuàng)建刪除、數(shù)據(jù)表的創(chuàng)建刪除復制和數(shù)據(jù)的修改等。
實時數(shù)據(jù)處理系統(tǒng)配置文件管理軟件體系結(jié)構(gòu)按層次劃分,可分為表示層、業(yè)務邏輯層和服務層三個層次。具體層次結(jié)構(gòu)如圖3所示。
圖3:實時數(shù)據(jù)處理系統(tǒng)配置文件管理軟件層次結(jié)構(gòu)
表示層,主要負責將軟件配置文件以數(shù)據(jù)表的形式呈現(xiàn)給用戶,以實現(xiàn)數(shù)據(jù)可視化的目的。
業(yè)務邏輯層,主要負責軟件配置文件導入導出管理、軟件配置文件數(shù)據(jù)修改、數(shù)據(jù)庫和數(shù)據(jù)表管理以及系統(tǒng)日志管理,以達到響應用戶操作的目的。
服務層,主要負責提供基于Docker的高可用數(shù)據(jù)庫服務,以到達對軟件配置文件物理存儲、冗余備份和數(shù)據(jù)恢復的目的。
3.1.1 Windows系統(tǒng)配置
硬件配置為:CPU為4核、主頻3.60GHz;內(nèi)存為8GB;硬盤為1000GB;網(wǎng)絡接口為1000M。操作系統(tǒng)為:Windows7。軟件開發(fā)工具為:Qt 5.12.3。
3.1.2 Linux系統(tǒng)配置
硬件配置為:CPU為4核、主頻為3.60GHz;內(nèi)存為8GB;硬盤為800GB;網(wǎng)絡接口為1000M。操作系統(tǒng)為:CentOS7。軟件開發(fā)工具為:Docker 19.03.12;mysql 5.7。
實時數(shù)據(jù)處理系統(tǒng)配置文件管理軟件客戶端基于Qt進行軟件界面開發(fā),客戶端界面主要由頂部菜單欄、左側(cè)列表欄和中間編輯窗口三部分組成,軟件客戶端主界面如圖4所示。
圖4:配置文件管理軟件客戶端主界面
頂部菜單欄主要實現(xiàn)配置文件導入、導出,分系統(tǒng)數(shù)據(jù)庫創(chuàng)建、刪除,數(shù)據(jù)表創(chuàng)建、刪除,系統(tǒng)日志管理等快捷操作。
左側(cè)列表欄主要實現(xiàn)對數(shù)據(jù)庫及庫中數(shù)據(jù)表的分類展示,以便用戶快速檢索所需要的數(shù)據(jù)表并對數(shù)據(jù)表進行相關(guān)操作。方便起見,通過Qt下的樹形視圖類QTreeWidget來實現(xiàn)數(shù)據(jù)表的可視化展示以及不同數(shù)據(jù)庫和數(shù)據(jù)表之間的切換。為支持上述數(shù)據(jù)表的分類展示功能和對數(shù)據(jù)表的快速檢索功能,本文實現(xiàn)了一種基于多叉樹的文件索引結(jié)構(gòu),該索引結(jié)構(gòu)存放配置文件管理軟件控制端推送的數(shù)據(jù)庫和數(shù)據(jù)表名信息,具體詳情見圖5。
圖5:基于多叉樹的文件索引結(jié)構(gòu)示意圖
中間編輯窗口主要實現(xiàn)對配置文件的數(shù)據(jù)可視化展示、數(shù)據(jù)的增加修改刪除操作。
實時數(shù)據(jù)處理系統(tǒng)配置文件管理軟件控制端采用Qt自帶的數(shù)據(jù)庫操作類進行數(shù)據(jù)庫和數(shù)據(jù)表的創(chuàng)建刪除操作、數(shù)據(jù)的修改操作[10]以及數(shù)據(jù)庫服務端更新的實時響應,部分關(guān)鍵代碼如下:
Docker[11]是一個開源的應用容器引擎,讓開發(fā)者可以打包他們的應用以及依賴包或者環(huán)境到一個可移植的鏡像中,然后發(fā)布到任何流行的Linux或Windows操作系統(tǒng)的機器上,也可以實現(xiàn)虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。Docker具有更快速的應用交付和部署、更便捷的升級和擴縮容、更簡單的系統(tǒng)運維以及更高效的計算資源利用等優(yōu)勢[12][13]。
為充分利用計算資源并實現(xiàn)服務的高可靠,數(shù)據(jù)庫服務端以mysql:5.7版本為基礎數(shù)據(jù)庫服務軟件,通過Docker將其部署在Linux環(huán)境中,部分關(guān)鍵代碼如下:
在Qt開發(fā)平臺下,采用Qt的樹形視圖數(shù)據(jù)可視化和數(shù)據(jù)庫操作等技術(shù)實現(xiàn)了對實時數(shù)據(jù)處理分系統(tǒng)配置文件的分類存儲管理、可視化展示和數(shù)據(jù)處理。實踐結(jié)果表明,基于Docker的實時數(shù)據(jù)處理系統(tǒng)配置文件管理軟件可對軟件配置文件進行高效管理,為多任務交叉進行的武器試驗模式下實時數(shù)據(jù)處理系統(tǒng)軟件版本管理、升級改造等提供了有效的技術(shù)支持。