国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于總線的兵棋推演實(shí)時(shí)數(shù)據(jù)采集管理設(shè)計(jì)與實(shí)現(xiàn)

2023-12-06 03:00:34李榮森李志強(qiáng)司光亞
指揮控制與仿真 2023年6期
關(guān)鍵詞:兵棋數(shù)據(jù)量分支

李榮森,李志強(qiáng),曹 毅,司光亞

(國(guó)防大學(xué)聯(lián)合作戰(zhàn)學(xué)院,北京 100091)

兵棋推演歷史非常久遠(yuǎn),從墨子解帶為城算起,至今已2 000多年,期間人類(lèi)戰(zhàn)爭(zhēng)也經(jīng)歷了不同形態(tài)的演變。兵棋推演是現(xiàn)代進(jìn)行戰(zhàn)爭(zhēng)模擬和作戰(zhàn)方案驗(yàn)證的重要手段,尤其是推演過(guò)程中產(chǎn)生的數(shù)據(jù),是后續(xù)各類(lèi)分析的基礎(chǔ)。Creveld等在文獻(xiàn)[1]中回顧了戰(zhàn)爭(zhēng)發(fā)展的歷程,從大衛(wèi)對(duì)歌利亞的戰(zhàn)斗開(kāi)始,一直到最新的兵棋推演。文獻(xiàn)[2-3]針對(duì)數(shù)據(jù)本身進(jìn)行了數(shù)據(jù)質(zhì)量等分析。文獻(xiàn)[4-10]進(jìn)行了各種基于兵棋推演數(shù)據(jù)的作戰(zhàn)分析,包括火力打擊決策分析模型、指令下達(dá)特征、作戰(zhàn)體系網(wǎng)絡(luò)模型等。文獻(xiàn)[11-13]進(jìn)行了基于兵棋推演數(shù)據(jù)的挖掘、聚類(lèi)、測(cè)量等研究。文獻(xiàn)[14-17]提出了基于兵棋推演數(shù)據(jù)的不同作戰(zhàn)方案評(píng)估方法。文獻(xiàn)[18-22]對(duì)深度學(xué)習(xí)在兵棋推演數(shù)據(jù)分析中的應(yīng)用進(jìn)行了研究。文獻(xiàn)[23]進(jìn)行了基于兵棋推演數(shù)據(jù)的后勤物資儲(chǔ)備精確計(jì)算,建立了后勤模型和規(guī)則算法。文獻(xiàn)[24]開(kāi)放了一個(gè)兵棋推演數(shù)據(jù)集。

可見(jiàn),兵棋推演數(shù)據(jù)在各類(lèi)分析中起著基礎(chǔ)支撐的作用,因此必須有可靠的兵棋推演數(shù)據(jù)采集管理方案,以保證數(shù)據(jù)的高可用性。目前,美軍比較典型的兵棋推演系統(tǒng)有JAS(原JWARS)[25]、JTLS、EADSIM、FLAMES等[26];國(guó)內(nèi)的兵棋推演系統(tǒng)主要有某大型計(jì)算機(jī)兵棋系統(tǒng)、某大型仿真試驗(yàn)系統(tǒng)、XSIM[27]、墨子等;此外還有商業(yè)化的兵棋推演系統(tǒng)如CMANO等。這些系統(tǒng)在底層數(shù)據(jù)存儲(chǔ)方面,JAS采用的是Oracle數(shù)據(jù)庫(kù);JTLS4.0 版本采用的是Oracle數(shù)據(jù)庫(kù),6.0版本更新為PostgreSQL數(shù)據(jù)庫(kù);EADSIM、FLAMES、華如XSIM采用的是本地?cái)?shù)據(jù)文件方式;CMANO采用的是SQLite數(shù)據(jù)庫(kù);華戍墨子1.0版本采用的是SQLite數(shù)據(jù)庫(kù),新版本采用的是MySQL數(shù)據(jù)庫(kù);某大型計(jì)算機(jī)兵棋系統(tǒng)采用的是Oracle數(shù)據(jù)庫(kù),某大型仿真試驗(yàn)系統(tǒng)采用的是MongoDB數(shù)據(jù)庫(kù)。

由于采用單機(jī)版磁盤(pán)數(shù)據(jù)庫(kù),原有兵棋推演系統(tǒng)在數(shù)據(jù)訪問(wèn)方面存在一些問(wèn)題,對(duì)與推演數(shù)據(jù)相關(guān)的各類(lèi)應(yīng)用造成了不利影響。

1 原有數(shù)據(jù)采集管理機(jī)制

1.1 原有數(shù)據(jù)采集管理機(jī)制總體結(jié)構(gòu)

原有數(shù)據(jù)采集管理機(jī)制總體結(jié)構(gòu)如圖 1所示。推演模型子系統(tǒng)將計(jì)算結(jié)果輸出后,通過(guò)通信分發(fā)、網(wǎng)盤(pán)服務(wù)等模塊,交由實(shí)時(shí)數(shù)據(jù)采集、歷史數(shù)據(jù)采集、事件數(shù)據(jù)采集分別進(jìn)行入庫(kù)。最終的數(shù)據(jù)存儲(chǔ)在單機(jī)版HDD磁盤(pán)數(shù)據(jù)庫(kù)中。后續(xù)分析評(píng)估系統(tǒng)通過(guò)檢索實(shí)時(shí)庫(kù)、歷史庫(kù)、事件庫(kù),提供各類(lèi)評(píng)估結(jié)果。

圖1 原有數(shù)據(jù)采集管理機(jī)制總體結(jié)構(gòu)Fig.1 Structure of original data collection and management mechanism

1.2 原有數(shù)據(jù)采集管理機(jī)制存在的問(wèn)題

不可否認(rèn),原有機(jī)制采用這種結(jié)構(gòu)有其優(yōu)點(diǎn):1)結(jié)構(gòu)簡(jiǎn)單清晰,便于理解和實(shí)施;2)推演模型子系統(tǒng)和分析評(píng)估子系統(tǒng)共用一套數(shù)據(jù)庫(kù),相互之間不存在數(shù)據(jù)延遲問(wèn)題;3)單機(jī)版數(shù)據(jù)庫(kù)便于維護(hù),故障率低。

