,,,
(1.海軍駐大連426廠軍代表室,遼寧 大連 116001;2.中國艦船研究設(shè)計(jì)中心,武漢 430064;3.海軍工程大學(xué) 電氣工程學(xué)院,武漢 430033)
隨著電力監(jiān)控系統(tǒng)在船舶中的引入,亟須建立船舶電力虛擬模擬訓(xùn)練系統(tǒng),對船員進(jìn)行相應(yīng)的培訓(xùn)輔導(dǎo),使其盡快掌握必要的基礎(chǔ)知識和實(shí)際的操作技能[1-5]。在大型船舶中,電力監(jiān)控系統(tǒng)也需要進(jìn)行多戰(zhàn)位設(shè)置,實(shí)現(xiàn)對系統(tǒng)的梯隊(duì)化管理,需要模擬訓(xùn)練系統(tǒng)提供多戰(zhàn)位協(xié)同訓(xùn)練功能。在多人協(xié)同交互的模擬訓(xùn)練場景中,為保證各訓(xùn)練部位信息顯示的一致性,信息的實(shí)時交互至關(guān)重要。受訓(xùn)人員需要在訓(xùn)練客戶端上,通過虛擬場景進(jìn)行各種模擬操作,如機(jī)組的啟動、合閘、并車、解列、停機(jī)等,需要與實(shí)時或非實(shí)時服務(wù)器等進(jìn)行數(shù)據(jù)交互。虛擬模擬訓(xùn)練系統(tǒng)不僅需要模擬與實(shí)船相同的電力系統(tǒng),提供電力系統(tǒng)實(shí)時仿真服務(wù),在需要時能夠?qū)崟r地對受訓(xùn)人員的操作進(jìn)行提示和反饋,而且需要提供仿真電力系統(tǒng)關(guān)鍵數(shù)據(jù)、施訓(xùn)人員和受訓(xùn)人員信息、受訓(xùn)人員訓(xùn)練時間、地點(diǎn)以及訓(xùn)練效果和考核結(jié)果等信息的存儲管理。以上數(shù)據(jù)的交互均需要考慮實(shí)時性。研究分布式虛擬模擬訓(xùn)練系統(tǒng)通信的實(shí)時性技術(shù),即研究虛擬模擬訓(xùn)練的實(shí)時數(shù)據(jù)分發(fā)方法,對于構(gòu)建一個可用性強(qiáng)的模擬訓(xùn)練系統(tǒng)十分必要?;谝陨闲枨?,提出一種基于Iron/Rust的船舶電力模擬訓(xùn)練系統(tǒng)RESTFUL服務(wù)方法,滿足船舶電力虛擬模擬訓(xùn)練系統(tǒng)對指令處理的實(shí)時性需求。
由于在電力模擬訓(xùn)練系統(tǒng)仿真服務(wù)器中,需要完成對船舶電力系統(tǒng)中包括發(fā)電機(jī)組、斷路器等各種設(shè)備在內(nèi)的虛擬呈現(xiàn),將整個系統(tǒng)虛擬化,在進(jìn)行模擬仿真時,虛擬化的設(shè)備需要以類的形式進(jìn)行運(yùn)行產(chǎn)生數(shù)據(jù)。用戶在通過客戶端進(jìn)行模擬訓(xùn)練時,訓(xùn)練人員的操作指令按照規(guī)定的通信協(xié)議通過艦載平臺網(wǎng)打包發(fā)送至系統(tǒng)服務(wù)器,服務(wù)器根據(jù)收到的操作指令結(jié)合設(shè)定的訓(xùn)練程序生成反饋數(shù)據(jù)。該數(shù)據(jù)需要按照相同的通訊協(xié)議通過平臺網(wǎng)發(fā)送至訓(xùn)練客戶端,更新訓(xùn)練客戶端的訓(xùn)練界面,在多戰(zhàn)位的協(xié)同訓(xùn)練過程中,可以保持各訓(xùn)練部位訓(xùn)練進(jìn)程的一致性,維持訓(xùn)練的協(xié)調(diào)持續(xù)進(jìn)行。服務(wù)器同時要將收到的客戶端操作指令進(jìn)行記錄分類歸檔,用于后期的訓(xùn)練查詢及考核評估。在發(fā)送端對需要發(fā)送的數(shù)據(jù)按照存儲或通訊協(xié)議的要求進(jìn)行編排,在接收端按照已定的解析協(xié)議對收到的數(shù)據(jù)進(jìn)行信息解析,即序列化和反序列化的過程。基于RSETful的數(shù)據(jù)交換時,序列化和反序列化是系統(tǒng)必須要解決的問題。
序列化操作可以讓其他程序模塊訪問未進(jìn)行序列化便無法修改或查看的對象數(shù)據(jù)。在對象數(shù)據(jù)進(jìn)行相應(yīng)序列化后,系統(tǒng)在需要查看或修改這些數(shù)據(jù)時,不需要考慮對象成員的可訪問性,相應(yīng)地,數(shù)據(jù)的反序列化將接收到的已序列化的數(shù)據(jù)中解析出需要的數(shù)據(jù),用于更新對象狀態(tài)。
Serde是Rust中應(yīng)用最為廣泛的序列化和反序列化框架,主要用于將序列化后的數(shù)據(jù)按照Rust結(jié)構(gòu)進(jìn)行轉(zhuǎn)換,反之亦然。在研究準(zhǔn)備構(gòu)建的訓(xùn)練模擬訓(xùn)練系統(tǒng)中,主要基于Rust結(jié)構(gòu)與JSON數(shù)據(jù)的轉(zhuǎn)化。
REST(Representational State Transfer)是一種充分利用Web特性的分布式軟件架構(gòu)風(fēng)格,可以降低系統(tǒng)開發(fā)的復(fù)雜性,提供系統(tǒng)的可伸縮性。利用統(tǒng)一資源標(biāo)識符(URI)來定位和識別資源,并通過HTTP協(xié)議中的方法(PUT、GET、POST、DELETE)在資源進(jìn)行CRUD操作。
基于Rust語言的Iron框架建立船舶模擬訓(xùn)練系統(tǒng)的RESTFUL數(shù)據(jù),需要建立基本的REST API路由:
mount_root.mount("/api/v1/", mount_api);
mount_root.mount("/client/", Static::new(Path::new("./client")));
在船舶電力模擬訓(xùn)練中,資源信息主要分為四類:用戶信息、訓(xùn)練操作信息、訓(xùn)練過程信息以及戰(zhàn)位信息。各類信息包括全部顯示、創(chuàng)建、查找、更新和刪除五類子信息。在REST服務(wù)架構(gòu)中,URI應(yīng)該包含所有作用域信息,其設(shè)計(jì)有三條基本原則:用路徑變量來表示層次結(jié)構(gòu);在路徑變量里加上標(biāo)點(diǎn)符號,以消除誤解;用查詢變量來表達(dá)算法的輸入[6-7]。
文中利用對各種資源確定URI。對四類資源信息確定URI部分路徑,其拓?fù)潢P(guān)系見圖1。
圖1 模擬訓(xùn)練資源信息的拓?fù)涫疽?/p>
以用戶信息為例,確定其子信息的路徑與對應(yīng)的HTTP操作,其他各類信息可同理確定其URI。見表1。
其拓?fù)潢P(guān)系圖見圖2。
表1 模擬訓(xùn)練資源子信息的URI部分路徑及HTTP操作
圖2 模擬訓(xùn)練資源子信息示意
為對設(shè)計(jì)的RESTFUL服務(wù)架構(gòu)性能進(jìn)行比較與分析,必須通過定量化、通用的一些性能測試工具與方法,對上述方法進(jìn)行測試,并對結(jié)果進(jìn)行比較與分析。負(fù)載測試是為檢驗(yàn)系統(tǒng)在給定負(fù)載下能否達(dá)到預(yù)期性能指標(biāo)。文中將主要采用siege工具進(jìn)行負(fù)載測試。
利用siege工具,分別模擬10個客戶端并行、100個客戶端并行訪問相應(yīng)典型數(shù)據(jù),對restful數(shù)據(jù)分發(fā)方法進(jìn)行5次測試,得到相應(yīng)的測試結(jié)果,見圖3、4。
圖3 仿真電力系統(tǒng)數(shù)據(jù)測試結(jié)果
圖4 指令數(shù)據(jù)測試結(jié)果
由圖3、4可知,隨著并行客戶端訪問量的增加,傳輸?shù)钠骄倲?shù)據(jù)也相應(yīng)增加;由于并行客戶端訪問量增加,服務(wù)器的響應(yīng)時間也相應(yīng)增大。由于仿真電力系統(tǒng)數(shù)據(jù)幀較長,在單次獲取仿真電力系統(tǒng)數(shù)據(jù)幀時,總的通信數(shù)據(jù)量為0.41 MB。服務(wù)器獲取仿真電力系統(tǒng)數(shù)據(jù)幀的響應(yīng)時間,由10客戶端的≤30 ms,增大至100客戶端所對應(yīng)的≤250 ms 。由于在所有實(shí)時分發(fā)數(shù)據(jù)中,仿真電力系統(tǒng)數(shù)據(jù)幀屬于最長的數(shù)據(jù)幀,其大小為84.59 k,而指令數(shù)據(jù)幀均比較短,大小在1 k以內(nèi)。仿真電力系統(tǒng)數(shù)據(jù)幀為周期數(shù)據(jù),模擬訓(xùn)練服務(wù)器每100 ms更新一次,網(wǎng)頁客戶端每600 ms請求一次仿真電力系統(tǒng)數(shù)據(jù)幀。指令數(shù)據(jù)幀為間歇性隨機(jī)數(shù)據(jù),由客戶端根據(jù)用戶的操作而隨機(jī)發(fā)送。通過測試可知,對于實(shí)際情況中最常用的1~10個并行客戶端場景,其通信延遲時間≤1 ms,對于極限情況下的100個并行客戶端場景,其通信延遲時間≤10 ms。實(shí)時數(shù)據(jù)分發(fā)性能完全滿足船舶電力模擬訓(xùn)練系統(tǒng)實(shí)際應(yīng)用的需求。
提出一種基于Iron/Rust的船舶電力模擬訓(xùn)練系統(tǒng)RESTFUL服務(wù)方法。對模擬訓(xùn)練所需的各種數(shù)據(jù)資源確定URI;構(gòu)建各個數(shù)據(jù)資源的子信息的路徑與對應(yīng)的HTTP操作,即CRUD;對上述RESTFUL服務(wù)方法進(jìn)行負(fù)載測試。結(jié)果表明,該方法能滿足船舶電力模擬訓(xùn)練系統(tǒng)實(shí)際應(yīng)用需求。