侯 玉,吳旭升,馮 源,陳 搏
(1. 海軍工程大學 電氣工程學院,武漢 430033;2. 海軍駐某廠軍事代表室,遼寧大連 116005)
兩種適用于嵌入式艦船電力虛擬模擬訓練系統軟件架構的構建與比較分析
侯 玉1,2,吳旭升1,馮 源1,陳 搏2
(1. 海軍工程大學 電氣工程學院,武漢 430033;2. 海軍駐某廠軍事代表室,遼寧大連 116005)
針對嵌入式艦船電力虛擬模擬訓練系統的特點,提出混合架構和標準Web架構等兩種適用于嵌入式艦船電力虛擬模擬訓練系統的軟件架構。對兩種軟件架構進行了對比分析,對依據兩種軟件架構開發的模擬訓練軟件進行了測試比較。
嵌入式 艦船電力 虛擬模擬訓練
艦船電力系統由于艦船空間緊張,各種資源有限,難以放置類似陸用的大型模擬訓練系統,只能利用實船裝備開發嵌入式模擬訓練系統,采用實船實際裝備的硬件系統,在執行任務間隙通過后臺運行。這就決定了嵌入式艦船電力虛擬模擬訓練系統的硬件水平是常規計算機的水平,難以獲得高性能的硬件支持,只能在軟件方面進行優化設計,以解決船舶電力虛擬模擬訓練系統中的相關需求[1-3]。
艦船電力虛擬模擬訓練系統總體上需要滿足以下要求:訓練場景真實性、訓練過程實時性、訓練結果可追蹤評估、訓練內容和角色可管理控制。傳統陸用大型模擬訓練系統能夠獲取高性能硬件支持,不僅運行主機性能優越,還能有專用的仿真機提供支撐,因此在軟件設計方面為追求開發過程的便捷性,往往采用單一語言和簡單架構進行軟件開發。但是嵌入式艦船電力虛擬模擬訓練系統立足于實船裝備的硬件條件下,采用單一語言和簡單架構將難以滿足訓練場景真實性,訓練過程實時性的要求。為解決該問題,本文對模擬訓練系統的架構進行研究,提出兩種基于前后端分離的分布式電力虛擬模擬訓練架構構建方法,并對兩種架構進行定量比較,對這兩種架構開發的軟件進行了測試分析[4-8]。
本文提出兩種基于前后端分離的分布式電力虛擬模擬訓練架構,一種是基于Java + Qt+ Cpp+ OpenDDS + 關系數據庫 + (html + javascript +CSS) + WebGL的混合架構(見圖1);另一種是基于Rust + 關系數據庫 + (html + javascript + CSS)+ WebGL的標準web架構(見圖2)。

圖1 基于Java + Qt/ Cpp + OpenDDS + 關系數據庫 + (html + javascript + CSS) + WebGL的混合架構
首先在客戶端和服務器的架構上,兩種架構都是瀏覽器/服務器(Brower/Server,B/S)的分布式體系架構,這是傳統的客戶端/服務器(Client/Server,C/S)分布式體系架構的一種變體,是一種標準的瘦客戶端。這種B/S架構的瘦客戶端大多數情況下僅提供對服務器端的數據進行解析和顯示,大多數計算任務均由服務器來處理,因此瘦客戶端/服務器架構容易維護而且容易擴展,并且跨平臺也很容易。本文主要對后端服務器設計方法、前端客戶端設計、數據分發、系統測試、系統部署5個方面進行比較。
基于該混合架構構建的虛擬模擬訓練軟件,將仿真模型分為兩部分,一部分是實時化仿真模型,包括后端電力系統實時化仿真模型、聲音仿真模型、操控指令仿真模型、評估仿真模型等,均基于Qt框架構建,由于Qt基于Cpp語言,而作為可編譯為本地機器代碼的Cpp,其運行不需要虛擬機做支撐,由此編譯得到的代碼運行性能將比基于Java的代碼運行性能要高。在實時數據分發方面由于上述后端模型基于Cpp實現,因此采用同樣基于Cpp的OpenDDS框架實現了相應的實時數據分發服務,不僅滿足數據實時分發需求,還能實現與Cpp的無縫對接。另一部分是持久化模型,該模型對于實時性要求不高,因此采用java的各項技術(包括spring和hibernate)進行構建,通過restful進行數據分發。而基于java進行構建優勢在于,其是分布式架構構建的最主要語言,基于java實現的web及數據庫中間件等技術最為先進及完備。
標準Web架構則與混合架構完全不同,僅僅采用了單一的Rust語言及相應的各項技術進行構建。這是因為,同Cpp一樣,Rust也是可編譯為本地機器代碼的語言,運行時不需要虛擬機做支撐,基于Rust所編譯的機器代碼運行效率經測試與基于Cpp的代碼運行效率相當(某些測試甚至超過Cpp)。并且,目前Rust已有相應的各種框架和庫,可提供對web服務、數據持久化以及序列化/反序列化等功能的支撐。因此,綜合考慮,可基于Rust進行標準web架構的構建。