推演規(guī)模較小時(shí),原有系統(tǒng)結(jié)構(gòu)發(fā)揮了很好的支撐作用,一直以來(lái)運(yùn)行良好。但隨著推演規(guī)模的不斷增大,推演數(shù)據(jù)量呈指數(shù)級(jí)增長(zhǎng),并且對(duì)分析評(píng)估的時(shí)效性要求不斷提高,原有數(shù)據(jù)采集管理機(jī)制逐漸暴露出一些問(wèn)題。問(wèn)題一:推演模型子系統(tǒng)和分析評(píng)估子系統(tǒng)共用一套數(shù)據(jù)庫(kù),如果分析評(píng)估子系統(tǒng)大量訪問(wèn)數(shù)據(jù)并導(dǎo)致數(shù)據(jù)庫(kù)“假死”,則推演模型子系統(tǒng)也不能正常寫(xiě)入數(shù)據(jù)。問(wèn)題二:單機(jī)磁盤(pán)數(shù)據(jù)庫(kù)性能有限,如果分析評(píng)估子系統(tǒng)進(jìn)行較復(fù)雜的分析查詢,則整個(gè)系統(tǒng)會(huì)進(jìn)入“無(wú)限等待”狀態(tài),很長(zhǎng)時(shí)間不能輸出評(píng)估結(jié)果。問(wèn)題三:推演模型子系統(tǒng)推演過(guò)程中會(huì)形成許多推演分支,各分支之間有大量的交叉數(shù)據(jù),如不進(jìn)行處理,將導(dǎo)致統(tǒng)計(jì)結(jié)果失真。以前對(duì)多分支數(shù)據(jù)的管理方式為手工在控制臺(tái)輸入命令進(jìn)行分析和去重,效率低,工作量大,易出錯(cuò)。問(wèn)題四:原有分析評(píng)估應(yīng)用所有分析結(jié)果都直接查詢?cè)紨?shù)據(jù),來(lái)自不同席位的多次重復(fù)查詢導(dǎo)致大量資源浪費(fèi),同時(shí)查詢效率低下。問(wèn)題五:由于服務(wù)重連等原因,原始輸出數(shù)據(jù)中存在重復(fù)記錄等錯(cuò)誤;而原有系統(tǒng)不進(jìn)行糾錯(cuò)直接入庫(kù),導(dǎo)致分析結(jié)果嚴(yán)重失真。

針對(duì)這些痛點(diǎn),兵棋推演系統(tǒng)的底層數(shù)據(jù)管理機(jī)制必須要進(jìn)行重新設(shè)計(jì),研發(fā)專用數(shù)據(jù)采集與管理平臺(tái)。

2 新的數(shù)據(jù)采集管理系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)

新的兵棋推演實(shí)時(shí)數(shù)據(jù)采集與管理系統(tǒng)包括數(shù)據(jù)采集、數(shù)據(jù)管理和數(shù)據(jù)服務(wù)3個(gè)子模塊,總體架構(gòu)如圖2所示。

圖2 兵棋推演實(shí)時(shí)數(shù)據(jù)采集與管理系統(tǒng)總體架構(gòu)Fig.2 System architecture of real-time data collection and management system

數(shù)據(jù)采集模塊采用基于總線的實(shí)時(shí)采集方式,從模型推演數(shù)據(jù)總線上實(shí)時(shí)采集態(tài)勢(shì)信息和事件信息,經(jīng)解析重組后,交由數(shù)據(jù)管理模塊進(jìn)行入庫(kù)處理。

數(shù)據(jù)管理模塊負(fù)責(zé)對(duì)采集到的數(shù)據(jù)進(jìn)行清洗,同時(shí)對(duì)各數(shù)據(jù)段進(jìn)行分析,形成精準(zhǔn)的分支數(shù)據(jù),然后將組織好的數(shù)據(jù)存儲(chǔ)到分布式存儲(chǔ)平臺(tái)和內(nèi)存數(shù)據(jù)庫(kù)中。該模塊同時(shí)負(fù)責(zé)對(duì)各類(lèi)數(shù)據(jù)信息進(jìn)行可視化編輯和管理。

針對(duì)不斷變化的實(shí)時(shí)數(shù)據(jù),數(shù)據(jù)管理模塊設(shè)置兩種實(shí)時(shí)數(shù)據(jù)備份方式。一是每隔一段時(shí)間(默認(rèn)30 min)自動(dòng)對(duì)實(shí)時(shí)數(shù)據(jù)生成快照;二是在推演系統(tǒng)每生成一個(gè)檢查點(diǎn)時(shí),同步生成實(shí)時(shí)數(shù)據(jù)快照。

數(shù)據(jù)服務(wù)模塊負(fù)責(zé)對(duì)采集到的數(shù)據(jù)進(jìn)行進(jìn)一步加工,形成各系統(tǒng)直接可用的數(shù)據(jù)集,提供給上層應(yīng)用系統(tǒng),減少應(yīng)用系統(tǒng)再次組織數(shù)據(jù)形成結(jié)果集的開(kāi)銷(xiāo)。該模塊同時(shí)負(fù)責(zé)在檢查點(diǎn)重啟等操作引起數(shù)據(jù)分支變化時(shí),將正確的數(shù)據(jù)從分布式存儲(chǔ)平臺(tái)發(fā)布到內(nèi)存數(shù)據(jù)庫(kù)。

各應(yīng)用系統(tǒng)通過(guò)訪問(wèn)負(fù)載均衡下的內(nèi)存數(shù)據(jù)庫(kù)來(lái)查詢和分析數(shù)據(jù)。內(nèi)存數(shù)據(jù)庫(kù)的高性能和低延遲特性,保證了各應(yīng)用系統(tǒng)的訪問(wèn)效率。

該架構(gòu)通過(guò)綜合管理和內(nèi)存數(shù)據(jù)庫(kù)技術(shù),解決了應(yīng)用系統(tǒng)訪問(wèn)數(shù)據(jù)時(shí)的低效性和準(zhǔn)確性差的問(wèn)題;通過(guò)引入分布式存儲(chǔ)平臺(tái),解決了長(zhǎng)期運(yùn)行時(shí)大量推演數(shù)據(jù)的存儲(chǔ)成本問(wèn)題。

