崔爽,于國(guó)權(quán)
(中國(guó)科學(xué)院 長(zhǎng)春光學(xué)精密機(jī)械與物理研究所,長(zhǎng)春 130033)
HLA(high level architecture)/RTI(Run-Time Infrastructure)是新一代的分布式仿真體系結(jié)構(gòu)框架,它能很好的支持各種仿真模型之間的互操作和可重用[1]?;贖LA(HighLevelArchitecture)的光電對(duì)抗半實(shí)物仿真系統(tǒng)的主要功能及目的是用于對(duì)設(shè)備的鑒定,這就需要對(duì)仿真過(guò)程中邦員的狀態(tài)數(shù)據(jù)和邦員間各種交互行為數(shù)據(jù)進(jìn)行及時(shí)、完整的采集,以便于在仿真完成后為仿真參與者提供深入的關(guān)于仿真過(guò)程的各種信息,進(jìn)而對(duì)設(shè)備進(jìn)行評(píng)估和測(cè)試等[2,3]。數(shù)據(jù)庫(kù)的介入,可以方便的輔助仿真過(guò)程中數(shù)據(jù)的存儲(chǔ)以及事后的回放、評(píng)估和測(cè)試,成為HLA仿真結(jié)果VV&A的重要手段[2,3]。但是由于數(shù)據(jù)庫(kù)對(duì)于數(shù)據(jù)的存儲(chǔ)速率無(wú)法滿足仿真過(guò)程中所產(chǎn)生的大批量實(shí)時(shí)數(shù)據(jù),而且一旦仿真過(guò)程中服務(wù)器出現(xiàn)問(wèn)題,實(shí)時(shí)數(shù)據(jù)將完全丟失,將為試驗(yàn)帶來(lái)巨大損失。鑒于這些問(wèn)題,論文提出了使用分布式存儲(chǔ)的方法,該方法構(gòu)建了一個(gè)簡(jiǎn)單的分布式存儲(chǔ)系統(tǒng),首先劃分多個(gè)分布式緩沖區(qū),每當(dāng)其中一個(gè)緩沖區(qū)滿后就調(diào)用switch中間件將數(shù)據(jù)批量寫(xiě)入隨機(jī)選取的當(dāng)前空閑的數(shù)據(jù)庫(kù)服務(wù)器,這樣既彌補(bǔ)了數(shù)據(jù)庫(kù)磁盤I/O瓶頸問(wèn)題,同時(shí)分布式存儲(chǔ)的使用也極大地提高了系統(tǒng)的可靠性,因?yàn)槿魏我慌_(tái)服務(wù)器出現(xiàn)問(wèn)題時(shí),系統(tǒng)都會(huì)將緩沖區(qū)中的數(shù)據(jù)轉(zhuǎn)向存儲(chǔ)到其它正常的數(shù)據(jù)庫(kù)服務(wù)器中,最后將該方法應(yīng)用到了光電對(duì)抗半實(shí)物仿真試驗(yàn)系統(tǒng)中。
光電對(duì)抗半實(shí)物仿真系統(tǒng)所要采集的數(shù)據(jù)主要有兩個(gè)方面[4,5]。
一方面主要指仿真系統(tǒng)運(yùn)行之前所需要的準(zhǔn)備數(shù)據(jù),還有就是人工采集的數(shù)據(jù)和操作數(shù)據(jù),這些數(shù)據(jù)被統(tǒng)稱為靜態(tài)數(shù)據(jù)。
另一方面就是仿真系統(tǒng)運(yùn)行過(guò)程中生成的數(shù)據(jù),這些數(shù)據(jù)被稱為實(shí)時(shí)數(shù)據(jù),具有頻率高和數(shù)據(jù)量大的特點(diǎn)。
對(duì)于靜態(tài)數(shù)據(jù)來(lái)說(shuō),由于不用考慮傳輸速率,直接采用基于C/S架構(gòu)的Oracle應(yīng)用程序就可以實(shí)現(xiàn)對(duì)靜態(tài)數(shù)據(jù)的采集和存儲(chǔ)。
難點(diǎn)在于如何實(shí)現(xiàn)對(duì)實(shí)時(shí)數(shù)據(jù)采集存儲(chǔ),考慮當(dāng)前的一些存儲(chǔ)辦法,無(wú)論是選擇數(shù)據(jù)庫(kù)存儲(chǔ)還是直接進(jìn)行硬盤存儲(chǔ),其實(shí)時(shí)存儲(chǔ)能力都無(wú)法滿足對(duì)仿真過(guò)程中實(shí)時(shí)生成的大批量的實(shí)時(shí)數(shù)據(jù)的存儲(chǔ),而且一旦存儲(chǔ)計(jì)算機(jī)在仿真過(guò)程中發(fā)生問(wèn)題,如斷電、網(wǎng)絡(luò)中斷或是系統(tǒng)崩潰等,都將丟失仿真數(shù)據(jù),因此整個(gè)仿真試驗(yàn)也將宣布失敗,將給仿真試驗(yàn)帶來(lái)具大的損失。為此,設(shè)計(jì)并提出了一種半實(shí)物仿真數(shù)據(jù)實(shí)時(shí)存儲(chǔ)方法來(lái)解決這些問(wèn)題,接下來(lái)將對(duì)該方法做詳細(xì)的論述。
鑒于實(shí)時(shí)性和可靠性的要求,本文提出了分布式存儲(chǔ)方法,該方法的思想是建立在分布式操作系統(tǒng)的基礎(chǔ)之上的,多臺(tái)數(shù)據(jù)庫(kù)服務(wù)器同時(shí)完成一個(gè)存儲(chǔ)功能[6],提高了數(shù)據(jù)存儲(chǔ)速率,并且任何一臺(tái)或者幾臺(tái)服務(wù)器出現(xiàn)故障,都不會(huì)影響整個(gè)存儲(chǔ)過(guò)程的繼續(xù),保證了數(shù)據(jù)存儲(chǔ)的完整性和可靠性。該方法的主要結(jié)構(gòu)設(shè)計(jì)如圖1所示。
圖1 分布式存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)Fig.1 Structure design of distributed storage
首先建立多個(gè)分布式緩沖區(qū),要求緩沖區(qū)的個(gè)數(shù)要大于所使用的服務(wù)器個(gè)數(shù),并且分布式緩沖區(qū)的容量要大于單個(gè)服務(wù)器寫(xiě)磁盤緩沖區(qū)的容量,緩沖區(qū)可以是一個(gè)具有指定長(zhǎng)度的Buffer,也可以是一個(gè)指定長(zhǎng)度的數(shù)組,因具體情況而定。
SWITCH中間件的主要功能是隨即切換數(shù)據(jù)庫(kù)服務(wù)器,通過(guò)遍歷當(dāng)前活躍的服務(wù)器,從中選取處在空閑狀態(tài)的服務(wù)器,并將已經(jīng)寫(xiě)滿的分布式緩沖區(qū)中的數(shù)據(jù)存儲(chǔ)到該服務(wù)器中。設(shè)計(jì)規(guī)則是為每個(gè)服務(wù)器設(shè)置一個(gè)時(shí)間戳,初始時(shí)設(shè)置為0,構(gòu)成一個(gè)時(shí)間戳列表,當(dāng)某個(gè)分布式緩沖區(qū)滿后,SWITCH中間件就遍歷時(shí)間戳列表,從中尋找一個(gè)最小值,并將當(dāng)前系統(tǒng)時(shí)間賦值給該時(shí)間戳,同時(shí)與該服務(wù)器建立連接,如果連接成功,就將緩沖區(qū)中的數(shù)據(jù)存儲(chǔ)到該服務(wù)器,否則從時(shí)間戳列表中刪除該服務(wù)器,認(rèn)為該服務(wù)器故障,并繼續(xù)遍歷時(shí)間戳列表,尋找次小值,依次循環(huán),直到試驗(yàn)結(jié)束。SWITCH中間件的工作流程如圖2所示。
圖2 SWITCH工作流程Fig.2 Work flow of SWITCH
最后確立分布式存儲(chǔ)使用的服務(wù)器數(shù)量,視具體情況而定,一般小型半實(shí)物仿真系統(tǒng)使用兩臺(tái)即可,大型的半實(shí)物仿真系統(tǒng)則需要三臺(tái)以上。
下面對(duì)分布式存儲(chǔ)方法和直接向單一數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)存儲(chǔ)進(jìn)行測(cè)試比較。測(cè)試條件:連續(xù)存儲(chǔ)2000幀數(shù)據(jù),幀間隔為10ms,每幀數(shù)據(jù)量為50字段*4個(gè)字節(jié)。將測(cè)試結(jié)果以圖表的形式展示如下圖3、4所示。
圖3 不使用分布式存儲(chǔ)Fig.3 Unused distributed storage
圖4 使用分布式存儲(chǔ)Fig.4 Used distributed storage
圖表中縱坐標(biāo)為存儲(chǔ)每幀數(shù)據(jù)所使用的時(shí)間,橫坐標(biāo)為數(shù)據(jù)幀次,即第幾幀。從兩個(gè)圖表中可以看出:
在不使用分布式存儲(chǔ)的情況下,數(shù)據(jù)向數(shù)據(jù)庫(kù)中寫(xiě)入時(shí),不是每寫(xiě)入一條,Oracle數(shù)據(jù)庫(kù)服務(wù)器就將數(shù)據(jù)寫(xiě)入磁盤,而是先將數(shù)據(jù)寫(xiě)入Oracle數(shù)據(jù)庫(kù)緩沖區(qū),等緩沖區(qū)數(shù)據(jù)寫(xiě)滿之后,才將數(shù)據(jù)導(dǎo)入到磁盤,這樣在整個(gè)數(shù)據(jù)插入過(guò)程中,就會(huì)出現(xiàn)幾幀使用的時(shí)間特別大,這幾幀就是Oracle數(shù)據(jù)庫(kù)將緩沖區(qū)中的數(shù)據(jù)導(dǎo)入磁盤的過(guò)程。而正是因?yàn)檫@幾幀使用的時(shí)間特別大,會(huì)導(dǎo)致接下來(lái)的一幀或是幾幀數(shù)據(jù)的丟失,嚴(yán)重影響了仿真時(shí)序的推進(jìn),而且這些還需要建立在數(shù)據(jù)庫(kù)服務(wù)器在整個(gè)試驗(yàn)過(guò)程中沒(méi)有任何錯(cuò)誤的情況下,一旦服務(wù)器出現(xiàn)故障,整個(gè)存儲(chǔ)系統(tǒng)將崩潰,將給仿真系統(tǒng)帶來(lái)巨大損失。
使用分布式存儲(chǔ)之后,數(shù)據(jù)先是保存在分布式緩沖區(qū)中,當(dāng)一個(gè)緩沖區(qū)寫(xiě)滿之后,就觸發(fā)寫(xiě)數(shù)據(jù)庫(kù)線程,然后再向另一個(gè)緩沖區(qū)寫(xiě)數(shù)據(jù),再觸發(fā)寫(xiě)數(shù)據(jù)庫(kù)線程,如此反復(fù),將所有數(shù)據(jù)都寫(xiě)入Oracle數(shù)據(jù)庫(kù)。從測(cè)得的時(shí)間數(shù)據(jù)可以看出,整個(gè)數(shù)據(jù)插入過(guò)程中,不會(huì)出現(xiàn)某一幀使用的時(shí)間特別答的現(xiàn)象,只是在數(shù)據(jù)庫(kù)寫(xiě)磁盤的時(shí)候,在時(shí)間上有個(gè)連續(xù)的小波動(dòng),這是由于線程之間競(jìng)爭(zhēng)資源導(dǎo)致的,但這個(gè)波動(dòng)非常小,一般每幀不超過(guò)2ms,不會(huì)影響下一個(gè)周期的仿真數(shù)據(jù)存儲(chǔ),可以忽略不計(jì);此外,即使在試驗(yàn)的過(guò)程中,某臺(tái)或是某幾臺(tái)數(shù)據(jù)庫(kù)服務(wù)器出現(xiàn)問(wèn)題,都不會(huì)影響整個(gè)存儲(chǔ)過(guò)程,使得仿真數(shù)據(jù)不會(huì)產(chǎn)生丟失的現(xiàn)象,保證了仿真實(shí)時(shí)數(shù)據(jù)的完整性和數(shù)據(jù)存儲(chǔ)的實(shí)時(shí)性。
實(shí)時(shí)數(shù)據(jù)主要是在仿真系統(tǒng)運(yùn)行過(guò)程中產(chǎn)生的,包括聯(lián)邦成員更新的數(shù)據(jù)和聯(lián)邦成員之間的交互數(shù)據(jù)。實(shí)時(shí)數(shù)據(jù)采集模式使用的是采集邦員的方法,即設(shè)置一個(gè)專門的邦員,讓其訂購(gòu)所有的數(shù)據(jù)并在數(shù)據(jù)到達(dá)時(shí)記錄數(shù)據(jù),充分體現(xiàn)了它的簡(jiǎn)單和方便特性;同時(shí)此邦員通過(guò)分布式緩沖區(qū),借助switch中間件的數(shù)據(jù)庫(kù)服務(wù)器切換功能,將實(shí)時(shí)生成的數(shù)據(jù)全部采集并分別存儲(chǔ)到多個(gè)Oracle數(shù)據(jù)庫(kù)服務(wù)器中,用來(lái)分析、研究、測(cè)試、評(píng)估和鑒定具體的設(shè)備,進(jìn)而實(shí)現(xiàn)了光電對(duì)抗半實(shí)物仿真的主要目的和功能。實(shí)時(shí)數(shù)據(jù)采集模式的結(jié)構(gòu)框架如圖5。
圖5 實(shí)時(shí)數(shù)據(jù)采集模式結(jié)構(gòu)框架Fig.5 Structure of real-time data collection mode
仿真過(guò)程是時(shí)間推進(jìn)的,其頻率很高,大概在100Hz左右,圖6只是描述仿真推演的一個(gè)周期內(nèi)的數(shù)據(jù)采集過(guò)程。采集聯(lián)邦成員訂購(gòu)所有的數(shù)據(jù)并在數(shù)據(jù)到達(dá)時(shí)記錄數(shù)據(jù)。采集聯(lián)邦成員在整個(gè)聯(lián)邦中被動(dòng)地收集數(shù)據(jù),它只是訂購(gòu)在FOM中定義的所有數(shù)據(jù),將反射屬性和接收到的交互類存儲(chǔ)到分布式緩沖區(qū)中,然后觸發(fā)SWITCH中間件,將數(shù)據(jù)寫(xiě)入到當(dāng)前活躍的Oracle數(shù)據(jù)庫(kù)服務(wù)器中。
本文分析了光電對(duì)抗半實(shí)物仿真系統(tǒng)采集數(shù)據(jù)的類型,發(fā)現(xiàn)了實(shí)時(shí)數(shù)據(jù)存儲(chǔ)這一難點(diǎn);提出了使用分布式存儲(chǔ)方法來(lái)實(shí)現(xiàn)對(duì)大批量實(shí)時(shí)數(shù)據(jù)進(jìn)行存儲(chǔ)的方法,同時(shí)將使用分布式存儲(chǔ)方法進(jìn)行存儲(chǔ)和直接向數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)插入這兩種方法作了對(duì)比,通過(guò)比較分析了使用分布式存儲(chǔ)方法的優(yōu)點(diǎn),解決了Oracle數(shù)據(jù)庫(kù)管理系統(tǒng)的磁盤I/O瓶頸問(wèn)題,大大提高了仿真系統(tǒng)的數(shù)據(jù)實(shí)時(shí)存儲(chǔ)性能,同時(shí)該方法通過(guò)多個(gè)服務(wù)器的使用大大提高了系統(tǒng)數(shù)據(jù)存儲(chǔ)的可靠性;最后實(shí)現(xiàn)了這一方法在光電對(duì)抗半實(shí)物仿真系統(tǒng)中的應(yīng)用。
[1]馮貴江,李言俊,張科,等.基于HLA光電對(duì)抗仿真系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程設(shè)計(jì) 2008(4):2055-2058.
[2]厲明,紀(jì)勇,賈宏光,等.基于快速仿真原型的飛行器半物理仿真系統(tǒng)[J].光學(xué) 精密工程,2008,16(10):1949-1955.
[3]趙煒渝.光電對(duì)抗仿真試驗(yàn)技術(shù)[J].紅外與激光工程,2001,30(3):171-175.
[4]李艷峰,劉延斌,金光.機(jī)載光電平臺(tái)地面測(cè)試系統(tǒng)目標(biāo)模擬分系統(tǒng)的建模與半物理仿真實(shí)現(xiàn)[J].光學(xué)精密工程,2004(2):193-196.
[5]蔣夏軍,李蔚清,吳慧中.高級(jí)分布式仿真中的數(shù)據(jù)收集技術(shù)研究[J].系統(tǒng)仿真學(xué)報(bào),2004(8):1758-1767.
[6]向方.基于內(nèi)存數(shù)據(jù)庫(kù)的HLA仿真數(shù)據(jù)收集方法研究[J].數(shù)據(jù)庫(kù)及信息管理,2007(7):596-597.