圖2 基于Rust + 關系數據庫 + (html + javascript + CSS) + WebGL的標準web架構
兩種種架構對于二維GUI界面的架構方法基本是一致的,不同之處僅僅體現在具體的模板語言上。混合架構基于java的兩種架構采用了jsp模板,以更好的能和后端的各種技術進行融合。而標準web架構中的二維前端采用了更為通用的基于javascript的模板,以便更徹底的實現前后端的分離。對于三維場景的構建,兩種架構采用了基于WebGL的Three.js,從開發效率、測試手段等方面看,Three.js具有簡單、小巧、WebGL與Html結合性較好等優勢,且經測試,基于Three.js構建的虛擬仿真三維場景完全可流暢運行。
混合架構采用了restful/http以及實時數據分發服務(Data Distribution Service,DDS)相結合的方式,其中restful/http主要用于前后端持久化數據、靜態資源之間的數據交互,而DDS主要用于電力系統實時仿真數據、聲音出發、操控指令、評估等實時性要求較高的數據交互。
標準Web架構則直接基于Restful/Http服務進行所有實時與非實時的數據交互。雖然標準Web架構如此做在性能上稍微有所犧牲,但由于統一數據交互接口,便于構建、測試與部署,且經測試,在船舶電力虛擬模擬訓練這樣的小型分布式系統應用環境下,其性能損失較小,可以忽略不計。
混合架構為了在各方面達到最優,采用了多種開發語言及技術進行構建。然而,此種做法加大了測試的難度。首先,每種開發語言、每種技術均有自己的測試手段,但由于系統的模塊由不同的技術實現,因此,在進行模塊內部的單元測試和集成測試時較為容易,但若需要進行跨模塊集成測試,則問題的查找和定位將非常困難。
標準Web架構由于簡化了系統結構,其后端構建技術僅基于Rust,而Rust本身的測試可以統一歸于Cargo工具下進行管理,因此相較于前兩種架構,標準架構的測試方法將更加簡單高效。
綜上所述,標準Web架構優于混合架構。各個架構的優缺點可歸結為表1所示。
本文對上述兩種架構開發的軟件的頁面訪問性能和數據分發性能進行了測試,并對其進行了對比分析。
將主要采用siege進行負載測試,采用webbench進行壓力測試
1) 頁面訪問性能測試
此項測試旨在測試該兩種架構下,模擬訓練服務器所提供的Web頁面訪問的能力。測試方法如下:
第一步:按照正常啟動方法,分別在各自的運行環境中啟動相應的模擬訓練服務器軟件。
第二步:選取典型的模擬訓練軟件頁面,采用以下方法分別進行單個典型頁面測試、所有典型頁面綜合測試。
第三步:利用siege工具,分別模擬單個客戶端、10個客戶端并行、50個客戶端并行、100個客戶端并行訪問上述頁面(組),進行5次測試,得到相應的負載測試數據。
第四步:利用WebBench工具,逐步增加并行模擬客戶端的數量,直至500個并行模擬客戶端,訪問一個典型頁面,持續足夠長時間進行多次測試,得到相應的壓力測試數據。
2)數據分發性能測試。
此項測試旨在測試兩種架構下,模擬訓練服務器所提供的數據分發的能力。測試方法如下:
第一步:按照正常啟動方法,在運行環境中啟動相應的模擬訓練服務器軟件。
第二步:選取典型的模擬訓練分發數據類型,選取的測試數據為仿真電力系統實時數據包以及典型的指令實時數據包。
第三步:利用siege工具,分別模擬單個客戶端、10個客戶端并行、50個客戶端并行、100個客戶端并行訪問相應典型數據,對restful數據分發方法進行5次測試,得到相應的測試數據。
第四步:分別同時啟動單個客戶端、10個客戶端、50個客戶端、100個客戶端訪問相應典型數據,對OpenDDS數據分發方法進行測試,得到相應的測試數據。
由表2可知,對于頁面訪問性能,標準架構的性能要優于混合架構,這得以于基于Rust的模擬訓練服務器運行的高效性。然而,混合架構的數據分發性能遠遠好于Rust標準架構,原因在于,Restful數據分發服務本質上仍然基于HTTP通信協議,而HTTP通信協議傳輸的數據是字符流,因此,HTTP通信數據幀長度較OpenDDS要長很多。其次,由于B/S架構下的Web服務器的通信機制,其響應的延遲要比DDS通信延遲本身要大很多。總體來看,混合架構以及標準Web架構均滿足船舶電力模擬訓練系統實際應用的需求。
針對嵌入式艦船電力虛擬模擬訓練系統的特點,提出兩種適用于嵌入式艦船電力虛擬模擬訓練系統的軟件架構。對兩種軟件架構進行了對比分析,對依據兩種軟件架構開發的模擬訓練軟件進行了測試比較。從對比分析看,標準Web架構要優于混合架構。從測試結果看,兩種服務架構都能在嵌入式艦船電力虛擬模擬訓練系統硬件條件下滿足訓練過程真實性、實時性的要求。