3 各模塊設(shè)計(jì)實(shí)現(xiàn)

3.1 數(shù)據(jù)采集模塊

3.1.1 功能設(shè)計(jì)

數(shù)據(jù)采集模塊根據(jù)系統(tǒng)配置信息從數(shù)據(jù)總線實(shí)時(shí)采集數(shù)據(jù)信息,包括配置管理、實(shí)時(shí)監(jiān)控處理、實(shí)時(shí)信息處理、歷史信息處理、事件信息處理等子模塊,如圖3所示。

配置管理模塊對(duì)采集數(shù)據(jù)源進(jìn)行配置,如對(duì)態(tài)勢(shì)服務(wù)節(jié)點(diǎn)、事件服務(wù)節(jié)點(diǎn)信息配置,也包括對(duì)采集間隔、監(jiān)控頻率、推演想定、輸出數(shù)據(jù)庫(kù)等信息配置。

實(shí)時(shí)監(jiān)控模塊對(duì)采集過(guò)程進(jìn)行實(shí)時(shí)監(jiān)控,在線監(jiān)測(cè)數(shù)據(jù)源更新情況,監(jiān)測(cè)數(shù)據(jù)處理量、處理速率、模型各服務(wù)節(jié)點(diǎn)輸出狀態(tài)等,保存并提示采集過(guò)程異常情況。

實(shí)時(shí)信息處理模塊主要功能是處理實(shí)時(shí)信息,并存入緩存隊(duì)列;歷史信息處理模塊主要功能是處理歷史信息,并存入緩存隊(duì)列;事件信息處理模塊主要功能是處理事件信息,并存入緩存隊(duì)列。

3.1.2 功能實(shí)現(xiàn)

數(shù)據(jù)采集模塊的具體實(shí)現(xiàn)如圖4所示。

圖4 數(shù)據(jù)采集模塊程序流程圖Fig.4 Program flow chart of data acquisition module

1)配置管理

程序啟動(dòng)后,首先讀取配置信息。包括用于確定數(shù)據(jù)實(shí)時(shí)性的采集間隔、用于采集程序注冊(cè)認(rèn)證的想定名稱和程序標(biāo)識(shí)碼、用于網(wǎng)盤(pán)掛載的網(wǎng)盤(pán)服務(wù)器IP地址和本地掛載路徑、用于實(shí)時(shí)信息定時(shí)快照的快照間隔、用于服務(wù)接收的態(tài)勢(shì)服務(wù)源和事件服務(wù)源等參數(shù),以及數(shù)據(jù)管理模塊用到的實(shí)時(shí)數(shù)據(jù)庫(kù)地址、賬號(hào),分布式存儲(chǔ)平臺(tái)地址、賬號(hào),分支管理服務(wù)端地址端口等。

需要說(shuō)明的是,用于確定數(shù)據(jù)實(shí)時(shí)性的采集間隔并不是越小越好。一方面是因?yàn)檫^(guò)小的采集間隔將導(dǎo)致程序“睡眠”時(shí)間縮短,增加服務(wù)器處理負(fù)載。另一方面是因?yàn)椴杉目偩€數(shù)據(jù)也不是連續(xù)無(wú)間隔輸出,而是類(lèi)似于波浪一樣的脈沖式輸出,既有連續(xù)且較小的持續(xù)流量,也有集中的“波峰”。采樣間隔在不大于一個(gè)“波峰波谷”周期的前提下,越大越好。具體最佳值要根據(jù)推演環(huán)境現(xiàn)場(chǎng)確定,通常在10~60 s之間。

2)實(shí)時(shí)監(jiān)控

配置信息處理完畢后,隨即創(chuàng)建多個(gè)子線程/進(jìn)程,包括用于程序狀態(tài)監(jiān)控的實(shí)時(shí)監(jiān)控進(jìn)程,用于處理用戶終端命令輸入的終端服務(wù)線程,分別用于采集態(tài)勢(shì)數(shù)據(jù)和事件數(shù)據(jù)的態(tài)勢(shì)服務(wù)線程和事件服務(wù)線程等。然后,注冊(cè)各類(lèi)回調(diào)函數(shù),校驗(yàn)并修正各類(lèi)配置信息,進(jìn)入程序主循環(huán)。

程序運(yùn)行期間,實(shí)時(shí)監(jiān)控模塊主要負(fù)責(zé)監(jiān)控以下信息:采集的數(shù)據(jù)量和處理速度,生成的結(jié)果集數(shù)據(jù)量,態(tài)勢(shì)信息源的服務(wù)狀態(tài),事件信息源的服務(wù)狀態(tài),網(wǎng)盤(pán)服務(wù)狀態(tài),模型通信分發(fā)服務(wù)狀態(tài),模型輸出服務(wù)狀態(tài)。

如果其中有出現(xiàn)異常的,先嘗試進(jìn)行修復(fù),如果修復(fù)不成功,及時(shí)進(jìn)行告警提示。

3)實(shí)時(shí)信息處理

初始化完畢后,開(kāi)始接收并處理各類(lèi)數(shù)據(jù)。第一批數(shù)據(jù)(初始化幀),在態(tài)勢(shì)服務(wù)線程連接上態(tài)勢(shì)服務(wù)后立即下發(fā),其中包含各類(lèi)實(shí)體和目標(biāo)的初始狀態(tài)。當(dāng)前時(shí)刻已經(jīng)經(jīng)過(guò)的模擬時(shí)間片數(shù)會(huì)隨著其中的仿真狀態(tài)數(shù)據(jù)一并下發(fā)(后續(xù)模擬時(shí)間片數(shù)的更新也隨仿真狀態(tài)下發(fā))。然后通過(guò)讀取網(wǎng)盤(pán)中保存的初始仿真時(shí)間可以計(jì)算出當(dāng)前的仿真時(shí)間,這個(gè)時(shí)間隨后被更新到緩存隊(duì)列的各條記錄中。與此同時(shí),網(wǎng)盤(pán)中的詞匯表也會(huì)被解析到程序緩存中,以便對(duì)數(shù)據(jù)中的各類(lèi)編碼進(jìn)行替換。

