徐 飛,楊恩寧,姚紅革
(1.西安工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,陜西 西安 710032;2.西安交通大學(xué) 城市學(xué)院,陜西 西安 710018)
多傳感器數(shù)據(jù)融合(Multi-sensor Data Fusion)是指對(duì)來(lái)自多個(gè)傳感器的數(shù)據(jù)進(jìn)行多級(jí)別多方面、多層次的處理,從而產(chǎn)生任何單一傳感器所無(wú)法獲得的有意義的信息。多傳感器數(shù)據(jù)融合是一個(gè)多級(jí)、多層面的分布式數(shù)據(jù)處理過程,在不同的計(jì)算節(jié)點(diǎn)上需要完成數(shù)據(jù)的配準(zhǔn)、關(guān)聯(lián)、相關(guān)、估計(jì)和融合過程中。利用數(shù)學(xué)建模技術(shù)和分布式仿真技術(shù)構(gòu)建一個(gè)通用的數(shù)據(jù)融合仿真平臺(tái),在平臺(tái)上結(jié)合工程背景開展數(shù)據(jù)融合仿真試驗(yàn),評(píng)估各種模型、算法的性能及在實(shí)際系統(tǒng)中的應(yīng)用情況,對(duì)試驗(yàn)數(shù)據(jù)進(jìn)行定量分析,驗(yàn)證融合結(jié)構(gòu)中各個(gè)層次數(shù)據(jù)處理的合理性和有效性[1]。
在分布式環(huán)境下進(jìn)行數(shù)據(jù)融合過程仿真需要將多級(jí)融合算法分解,部署在多臺(tái)計(jì)算節(jié)點(diǎn)上進(jìn)行仿真。分布式仿真系統(tǒng)在集成現(xiàn)有模型的基礎(chǔ)上還需要新模型的開發(fā),因此對(duì)仿真系統(tǒng)具有異構(gòu)性與可重用性有較高的要求?,F(xiàn)有的分布式仿真系統(tǒng)大多遵循HLA規(guī)范。在重用性上受限于特定的仿真支撐平臺(tái),且與其他支持平臺(tái)的技術(shù)和標(biāo)準(zhǔn)脫節(jié)[2]。在通用編程平臺(tái)結(jié)合的上只能選擇JavaEE或微軟.NET平臺(tái)組件實(shí)現(xiàn)方式[3],異構(gòu)性較差。設(shè)計(jì)一種跨語(yǔ)言、跨平臺(tái)的基于服務(wù)的組件框架,同時(shí)滿足分布式數(shù)據(jù)融合系統(tǒng)異構(gòu)性與算法模型可重用性就顯得非常有必要了。
面向服務(wù)的體系結(jié)構(gòu)(service-oriented architecture,SOA)是一個(gè)組件模型,它將應(yīng)用程序的不同功能單元通過這些服務(wù)之間定義良好的接口和契約聯(lián)系起來(lái)。接口是采用中立的方式進(jìn)行定義的,它應(yīng)該獨(dú)立于實(shí)現(xiàn)服務(wù)的硬件平臺(tái)、操作系統(tǒng)和編程語(yǔ)言。這使得構(gòu)建在各種這樣的系統(tǒng)中的服務(wù)可以以一種統(tǒng)一和通用的方式進(jìn)行交互[4]。面向?qū)ο蟮哪P褪蔷o耦合的,面向服務(wù)的體系結(jié)構(gòu)是更傳統(tǒng)的面向?qū)ο蟮哪P偷奶娲P??;赟OA的系統(tǒng)并不排除使用面向?qū)ο蟮脑O(shè)計(jì)來(lái)構(gòu)建單個(gè)服務(wù),但是其整體設(shè)計(jì)卻是面向服務(wù)的。由于它考慮到了系統(tǒng)內(nèi)的對(duì)象,所以雖然 SOA是基于對(duì)象的,但是作為一個(gè)整體,它卻不是面向?qū)ο蟮摹2煌幵谟诮涌诒旧怼?/p>
服務(wù)組件框架(service component architecture,簡(jiǎn)稱SCA)是一套基于SOA去構(gòu)建企業(yè)應(yīng)用的編程模型,它的基礎(chǔ)思想就將業(yè)務(wù)功能構(gòu)造成一系列的服務(wù),并且能夠很好地將這些服務(wù)組合起來(lái),達(dá)到解決業(yè)務(wù)需求的目的。在構(gòu)建這些應(yīng)用時(shí)所用到的服務(wù),不僅包含新建服務(wù),而且可以包括已有的業(yè)務(wù)應(yīng)用中的業(yè)務(wù)功能,且SCA提供了一套針對(duì)服務(wù)組合和服務(wù)創(chuàng)建的模型。主要包括如下元素:
1)Module
Module是SCA構(gòu)架中重要的組成單元,也是粒度較粗的一個(gè)單元。Module具有了屬性,這是為了能夠更加方便地注入給 Component屬性值而做的調(diào)整。Module是通過一個(gè)XML格式文件進(jìn)行描述的。
2)ComponentType
ComponentType是一個(gè)描述 SCA中服務(wù)的元素,它定義了服務(wù)以及服務(wù)的接口,以及服務(wù)對(duì)應(yīng)的屬性和服務(wù)引用。ComponentType是通過一個(gè)后綴名為.componentType XML文檔來(lái)描述的。
3)Component
ComponentType只是描述性地說明一下服務(wù)的接口以及屬性,引用,但是具體該服務(wù)對(duì)應(yīng)的實(shí)現(xiàn)以及屬性的值和引用對(duì)應(yīng)的服務(wù)是沒有給出的。而Component描述了服務(wù)對(duì)應(yīng)的實(shí)現(xiàn),服務(wù)實(shí)現(xiàn)是通過implement元素指定的。Component也描述ComponentType中定義的屬性以及引用所對(duì)應(yīng)的值。Component的XML描述是在Module的描述文件中的
4)EntryPoint
Module在SCA中是一個(gè)粒度較為粗的單元,Module和Module之間的交互是通過定義在 Module內(nèi)部的 Entry Point和 External Service進(jìn)行的,也就是說 Entry Point是一個(gè)Module對(duì)外提供的接口,而 External Service是一個(gè) Module對(duì)外訪問的出口。
分布式數(shù)據(jù)融合仿真平臺(tái)的采用了非集中式的融合結(jié)構(gòu),滿足多個(gè)機(jī)動(dòng)目標(biāo)跟蹤精度高、數(shù)據(jù)傳輸量大、雷達(dá)校準(zhǔn)要求高等特點(diǎn)。雷達(dá)信息的二次和三次處理同在一個(gè)計(jì)算節(jié)點(diǎn)內(nèi)進(jìn)行,對(duì)各個(gè)雷達(dá)站的目標(biāo)航跡點(diǎn)跡進(jìn)行綜合處理,輸出各個(gè)目標(biāo)的多雷達(dá)航跡和融合判決結(jié)果。本文提出分布式仿真系統(tǒng)采用模型-視圖-控制器(Model-View-Controller,MVC)模型。MVC選擇Struts框架與SCA規(guī)范業(yè)務(wù)模型整合的開發(fā)模式。視圖(View)部分主要負(fù)責(zé)界面顯示,接受系統(tǒng)用戶的請(qǐng)求,并嵌入電子地理信息系統(tǒng),包括JSP網(wǎng)頁(yè)客戶端和Java應(yīng)用程序客戶端。控制器(Controller)是運(yùn)行構(gòu)件的容器服務(wù),完成構(gòu)件生命周期管理、構(gòu)件調(diào)度工作,是仿真系統(tǒng)的“大腦”,并根據(jù)用戶的請(qǐng)求調(diào)用不同的模型實(shí)例。模型(Model)主要完成航跡數(shù)據(jù)和融合算法,是仿真系統(tǒng)分布式服務(wù)的具體實(shí)現(xiàn)。Struts框架提供了可以擴(kuò)展進(jìn)行請(qǐng)求調(diào)度的模型實(shí)現(xiàn),使得對(duì)象的復(fù)用更加地有效[4]。Struts整合SCA分布式仿真系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1 基于Struts和SCA的分布式仿真系統(tǒng)結(jié)構(gòu)Fig.1 Structure of distributed simulation system based on Struts and SCA
仿真模塊是仿真業(yè)務(wù)功能的基本元素,也是系統(tǒng)實(shí)現(xiàn)的關(guān)鍵。SCA模塊由若干SCA抽象構(gòu)件構(gòu)成,如圖2所示。
SCA模塊按照一定的邏輯劃分對(duì)SCA構(gòu)件進(jìn)行分組和裝配。一個(gè)模塊同樣包含若干的組件、服務(wù)、引用和屬性,并且對(duì)應(yīng)一個(gè)后綴名為composite的XML配置文件。SCA組件本身有多種實(shí)現(xiàn)方式,本文主要研究SCA組件的Java實(shí)現(xiàn)。
算法是數(shù)據(jù)融合中心的核心,其中IFusion為算法的輸入輸出接口,用來(lái)處理融合數(shù)據(jù)的輸入輸出;第二個(gè)接口IAlgoRes為算法資源接口,用來(lái)技術(shù)算法所需要的資源。
圖2 抽象構(gòu)件設(shè)計(jì)Fig.2 Abstract component design
數(shù)據(jù)融合中心采用鏈表來(lái)組織數(shù)據(jù),將數(shù)據(jù)分為兩類,一類是測(cè)試平臺(tái)用于實(shí)時(shí)顯示的數(shù)據(jù),包括傳感器數(shù)據(jù)鏈表、目標(biāo)航跡鏈表;另一類時(shí)組件內(nèi)部融合算法輸入輸出的數(shù)據(jù),包括輸入傳感器探測(cè)信息鏈表、輸出融合航跡點(diǎn)鏈表。定義的主要的類有:
傳感器屬性類,代表傳感器的屬性信息:
目標(biāo)航跡類,代表融合得到的目標(biāo)航跡:
目標(biāo)信息類,代表傳感器探測(cè)到的目標(biāo)信息:
感器探測(cè)信息類,代表單個(gè)傳感器一個(gè)融合周期內(nèi)所探測(cè)的目標(biāo)信息:
航跡點(diǎn)類,代表一次融合周期內(nèi)輸出的單個(gè)目標(biāo)航跡點(diǎn):
構(gòu)建SCA模塊需要編寫配置文件。多個(gè)SCA組件通過連線(wire)構(gòu)成SCA模塊[5-7],組件的服務(wù)和引用通過提升(promote)成為模塊的服務(wù)與引用。一個(gè)完整的SCA模塊結(jié)構(gòu)所示。SCA模塊按照一定的邏輯劃分對(duì)SCA組件進(jìn)行分組和裝配。一個(gè)模塊同樣包含若干的組件、服務(wù)、引用和屬性,并且對(duì)應(yīng)一個(gè)后綴名為composite的XML配置文件。
一個(gè)SCA組件可對(duì)外提供一個(gè)或多個(gè)服務(wù),每個(gè)服務(wù)對(duì)應(yīng)一個(gè)接口類,服務(wù)對(duì)應(yīng)的方法在服務(wù)接口類中體現(xiàn)為一系列的抽象方法。若服務(wù)被定義為遠(yuǎn)程調(diào)用,需要用@Remo table行注釋。
SCA應(yīng)用分布性表現(xiàn)為一個(gè)SCA應(yīng)用對(duì)應(yīng)一個(gè)domain(域),domain包含一個(gè)或多個(gè) composite(構(gòu)件),一個(gè)composite包含一個(gè)多個(gè)業(yè)務(wù)component(組件),所有的component分布在不同的網(wǎng)絡(luò)node(結(jié)點(diǎn))上。按照上節(jié)給出的業(yè)務(wù)構(gòu)件定義及抽象構(gòu)件的分布式實(shí)現(xiàn)如圖3所示。
在開發(fā)分布式SCA應(yīng)用時(shí)不需要考慮應(yīng)用的分布性,分布性的管理是由domain manager通過3個(gè)配置文件來(lái)完成的。這3個(gè)配置文件所在的位置是domain manager運(yùn)行的當(dāng)前目錄,分別是workspace.xml、domain.composite和 cloud.Composite。
3個(gè)部署節(jié)點(diǎn)分別用Node1.composite、Node2.composite和Node3.Composite進(jìn)行描述。在每一個(gè)node配置文件中,包含的主要內(nèi)容有:該node將要運(yùn)行的contribution(包含對(duì)應(yīng)的composite);該node所在計(jì)算機(jī)的網(wǎng)絡(luò)環(huán)境,包括IP和port;遠(yuǎn)程調(diào)用所使用的綁定及其協(xié)議。
抽象構(gòu)件的名稱、構(gòu)成組件的名稱、組件之間相互引用的關(guān)系、傳輸協(xié)議的服務(wù)綁定等信息都反映在配置文件中。為了遵循SCA協(xié)議,在其組件配置文件中,抽象構(gòu)件、組件與服務(wù)的相關(guān)信息分別在
圖3 數(shù)據(jù)融合業(yè)務(wù)構(gòu)件的分布式模型Fig.3 Distributed model of data fusion business component
代碼片段為
SCA框架的部署主要是將多個(gè)contribution及其composite整合到同一個(gè)domain中(包括分配contribution所在node的IP地址和端口號(hào)),部署的主要工作是在domain manager的當(dāng)前運(yùn)行目錄下配置或生成3個(gè)文件,在本地服務(wù)器上設(shè)置相應(yīng)的引用模塊,并將SCA模塊Web Service綁定與引用。其基本過程如下圖所示:編寫WSDL(web服務(wù)描述語(yǔ)言)文件。主要包括數(shù)據(jù)類型定義、消息定義、端口類型定義、綁定定義、服務(wù)訪問點(diǎn)定義和服務(wù)定義。
1)配置SCA模塊.主要是增加對(duì)Web Service的綁定,在元素
2)編寫服務(wù)啟動(dòng)程序。啟動(dòng)程序主要通過SCADomain的靜態(tài)方法new Instance(String composite)加載配置文件與WSDL文件,用于啟動(dòng)服務(wù)。
3)最后,將 discontribution貢獻(xiàn)包放在Node1上運(yùn)行;Node1的JVM位于192.168.1.11的計(jì)算機(jī)上,提供服務(wù)的port為8081;服務(wù)的綁定采用sca綁定,綁定的協(xié)議由SCA框架自動(dòng)選擇?!皒mlns:c”是指composite的namespace,需要與前面的保持一致。
圖4 視頻信息處理器模擬器圖Fig.4 Video processor simulator
為證明分布式仿真系統(tǒng)的可行性,構(gòu)建3個(gè)仿真節(jié)點(diǎn)和1個(gè)SCA服務(wù)節(jié)點(diǎn)。3個(gè)仿真節(jié)點(diǎn)由一個(gè)局域網(wǎng)中指定3臺(tái)PC承擔(dān)本任務(wù)。一臺(tái)PC是空情生成模擬器,一臺(tái)模擬視頻信息處理和顯示,一臺(tái)模擬空情數(shù)據(jù)處理。仿真計(jì)算機(jī)的配置為AMD 3200+CPU,1 GB內(nèi)存,100 Mbps以太網(wǎng)卡。1個(gè)服務(wù)節(jié)點(diǎn)作為Web服務(wù)器和構(gòu)件管理協(xié)調(diào)器。仿真時(shí)間設(shè)定為 3 60 s。
數(shù)據(jù)融合仿真系統(tǒng)要求實(shí)時(shí)處理顯示火炮空情信息,在全系統(tǒng)的處理時(shí)間協(xié)調(diào)上要統(tǒng)一處理各模塊的處理時(shí)間與全系統(tǒng)時(shí)間安排,如圖4所示。從仿真試驗(yàn)結(jié)果可以看出航跡關(guān)聯(lián)算法在目標(biāo)編隊(duì)交叉或近距飛行時(shí),有較高的關(guān)聯(lián)正確率,從而解決了分布式多傳感器多目標(biāo)跟蹤的有效性問題,并且區(qū)域之間具有較好的協(xié)調(diào)效果,如圖5所示。
圖5 空情數(shù)據(jù)處理模擬器Fig.5 Air situation data processing simulator
文中構(gòu)建了基于SCA規(guī)范的分布式數(shù)據(jù)融合仿真系統(tǒng),體現(xiàn)出了SOA系統(tǒng)松散耦合、粗粒度和傳輸協(xié)議透明這3大要素。按照面向?qū)ο蠛兔嫦蚍?wù)的原則進(jìn)行抽象構(gòu)件設(shè)計(jì)和業(yè)務(wù)構(gòu)件設(shè)計(jì),并使用Java語(yǔ)言進(jìn)行具體編程實(shí)現(xiàn)。SCA組件的實(shí)現(xiàn)語(yǔ)言無(wú)關(guān)性及傳輸協(xié)議無(wú)關(guān)性滿足了系統(tǒng)對(duì)異構(gòu)性的需求,大大降低了異構(gòu)系統(tǒng)跨平臺(tái)集成的難度。分布式仿真框架通過Web Service與SCA的整合開發(fā)。構(gòu)件化的開發(fā)模式有利于不同開發(fā)語(yǔ)言、不同計(jì)算平臺(tái)的業(yè)務(wù)組件的升級(jí)和維護(hù)。仿真系統(tǒng)的構(gòu)建具有較好的通用性、可擴(kuò)充性、開放性和實(shí)時(shí)性等特點(diǎn),為評(píng)價(jià)數(shù)據(jù)融合算法及系統(tǒng)的戰(zhàn)術(shù)性能提供了可靠的平臺(tái)依托。
[1]徐飛,鐘連炯.高炮空情信息處理仿真[J].系統(tǒng)仿真學(xué)報(bào),2008,20(23):6442-6445.
XU Fei,ZHONG Lian-jiong.Air intelligence information simulation of artillery[J].Journal of System Simulation,2008,20(23):6442-6445.
[2]向偉,蒲國(guó)林,楊清平.面向服務(wù)架構(gòu)的異構(gòu)系統(tǒng)集成模型[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2011,20(1):22-26.
XIANG Wei,PU Guo-Lin,YANG Qing-ping.Heterogeneous system integration based on service-oriented architecture[J].Computer Systems&Applications,2011,20(1):22-26.
[3]鄧桂英.基于Web Services的第三方物流信息系統(tǒng)解決方案[J].上海理工大學(xué)學(xué)報(bào),2006,28(3):290-292,298.
DENG Gui-ying.Solution ofthe third-party logistics application based on web services[J].Journal of University of Shanghai for Science and Technology,2006,28 (3):290-292,298.
[4]包潔嬌,范菁,熊麗榮.基于EJB的Web Service部署模型的研究[J].計(jì)算機(jī)與數(shù)字工程,2006,34(3):20-24.
BAO Jie-jiao,F(xiàn)AN Jin,XONG Li-rong.Research on deployment model of EJB-based web service[J].Computer&Digital Engineering,2006,34(3):20-24.
[5]關(guān)明,吉宏偉,楊雪君.基于SOA的數(shù)字城市管理業(yè)務(wù)系統(tǒng)的研究與設(shè)計(jì)[J].廣西大學(xué)學(xué)報(bào):自然科學(xué)版,2009,34(5):690-695.
GUAN Ming,JI Hong-wei,YANG Xue-jun.Research and design of digital city management business system based on SOA[J].JournalofGuangxiUniversity:NaturalScienceEdition,2009,34(5):690-695.
[6]Chappell.IntroducingSCA[EB/OL].[2010-05-16].http://www.davidchappell.com/articles/Introducing_SCA.pdf.
[7]LAWSONS.Tuscany SCA in Action[M].USA:Manning Publication Co.,2011.