表2 兩種架構總體性能測試結果
[1]林平. 艦艇嵌入式模擬訓練技術的應用及發展[J].軍事運籌與系統工程, 2008, 22(4): 27-31.
[2]金炳哲, 龔喜文. 船舶電力系統模擬訓練系統的設計與實現[J]. 上海船舶運輸科學研究所學報, 2016,39(1): 49-53.
[3]謝輝, 卜樂平, 馮源. 船舶電力模擬訓練評估系統的設計和開發[J]. 艦船科學技術, 2013, 35(11):45-48.
[4]McGrath Dennis, Hill Doug, Hunt Amy. IC2020:Embedded Simulation for Next Generation Incident Command Software[C]. Huntsville AL: Proceedings of the 2006 Huntsville Simulation Conference, 2006.
[5]商亞新, 王學奎. 基于VC++的模擬器訓練評估軟件的設計與實現[J]. 計算機與數字工程, 2013, 9:1525-1528.
[6]徐遠新, 林平, 徐海剛. 基于 HLA 的艦載嵌入式模擬訓練系統設計方案[J]. 軍事運籌與系統工程,2012, 26(2): 51-54.
[7]李爽. 設計模式在實船訓練系統軟件設計中的應用[J]. 上海船舶運輸科學研究所學報, 2011, 34(1):47-51.
[8]常天慶, 張波, 王欽釗. 嵌入式訓練技術的應用與發展[J]. 裝甲兵工程學院學報, 2008, 22(6): 1-6.
Construction and Comparative Analysis of Two Software Architectures for Embedded Virtual Simulation Training of Marine Power System
Hou Yu1,2, Wu Xusheng1, Feng Yuan1, Chen Bo2
(1. College of Electric Engineering, Naval Engineering University, Wuhan 430033, China; 2. Naval Representative Office,Dalian 116005, Liaoning, China.)
According to the features of the embedded virtual simulated training for marine power system,two software architectures, including hybrid architecture and standard Web architecture, are proposed for embedded virtual simulated training of marine power system. Two software architectures are compared and analyzed in this paper, and the simulation training software based on two software architectures is tested and compared.
embedded system, marine power system, virtual simulated training
TM743
A
1003-4862(2017)10-0027-05
2017-08-18
侯玉(1983-),男,碩士,工程師。研究方向:電力系統。E-mail:j-y-f2005@qq.com