初始化數(shù)據(jù)下發(fā)完畢后,就開(kāi)始了正常的態(tài)勢(shì)數(shù)據(jù)下發(fā)與處理,處理方法一樣,區(qū)別僅在于數(shù)據(jù)量的大小和詳細(xì)程度。這些態(tài)勢(shì)數(shù)據(jù)最終會(huì)被轉(zhuǎn)換成通用數(shù)據(jù)格式,存入共享緩存,并隨著時(shí)間的推進(jìn)不斷更新。

4)歷史信息處理

與實(shí)時(shí)信息的處理過(guò)程類(lèi)似,首先也是接收數(shù)據(jù)、解碼、格式轉(zhuǎn)換。然后存入緩存歷史信息處理。不同之處在于對(duì)緩存隊(duì)列的管理。

處理實(shí)時(shí)信息時(shí),緩存隊(duì)列是不斷更新的,每個(gè)實(shí)體僅維持一條最新的狀態(tài)記錄。而處理歷史信息時(shí),緩存隊(duì)列的更新操作被替換成了增長(zhǎng)操作。也就是說(shuō),如果某個(gè)實(shí)體的態(tài)勢(shì)發(fā)生了變化,則在歷史信息緩存隊(duì)列中,變化后的態(tài)勢(shì)是作為一條新的態(tài)勢(shì)記錄插入到緩存隊(duì)列中的,而態(tài)勢(shì)變化前的那條記錄維持不變。

歷史信息會(huì)設(shè)置對(duì)應(yīng)的數(shù)據(jù)段號(hào)字段用于記錄各條數(shù)據(jù)歸屬的數(shù)據(jù)段,而實(shí)時(shí)信息是沒(méi)有這個(gè)字段的。

5)事件信息處理

事件信息的處理與歷史信息類(lèi)似,也是變化信息被作為新的紀(jì)錄插入緩存隊(duì)列;不同之處在于每條事件信息自帶事件發(fā)生時(shí)的仿真時(shí)間,不需要額外計(jì)算仿真時(shí)間。同時(shí),后續(xù)過(guò)程中數(shù)據(jù)段號(hào)的計(jì)算也是依賴于這個(gè)自帶的仿真時(shí)間,而不是像歷史信息一樣,依賴于當(dāng)前仿真時(shí)間。

3.2 數(shù)據(jù)管理模塊

3.2.1 功能設(shè)計(jì)

數(shù)據(jù)管理模塊對(duì)不同分支的數(shù)據(jù)進(jìn)行管理,包括數(shù)據(jù)段計(jì)算、分支樹(shù)維護(hù)、數(shù)據(jù)清洗、內(nèi)存庫(kù)存取、分布式存儲(chǔ)平臺(tái)存取等子模塊,如圖5所示。

圖5 數(shù)據(jù)管理模塊功能結(jié)構(gòu)圖Fig.5 Functional structure of data management module

數(shù)據(jù)段計(jì)算主要用于計(jì)算各條數(shù)據(jù)記錄的數(shù)據(jù)段號(hào),更新該條記錄。分支樹(shù)維護(hù)主要維護(hù)推演數(shù)據(jù)的分支樹(shù)型結(jié)構(gòu),將新生成的數(shù)據(jù)段插入分支樹(shù)中的正確位置,為后續(xù)的數(shù)據(jù)發(fā)布提供計(jì)算基礎(chǔ)。

數(shù)據(jù)清洗主要進(jìn)行基于哈希鏈的數(shù)據(jù)去重,以及對(duì)各條記錄中出錯(cuò)的異常、缺失字段進(jìn)行自動(dòng)更正(目前還不能對(duì)全部字段錯(cuò)誤全自動(dòng)處理),其中哈希鏈計(jì)算主要用于計(jì)算各條數(shù)據(jù)記錄的組合哈希,存入程序緩存。

內(nèi)存數(shù)據(jù)庫(kù)存取和分布式存儲(chǔ)平臺(tái)存取模塊主要負(fù)責(zé)將數(shù)據(jù)組織成對(duì)應(yīng)平臺(tái)的數(shù)據(jù)形式,并進(jìn)行存取。

3.2.2 功能實(shí)現(xiàn)

數(shù)據(jù)管理模塊的具體實(shí)現(xiàn)如圖6所示。

圖6 數(shù)據(jù)管理模塊程序流程圖Fig.6 Program flow chart of data management module

1)分支樹(shù)維護(hù)

數(shù)據(jù)管理模塊啟動(dòng)后,首先讀取數(shù)據(jù)段配置文件,構(gòu)建初始分支管理樹(shù)。根據(jù)每條記錄的數(shù)據(jù)段號(hào)和父數(shù)據(jù)段號(hào),確定對(duì)應(yīng)的掛載關(guān)系。所有的數(shù)據(jù)記錄按照各自的數(shù)據(jù)段號(hào),分別歸屬到不同的分支中,并根據(jù)需要,進(jìn)行相應(yīng)的數(shù)據(jù)調(diào)度。

后續(xù)新的數(shù)據(jù)段產(chǎn)生后,計(jì)算其對(duì)應(yīng)的父數(shù)據(jù)段號(hào),掛載后形成新的分支結(jié)構(gòu)。新產(chǎn)生的該數(shù)據(jù)段內(nèi)的數(shù)據(jù),也都?xì)w屬到這個(gè)數(shù)據(jù)分支。

2)數(shù)據(jù)段計(jì)算

對(duì)于不同類(lèi)型的數(shù)據(jù),采用不同的數(shù)據(jù)段號(hào)計(jì)算方法。首先,實(shí)時(shí)信息數(shù)據(jù)由于是不斷更新的,都對(duì)應(yīng)的是最新的數(shù)據(jù)段,故不計(jì)算其數(shù)據(jù)段號(hào)。其次,歷史信息數(shù)據(jù)在采集完成后,用當(dāng)前數(shù)據(jù)段號(hào)作為其數(shù)據(jù)段號(hào)。

事件數(shù)據(jù)的數(shù)據(jù)段號(hào)計(jì)算方法略微不同。由于采集完畢的每條事件數(shù)據(jù)都會(huì)包含一個(gè)仿真時(shí)間,且事件數(shù)據(jù)存在長(zhǎng)時(shí)間延遲的情況(比如很久以前的事件數(shù)據(jù)突然被接收,而此時(shí)的數(shù)據(jù)段號(hào)比彼時(shí)的數(shù)據(jù)段號(hào)已經(jīng)變化了很多),所以用事件數(shù)據(jù)記錄內(nèi)的仿真時(shí)間計(jì)算數(shù)據(jù)段更合適,可以避免直接復(fù)制當(dāng)前數(shù)據(jù)段號(hào)引起的錯(cuò)誤。根據(jù)指定的仿真時(shí)間,沿著當(dāng)前分支在分支樹(shù)中查詢對(duì)應(yīng)時(shí)間段的數(shù)據(jù)段號(hào)并賦值。如果發(fā)生跨分支的情況,則查詢失敗,賦默認(rèn)值。

3)哈希鏈計(jì)算

將整條數(shù)據(jù)輸入,轉(zhuǎn)換為字符型緩沖區(qū),然后使用MD5、SHA1、RIPEMD160、CRC32等哈希算法分別計(jì)算對(duì)應(yīng)的哈希值,得到組合哈希。然后與程序緩存中的哈希鏈做對(duì)比,如果發(fā)生沖突則說(shuō)明是重復(fù)數(shù)據(jù),進(jìn)行丟棄,否則轉(zhuǎn)入下一步處理。

4)異常/缺失字段處理

該模塊主要是對(duì)數(shù)據(jù)中存在的一些錯(cuò)誤進(jìn)行自動(dòng)修正。對(duì)數(shù)據(jù)的修正首先是根據(jù)各表之間的關(guān)聯(lián)關(guān)系,通過(guò)ID進(jìn)行關(guān)聯(lián)后,抽取曾經(jīng)出現(xiàn)過(guò)的合理值進(jìn)行替換,由于聚類(lèi)分析、回歸分析、牛頓插值等方法計(jì)算量較大,如果每個(gè)字段都采用此類(lèi)方法,則服務(wù)器負(fù)載較重,且程序吞吐量得不到保證,所以僅在推演結(jié)束后才能采用,實(shí)時(shí)數(shù)據(jù)采集用的是簡(jiǎn)化方法。對(duì)于不能通過(guò)關(guān)聯(lián)關(guān)系修正的數(shù)據(jù),則“一例一案”地采用不同的方法進(jìn)行修正。

對(duì)于錯(cuò)誤的字段,典型的如事件記錄中,一個(gè)事件系列結(jié)束后,最后一條記錄的更新?tīng)顟B(tài)應(yīng)該是“V”,而有些情況下該狀態(tài)卻被標(biāo)記為“UN”,此時(shí)就自動(dòng)地把“UN”修正為“V”。再如實(shí)體名稱中,按標(biāo)準(zhǔn)是不允許出現(xiàn)“,”符號(hào)的,但某些情況下卻出現(xiàn)了“,”符號(hào),此時(shí)根據(jù)具體情況,直接刪除或采用“_”替換。

對(duì)于缺失的字段,如果是數(shù)值型的,一般用0進(jìn)行填充,如果是字符型的,則用“NULL”或“{INVALID}”進(jìn)行填充。

由于數(shù)據(jù)出錯(cuò)的類(lèi)型較多,且在不同的環(huán)境中會(huì)出現(xiàn)不同的錯(cuò)誤(包括新的錯(cuò)誤類(lèi)型),所以此處只是進(jìn)行了力所能及的修正,并不能涵蓋所有情況。

5)內(nèi)存數(shù)據(jù)庫(kù)存取

該模塊主要是把緩沖隊(duì)列中處理好的各類(lèi)數(shù)據(jù)寫(xiě)入內(nèi)存數(shù)據(jù)庫(kù)。為提高寫(xiě)入性能,采用批量寫(xiě)入的方式。首先,構(gòu)造基礎(chǔ)SQL語(yǔ)句,循環(huán)對(duì)寫(xiě)入緩沖區(qū)變量數(shù)組賦值,然后,把基礎(chǔ)SQL和緩沖區(qū)數(shù)組統(tǒng)一提交給數(shù)據(jù)平臺(tái)。對(duì)于批量寫(xiě)入失敗的情況,再區(qū)分處理:如果是由于資源競(jìng)爭(zhēng)引起,則再次嘗試單條逐個(gè)寫(xiě)入;如果是由于數(shù)據(jù)格式錯(cuò)誤或底層服務(wù)異常引起,則進(jìn)行錯(cuò)誤告警。

6)分布式存儲(chǔ)平臺(tái)存取

該模塊主要是把緩沖隊(duì)列中處理好的各類(lèi)數(shù)據(jù),寫(xiě)入分布式存儲(chǔ)平臺(tái)。由于是同一個(gè)采集管理模塊同時(shí)支撐兩類(lèi)數(shù)據(jù)平臺(tái),所以此處以CSV文件為中介。首先采集管理模塊把要寫(xiě)入的數(shù)據(jù)輸出到CSV文件中,然后另外啟動(dòng)一個(gè)進(jìn)程,將CSV文件“l(fā)oad”到分布式存儲(chǔ)平臺(tái)。如此可以保證兩套平臺(tái)異步并行處理,不會(huì)因一套平臺(tái)的某個(gè)操作阻塞,而卡住另一套平臺(tái)的處理。

3.3 數(shù)據(jù)服務(wù)模塊

3.3.1 功能設(shè)計(jì)

數(shù)據(jù)服務(wù)模塊主要提供結(jié)果集生成和分支數(shù)據(jù)發(fā)布兩類(lèi)服務(wù),包括基于態(tài)勢(shì)的結(jié)果集生成、基于事件的結(jié)果集生成、混合型結(jié)果集生成、分支數(shù)據(jù)發(fā)布等子模塊,如圖7所示。生成結(jié)果集的目的主要有2個(gè):一是規(guī)范分析流程,保證數(shù)據(jù)和指標(biāo)都相同時(shí),分析結(jié)果相同;二是降低分析時(shí)需要處理的數(shù)據(jù)量,提高系統(tǒng)效率。

圖7 數(shù)據(jù)服務(wù)模塊功能結(jié)構(gòu)圖Fig.7 Functional structure of data service module

基于態(tài)勢(shì)的結(jié)果集生成主要是生成各種對(duì)態(tài)勢(shì)數(shù)據(jù)簡(jiǎn)單分析后得到的結(jié)果集?;谑录慕Y(jié)果集主要是生成各種對(duì)事件數(shù)據(jù)簡(jiǎn)單分析后得到的結(jié)果集。混合型結(jié)果集生成主要是生成需要綜合分析態(tài)勢(shì)數(shù)據(jù)和事件數(shù)據(jù)的綜合型結(jié)果集。

分支數(shù)據(jù)發(fā)布主要是根據(jù)用戶選定的數(shù)據(jù)分支或檢查點(diǎn)信息,將正確的分支數(shù)據(jù)發(fā)布到目標(biāo)庫(kù)。

3.3.2 功能實(shí)現(xiàn)

數(shù)據(jù)服務(wù)模塊的具體實(shí)現(xiàn)如圖8所示。其中,結(jié)果集生成的流程如圖8a)所示。當(dāng)有新的態(tài)勢(shì)數(shù)據(jù)加入數(shù)據(jù)緩存隊(duì)列,就啟動(dòng)一個(gè)檢查例程,看是否符合結(jié)果集的計(jì)算條件,如果不符合則略過(guò)該條數(shù)據(jù),否則進(jìn)行相應(yīng)的結(jié)果集生成。

圖8 數(shù)據(jù)服務(wù)模塊程序流程圖Fig.8 Program flow chart of data service module

1)基于態(tài)勢(shì)的結(jié)果集生成

部分結(jié)果集僅依賴于態(tài)勢(shì)數(shù)據(jù)即可生成。主要有基于字段屬性拆分大表、監(jiān)控實(shí)體態(tài)勢(shì)拐點(diǎn)等。

對(duì)于第一類(lèi),將原先數(shù)據(jù)量較大的一張表,根據(jù)指定字段的不同取值,分門(mén)別類(lèi)地放入不同的子表內(nèi)。如可根據(jù)視圖字段,將同一個(gè)視圖的數(shù)據(jù)放入一張表。經(jīng)過(guò)這樣拆分后的數(shù)據(jù)子表,數(shù)據(jù)量可降低一個(gè)數(shù)量級(jí),大大加快在后續(xù)統(tǒng)計(jì)分析中的響應(yīng)速度。

對(duì)于第二類(lèi),按照不同的實(shí)體ID,分別監(jiān)控其態(tài)勢(shì)變化,在態(tài)勢(shì)出現(xiàn)拐點(diǎn)時(shí)及時(shí)進(jìn)行記錄。比如,監(jiān)控實(shí)體的受損信息,當(dāng)實(shí)體輕微受損、嚴(yán)重受損、被修復(fù)、被消滅時(shí),分別進(jìn)行記錄。如此處理后,結(jié)果集記錄的都是重要的拐點(diǎn)信息,相比于原始無(wú)差別的定時(shí)采樣,數(shù)據(jù)量大大減少,后續(xù)分析中不需要再處理無(wú)關(guān)的背景數(shù)據(jù)。

2)基于事件的結(jié)果集生成

部分結(jié)果集僅依賴于事件數(shù)據(jù)即可生成。主要有基于字段屬性拆分大表、基于事件字段表間關(guān)聯(lián)等。

對(duì)于第一類(lèi),類(lèi)似于基于態(tài)勢(shì)數(shù)據(jù)做的大表拆分。如可根據(jù)實(shí)體類(lèi)型進(jìn)行拆分,將不同實(shí)體類(lèi)型的事件數(shù)據(jù)分開(kāi)存放,同樣可以減少數(shù)據(jù)量。

對(duì)于第二類(lèi),主要是利用程序直接計(jì)算的快捷性,將大表關(guān)聯(lián)后的結(jié)果直接寫(xiě)入數(shù)據(jù)集,避免后續(xù)使用SQL語(yǔ)句進(jìn)行大表關(guān)聯(lián)的巨大開(kāi)銷(xiāo)。如可直接將打擊事件與打擊詳情進(jìn)行基于事件ID的關(guān)聯(lián),結(jié)果直接寫(xiě)入新的詳細(xì)打擊情況表。

3)混合型結(jié)果集生成

部分結(jié)果集需要綜合利用態(tài)勢(shì)信息和事件信息生成,主要有綜合詳情、關(guān)聯(lián)分析等。

對(duì)于第一類(lèi),可按照詳情種類(lèi),將對(duì)應(yīng)的事件表與實(shí)體表做關(guān)聯(lián),結(jié)果寫(xiě)入綜合詳情表。如對(duì)于交戰(zhàn)事件詳情,可將交戰(zhàn)事件與實(shí)體信息以及詞匯表進(jìn)行綜合關(guān)聯(lián)。

對(duì)于第二類(lèi),可按照分析類(lèi)型,將對(duì)應(yīng)的事件表與實(shí)體表做關(guān)聯(lián)。如對(duì)于火力打擊關(guān)聯(lián)分析,可首先提取指令事件中的ID等信息,然后與開(kāi)火事件、實(shí)體信息、詞匯表進(jìn)行綜合關(guān)聯(lián)。

4)分支數(shù)據(jù)發(fā)布

分支數(shù)據(jù)發(fā)布的流程如圖8b)所示。模塊啟動(dòng)后,首先讀取分支配置信息,生成分支樹(shù);然后讀取待發(fā)布分支信息,并與分支樹(shù)作比較,生成目標(biāo)分支數(shù)據(jù)段集合;其次讀取源庫(kù)和目標(biāo)庫(kù)數(shù)據(jù)段信息,與目標(biāo)分支數(shù)據(jù)段集合作比較,計(jì)算出需要?jiǎng)h除的數(shù)據(jù)段和需要插入的數(shù)據(jù)段;最后從目標(biāo)數(shù)據(jù)庫(kù)中刪除需要?jiǎng)h除的數(shù)據(jù)段,從源庫(kù)中將需要插入的數(shù)據(jù)段插入目標(biāo)數(shù)據(jù)庫(kù)。

4 新機(jī)制與原有機(jī)制比較

4.1 新機(jī)制與原有機(jī)制的不同之處

不同之處主要有以下幾點(diǎn):

1)原有機(jī)制下,推演模型子系統(tǒng)和分析評(píng)估子系統(tǒng)共用一套數(shù)據(jù)庫(kù);新機(jī)制實(shí)現(xiàn)了數(shù)據(jù)庫(kù)的分離,各自使用自己的數(shù)據(jù)平臺(tái)。

2)原有機(jī)制下,數(shù)據(jù)采集基于通信分發(fā)傳輸協(xié)議;新機(jī)制下,數(shù)據(jù)采集基于事件服務(wù)和態(tài)勢(shì)服務(wù)協(xié)議。

3)原有機(jī)制下,采用的是單機(jī)磁盤(pán)庫(kù);新機(jī)制下,采用的是結(jié)合了內(nèi)存數(shù)據(jù)庫(kù)和分布式存儲(chǔ)平臺(tái)的混合型數(shù)據(jù)平臺(tái)。

4)原有機(jī)制下,沒(méi)有進(jìn)行多分支管理,所有數(shù)據(jù)全部無(wú)差別地存放在一起;新機(jī)制下,進(jìn)行了基于數(shù)據(jù)段的非確定性多分支數(shù)據(jù)管理,所有數(shù)據(jù)按照分支樹(shù)進(jìn)行組織。

5)原有機(jī)制下,沒(méi)有進(jìn)行數(shù)據(jù)集的提取操作,所有查詢?nèi)酷槍?duì)原始數(shù)據(jù)直接進(jìn)行;新機(jī)制下,引入了基于數(shù)據(jù)集的數(shù)據(jù)治理方法,絕大部分查詢可以查詢治理后的數(shù)據(jù)集結(jié)果。

6)原有機(jī)制下,沒(méi)有進(jìn)行數(shù)據(jù)去重;新機(jī)制下對(duì)重復(fù)數(shù)據(jù)進(jìn)行了去重處理。

7)原有機(jī)制下,對(duì)缺失字段和異常字段沒(méi)有進(jìn)行處理;新機(jī)制下,自動(dòng)化處理了缺失字段和異常字段。

8)原有機(jī)制下,數(shù)據(jù)存儲(chǔ)上采用的是分庫(kù)不分表的存儲(chǔ)方式;新機(jī)制下,數(shù)據(jù)存儲(chǔ)上采用的是分表,但不分庫(kù)的存儲(chǔ)方式。

4.2 新機(jī)制帶來(lái)的好處

對(duì)應(yīng)于以上改進(jìn)措施,新機(jī)制帶來(lái)的好處主要如下:

1)模型推演子系統(tǒng)和分析評(píng)估子系統(tǒng)數(shù)據(jù)平臺(tái)的分離,確保了相互之間不再因數(shù)據(jù)平臺(tái)而相互阻礙。再也沒(méi)有發(fā)生過(guò)因一方對(duì)數(shù)據(jù)平臺(tái)的大量訪問(wèn),導(dǎo)致另一方無(wú)法運(yùn)行的情況。

2)數(shù)據(jù)總線采集協(xié)議的升級(jí),保證了新機(jī)制下事件數(shù)據(jù)可以采集多份,提高了安全性和應(yīng)用靈活性。相比于原機(jī)制下事件數(shù)據(jù)只能寫(xiě)入一個(gè)數(shù)據(jù)庫(kù),解決了單點(diǎn)瓶頸問(wèn)題。

3)混合型數(shù)據(jù)存儲(chǔ)平臺(tái)的采用,既解決了單機(jī)磁盤(pán)庫(kù)容量有限的問(wèn)題,又解決了磁盤(pán)型數(shù)據(jù)庫(kù)性能問(wèn)題。分布式存儲(chǔ)平臺(tái)可以存儲(chǔ)海量數(shù)據(jù)。關(guān)系型內(nèi)存數(shù)據(jù)庫(kù)可以保證數(shù)據(jù)的高速訪問(wèn)。

4)多分支管理技術(shù)的引入,確保了每次進(jìn)行分析的都是正確的數(shù)據(jù)。解決了以往分析評(píng)估時(shí),因基礎(chǔ)數(shù)據(jù)有臟數(shù)據(jù)而導(dǎo)致的評(píng)估結(jié)果嚴(yán)重失真問(wèn)題。

5)基于數(shù)據(jù)集的數(shù)據(jù)治理,提供了可以直接使用的結(jié)果集,不必每次都查詢?cè)紨?shù)據(jù),節(jié)約了大量資源。同時(shí),由于結(jié)果集是以列式存儲(chǔ)方式存儲(chǔ)在內(nèi)存中的窄表,速度和利用效率更好。相比于原機(jī)制下以行式存儲(chǔ)方式存儲(chǔ)在磁盤(pán)中的大量寬表,數(shù)據(jù)訪問(wèn)性能得到了極大提升。

6)數(shù)據(jù)去重,缺失字段和異常字段的處理,極大地提高了分析結(jié)果的準(zhǔn)確性。

7)原有分庫(kù)不分表的存儲(chǔ)方式,雖然較好地減輕了數(shù)據(jù)寫(xiě)入時(shí)的壓力,提高了寫(xiě)入性能;但查詢時(shí)因?yàn)橛写罅康目鐜?kù)數(shù)據(jù)傳輸,且沒(méi)有通過(guò)分表進(jìn)行數(shù)據(jù)篩減,降低了性能。新機(jī)制下的分表不分庫(kù),通過(guò)杜絕大批量跨庫(kù)數(shù)據(jù)傳輸,同時(shí)對(duì)單條SQL涉及的數(shù)據(jù)進(jìn)行篩減,極大地提高了綜合性能。

5 系統(tǒng)運(yùn)行結(jié)果

在CentOS7.9上,使用C++版eclipse 進(jìn)行了系統(tǒng)實(shí)現(xiàn),總計(jì)約20萬(wàn)行代碼(不含內(nèi)存數(shù)據(jù)庫(kù)和分布式存儲(chǔ)平臺(tái)部分)。共采集生成了4大類(lèi)225張數(shù)據(jù)表。目前系統(tǒng)運(yùn)行穩(wěn)定,已支撐多場(chǎng)重要推演。

圖9是系統(tǒng)運(yùn)行過(guò)程中生成的部分?jǐn)?shù)據(jù)段配置信息,可見(jiàn)本次運(yùn)行的分支信息還是比較多的,如不進(jìn)行處理,將會(huì)導(dǎo)致存在大量的重復(fù)數(shù)據(jù),致使各類(lèi)統(tǒng)計(jì)結(jié)果偏離甚至翻倍。

圖9 數(shù)據(jù)段配置信息Fig.9 Snapshot of data segment info config file

圖10 采集數(shù)據(jù)量隨時(shí)間變化圖Fig.10 The change of the amount of collected data over time

圖11 采集數(shù)據(jù)總量隨時(shí)間變化圖Fig.11 The total amount of collected data over time

圖12 采集數(shù)據(jù)處理速度隨數(shù)據(jù)量變化圖Fig.12 The processing speed of the collected data over the amount of collected data

對(duì)系統(tǒng)的采集效率進(jìn)行了測(cè)試,數(shù)據(jù)采集節(jié)點(diǎn)測(cè)試環(huán)境配置為:12 Core 2.2GHz CPU,128GB DDR4 RAM,2TB SSD,華為CloudStack云平臺(tái)。圖 10是采集到的數(shù)據(jù)量隨時(shí)間的變化曲線,可見(jiàn)數(shù)據(jù)分布并不是均勻的,有波峰,有波谷,并且波峰的高度和間隔也是隨機(jī)的。圖 11是采集的數(shù)據(jù)總量隨時(shí)間變化曲線,可見(jiàn)呈波浪狀階梯上升。圖 12是系統(tǒng)采集數(shù)據(jù)時(shí)的處理速度,當(dāng)數(shù)據(jù)量大時(shí),批處理的優(yōu)勢(shì)體現(xiàn)出來(lái),處理速度較快,數(shù)據(jù)量小時(shí),基本為逐條處理,沒(méi)有批處理優(yōu)勢(shì),處理速度較慢;但受資源競(jìng)爭(zhēng)等因素影響,處理速度并不是恒定不變的,也具有一定的隨機(jī)性。

對(duì)采集后的數(shù)據(jù)訪問(wèn)速度進(jìn)行了測(cè)試,單表數(shù)據(jù)量1億條(總數(shù)據(jù)量10億條)情況下,count查詢響應(yīng)時(shí)間基本小于0.1 s,簡(jiǎn)單組合查詢響應(yīng)時(shí)間約0.2 s,大表間復(fù)雜多表關(guān)聯(lián)操作響應(yīng)時(shí)間在1 s左右。原有機(jī)制下,這幾個(gè)數(shù)值分別為約3 s,約2 min,約7 h(原運(yùn)行環(huán)境配置為16Core 2.0Ghz CPU,16GB DDR4 RAM,4TB HDD)。

6 結(jié)束語(yǔ)

從系統(tǒng)運(yùn)行的實(shí)際需求出發(fā),設(shè)計(jì)實(shí)現(xiàn)了基于總線的兵棋推演數(shù)據(jù)實(shí)時(shí)采集管理平臺(tái)。從實(shí)際運(yùn)行情況看,較好地解決了推演數(shù)據(jù)實(shí)時(shí)采集和服務(wù)問(wèn)題?;诳偩€的實(shí)時(shí)采集和數(shù)據(jù)清洗,保證了數(shù)據(jù)采集的速度,提高了采集數(shù)據(jù)的質(zhì)量。基于數(shù)據(jù)段的分支管理,保證了提供給應(yīng)用系統(tǒng)的數(shù)據(jù)的準(zhǔn)確性。數(shù)據(jù)集和內(nèi)存數(shù)據(jù)庫(kù)的采用,極大地提高了應(yīng)用系統(tǒng)訪問(wèn)數(shù)據(jù)的速度。分布式存儲(chǔ)平臺(tái)的引入,解決了大批量數(shù)據(jù)的低成本存儲(chǔ)和靈活檢索。

與原有機(jī)制相比,實(shí)現(xiàn)了數(shù)據(jù)采集管理平臺(tái)從無(wú)到有的轉(zhuǎn)換?;跀?shù)據(jù)段的分支管理和數(shù)據(jù)清洗等功能,都是首次實(shí)現(xiàn),相比于原有機(jī)制是零的突破。從整體效果上看,實(shí)現(xiàn)的數(shù)據(jù)管理平臺(tái)不管是訪問(wèn)速度還是數(shù)據(jù)準(zhǔn)確性,以及可支持的推演和評(píng)估模式的靈活性,都有了較大的提升。

猜你喜歡
兵棋數(shù)據(jù)量分支
基于大數(shù)據(jù)量的初至層析成像算法優(yōu)化
計(jì)算Lyapunov指數(shù)的模糊C均值聚類(lèi)小數(shù)據(jù)量法
高刷新率不容易顯示器需求與接口標(biāo)準(zhǔn)帶寬
兵棋推演:未來(lái)戰(zhàn)爭(zhēng)的水晶球
軍事文摘(2020年19期)2020-10-13 12:29:28
寬帶信號(hào)采集與大數(shù)據(jù)量傳輸系統(tǒng)設(shè)計(jì)與研究
電子制作(2019年13期)2020-01-14 03:15:18
巧分支與枝
基于兵棋推演實(shí)驗(yàn)的綜合評(píng)估指標(biāo)度量方法
一類(lèi)擬齊次多項(xiàng)式中心的極限環(huán)分支
基于深度學(xué)習(xí)的兵棋實(shí)體決策效果智能評(píng)估模型
基于混合Beta分布的兵棋推演可信度評(píng)估方法研究
双峰县| 重庆市| 望谟县| 纳雍县| 阳谷县| 依安县| 五峰| 英德市| 塔城市| 岱山县| 黄骅市| 巫溪县| 来安县| 海南省| 泽库县| 洞头县| 南昌县| 泸西县| 贵德县| 兴和县| 黄浦区| 乐至县| 东方市| 石狮市| 巴林左旗| 灌云县| 淳化县| 鹤峰县| 六安市| 阳泉市| 榕江县| 盘山县| 咸丰县| 大宁县| 班戈县| 哈尔滨市| 大竹县| 沽源县| 新乡县| 凤凰县| 青岛市|