(海軍裝備部 北京 100841)
艦載指控系統(tǒng)從誕生以來(lái)先后經(jīng)歷了獨(dú)立式、集中式、分開(kāi)式和分布式四個(gè)發(fā)展階段[1],并隨著信息技術(shù)與作戰(zhàn)方式的不斷發(fā)展,正逐步發(fā)展為支持“網(wǎng)絡(luò)中心戰(zhàn)”的全分布式的綜合指控系統(tǒng)。與傳統(tǒng)艦載指控系統(tǒng)相比,新型艦載指控系統(tǒng)不但要具有作為獨(dú)立平臺(tái)單獨(dú)執(zhí)行作戰(zhàn)任務(wù)能力,還要能夠進(jìn)行編隊(duì)、護(hù)航等多兵種協(xié)同作戰(zhàn),這就要求指控系統(tǒng)具備動(dòng)態(tài)可配置、可重用、可功能互操作等特性[2~3],對(duì)艦載指控系統(tǒng)的集成能力和水平提出了更高的要求。本文分析服務(wù)總線的體系構(gòu)架和實(shí)時(shí)服務(wù)總線的模型,探討了如何在艦載指控領(lǐng)域?qū)嵤┗诜?wù)總線的業(yè)務(wù)集成方法。
服務(wù)總線是面向服務(wù)構(gòu)架的基礎(chǔ)設(shè)施和實(shí)現(xiàn)平臺(tái),充當(dāng)連接和集成各種實(shí)時(shí)/非實(shí)時(shí)應(yīng)用系統(tǒng)消息總線,實(shí)施了必要抽象層將定義服務(wù)的消息轉(zhuǎn)化成可供業(yè)務(wù)構(gòu)件處理的數(shù)據(jù)。其實(shí)質(zhì)是服務(wù)間的連接框架,核心功能包括了消息機(jī)制、消息轉(zhuǎn)換、消息路由和服務(wù)容器四部分[4~5],如圖1所示。
圖1 服務(wù)總線組成結(jié)構(gòu)圖
1)消息機(jī)制
消息機(jī)制提供管理計(jì)算資源和網(wǎng)絡(luò)通信的機(jī)制,屏蔽分布環(huán)境復(fù)雜性和異構(gòu)性,為應(yīng)用程序提供透明的通信服務(wù)。服務(wù)總線的消息機(jī)制采用通信通道抽象服務(wù)之間的消息通信,可支持兩種通信模式:多對(duì)多的發(fā)布/訂閱和點(diǎn)到點(diǎn)的請(qǐng)求/響應(yīng)的消息模式。
發(fā)布/訂閱是異步消息傳遞模式,發(fā)布者發(fā)布的消息可傳遞給多個(gè)訂閱者。在發(fā)布/訂閱模式中,首先訂閱者將訂閱信息發(fā)布到服務(wù)總線,發(fā)布者在發(fā)布消息后,服務(wù)總線將消息轉(zhuǎn)發(fā)給相關(guān)訂閱者。發(fā)布/訂閱方式一般通過(guò)主題樹(shù)實(shí)現(xiàn)。主題樹(shù)以消息發(fā)布者為根接點(diǎn),父子結(jié)點(diǎn)之間表示了一種發(fā)布/訂閱關(guān)系。每個(gè)父結(jié)點(diǎn)將消息發(fā)布給其子結(jié)點(diǎn),每個(gè)子結(jié)點(diǎn)可以選擇接受或拒絕來(lái)自父結(jié)點(diǎn)的所有消息。
請(qǐng)求/響應(yīng)模式是服務(wù)提出請(qǐng)求,其它服務(wù)響應(yīng)的模式,每個(gè)消息僅傳遞給一個(gè)消費(fèi)者。它可以是同步也可以是異步的。同步方式中,請(qǐng)求方等待響應(yīng)以進(jìn)行后續(xù)操作;異步方式中,請(qǐng)求方無(wú)需等待響應(yīng)消息。請(qǐng)求/回復(fù)模式可以有單向/雙向兩種消息通道。單向通道只傳遞請(qǐng)求或響應(yīng)消息。雙向通道中一個(gè)通道可同時(shí)傳遞請(qǐng)求和響應(yīng)消息。請(qǐng)求/響應(yīng)一般通過(guò)隊(duì)列實(shí)現(xiàn)。每個(gè)服務(wù)都可建立其請(qǐng)求和響應(yīng)隊(duì)列。
2)消息轉(zhuǎn)換
連接在總線上的服務(wù)種類很多,可能采用不同的消息協(xié)議,其對(duì)于信息的需求也不同,例如兩個(gè)通訊的服務(wù)A 采用時(shí)間格式是“YYYY-MM-DD”,而B(niǎo)采用“MM-DD-YYYY”。因此需要對(duì)消息進(jìn)行轉(zhuǎn)換。消息轉(zhuǎn)換包括消息通信協(xié)議的橋接和消息內(nèi)容轉(zhuǎn)換。協(xié)議橋接實(shí)現(xiàn)不能直接通訊的協(xié)議之間消息的傳遞,內(nèi)容轉(zhuǎn)換支持對(duì)不同消息內(nèi)容的轉(zhuǎn)換。
3)消息路由
消息路由是分析服務(wù)傳遞的步驟,建立傳遞線路和規(guī)則,并逐步傳遞消息的過(guò)程。ESB可根據(jù)消息內(nèi)容將其由提供者傳遞到接受者。消息路由主要包括路由線路和路由規(guī)則兩個(gè)部分。
路由線路描述了服務(wù)將要發(fā)送的地址和路由規(guī)則,包含在消息的元數(shù)據(jù)中。它分為不帶分支判定的簡(jiǎn)單消息線路和包括分支、判定、條件等執(zhí)行過(guò)程的復(fù)雜消息線路。簡(jiǎn)單消息線路上的各個(gè)服務(wù)結(jié)點(diǎn)順序執(zhí)行;復(fù)雜處理過(guò)程在復(fù)雜的路由中,需要支持流程分離、流程聚合以及復(fù)雜分支判定等多種處理機(jī)制。
路由規(guī)則多采用分布式的管理方式,即規(guī)則分散在各個(gè)服務(wù)節(jié)點(diǎn),由該節(jié)點(diǎn)的服務(wù)容器管理。路由規(guī)則定義了消息傳遞和路由線路的選擇策略,例如需要滿足的前提條件、路由時(shí)間延遲要求、可允許的失敗連接的次數(shù)等。
4)服務(wù)容器
服務(wù)容器是將各種類型的軟件組件或應(yīng)用,封裝成可支持標(biāo)準(zhǔn)通訊協(xié)議(如JMS、JBI、JCA、SOAP等)的服務(wù),并抽象成一個(gè)端點(diǎn),連接到總線上的組件。服務(wù)容器既可以封裝用戶應(yīng)用軟件,也可以封裝服務(wù)總線的基礎(chǔ)服務(wù)[6]。
通過(guò)服務(wù)容器,可以實(shí)現(xiàn)對(duì)軟件的局部管理和全局管理相結(jié)合的方式。局部管理是服務(wù)容器對(duì)其所封裝的軟件的管理,包括生命周期管理、連接管理等。服務(wù)容器屏蔽了軟件的異構(gòu)性,使得總線的基礎(chǔ)服務(wù)對(duì)每個(gè)特定的服務(wù)軟件透明。
Java業(yè)務(wù)集成(Java business integration,JBI)是JCP 制定的Java 平臺(tái)的ESB 標(biāo)準(zhǔn)化技術(shù)規(guī)范[7]。JBI中定義了兩種組件:綁定組件(Binding Components,BC)和 服 務(wù) 引 擎(Service Engine,SE)。綁定組件用于根據(jù)特定協(xié)議和傳輸器發(fā)送和接收消息,如HTTP/Web Service、JMS、FTP等。服務(wù)引擎實(shí)現(xiàn)業(yè)務(wù)邏輯,編排整合各種服務(wù)。綁定組件把消息在特定協(xié)議的格式和規(guī)格化格式之間進(jìn)行轉(zhuǎn)換,使JBI系統(tǒng)只需處理規(guī)格化消息,從而把JBI系統(tǒng)與特定協(xié)議分離[8~9]。
JBI給出了服務(wù)總線系統(tǒng)的接口和交互標(biāo)準(zhǔn),但并沒(méi)有給出具體的實(shí)現(xiàn)方法,特別是如何應(yīng)付高并發(fā)的業(yè)務(wù)請(qǐng)求。一些基于JBI的服務(wù)總線系統(tǒng)采用部署集群的方式應(yīng)對(duì)高并發(fā)的業(yè)務(wù)請(qǐng)求,但由于接入總線的外部Web Service服務(wù)本身的處理能力有限,即便再多集群,對(duì)該服務(wù)的調(diào)用仍然是多種業(yè)務(wù)流對(duì)有限資源的競(jìng)爭(zhēng)使用。這種實(shí)現(xiàn)方式?jīng)]有考慮到不同類型的業(yè)務(wù)對(duì)時(shí)效性的要求,當(dāng)系統(tǒng)重載總線發(fā)生業(yè)務(wù)擁塞時(shí),所有的服務(wù)都處于等待狀態(tài),系統(tǒng)服務(wù)質(zhì)量迅速下降。
實(shí)時(shí)服務(wù)總線作為一個(gè)集中式數(shù)據(jù)和服務(wù)交換平臺(tái),需要處理大量的實(shí)時(shí)業(yè)務(wù)。實(shí)時(shí)業(yè)務(wù)對(duì)業(yè)務(wù)的執(zhí)行時(shí)間有明確的時(shí)間約束。實(shí)時(shí)服務(wù)總線應(yīng)具備實(shí)時(shí)調(diào)度能力,盡可能地保證每個(gè)任務(wù)滿足它們的時(shí)間約束。一方面對(duì)外部請(qǐng)求做出及時(shí)響應(yīng),另一方面縮短系統(tǒng)平均響應(yīng)時(shí)間,提高系統(tǒng)資源利用率[10]。
為了使服務(wù)總線系統(tǒng)能夠處理實(shí)時(shí)業(yè)務(wù),對(duì)JBI標(biāo)準(zhǔn)進(jìn)行改進(jìn),采用優(yōu)先級(jí)驅(qū)動(dòng)策略,按照業(yè)務(wù)優(yōu)先級(jí)的高低動(dòng)態(tài)分配各類業(yè)務(wù)流的帶寬。擴(kuò)展JBI的標(biāo)準(zhǔn)化消息路由組件,增加下列三個(gè)組件,如表1所示。
表1 三種不同級(jí)別業(yè)務(wù)類型
1)流量整形漏桶組件
該組件位于服務(wù)提供者組件和消息路由組件之間,采用漏桶算法(Leaky Bucket,LB)對(duì)業(yè)務(wù)請(qǐng)求進(jìn)行流量過(guò)濾和整形。如圖2所示,業(yè)務(wù)請(qǐng)求先被輸入一個(gè)緩沖隊(duì)列中,漏桶流控組件根據(jù)系統(tǒng)分配給該業(yè)務(wù)的流量帶寬將業(yè)務(wù)消息放入輸出緩沖隊(duì)列中供消息路由組件分發(fā)。如果業(yè)務(wù)請(qǐng)求因?yàn)閾砣抨?duì)超過(guò)有效時(shí)間,漏桶流控組件直接返回超時(shí)錯(cuò)誤消息給綁定組件。
2)流量?jī)?yōu)先級(jí)調(diào)度組件
該組件位于服務(wù)消費(fèi)者組件或服務(wù)引擎組件和消息路由組件之間。如圖2所示,該組件為每一個(gè)業(yè)務(wù)流建立一個(gè)傳輸隊(duì)列,消息路由將不同的業(yè)務(wù)流消息放入相應(yīng)傳輸隊(duì)列中。調(diào)度組件使用加權(quán)公平隊(duì)列算法(Weighted Fair Queuing,WFO),以分配給該業(yè)務(wù)的帶寬作為權(quán)重調(diào)度各業(yè)務(wù)流,將消息路由至其它服務(wù)消費(fèi)者組件或服務(wù)引擎組件。WFQ和LB算法共同作用保證總線上各業(yè)務(wù)流量的穩(wěn)定。
3)消息路由組件
該組件定時(shí)與流量整形漏桶組件通信,實(shí)時(shí)獲取并記錄各業(yè)務(wù)輸入流量、業(yè)務(wù)超時(shí)和丟棄情況。當(dāng)服務(wù)提供者組件發(fā)生流量擁塞時(shí),該組件能根據(jù)總線當(dāng)前流量情況動(dòng)態(tài)調(diào)整分配各業(yè)務(wù)流帶寬。
圖2 實(shí)時(shí)服務(wù)總線消息處理
根據(jù)艦載指控系統(tǒng)的功能需求及對(duì)其軟件體系結(jié)構(gòu)分析,本文構(gòu)建了“以服務(wù)為核心”的多層次模型;并以縱向和橫向分層表達(dá)方式將艦載指控系統(tǒng)體系結(jié)構(gòu)劃分為:橫向包括了對(duì)象層、構(gòu)件層、服務(wù)層、業(yè)務(wù)服務(wù)層、表示層等五層,以及縱向包括了標(biāo)準(zhǔn)規(guī)范、服務(wù)集成支撐、基礎(chǔ)公共服務(wù)、并行和高可用容錯(cuò)處理框架四部分。該結(jié)構(gòu)基于SOA 的開(kāi)放式系統(tǒng)結(jié)構(gòu)體系,充分體現(xiàn)了面向服務(wù)的“松耦合”、“即插即用”、“靈活組裝”和“柔性重組”等特點(diǎn),能有效提高艦載指控系統(tǒng)的技術(shù)適應(yīng)能力、擴(kuò)展能力、升級(jí)適裝、互操作能力。
圖3 服務(wù)化的艦載指控系統(tǒng)體系結(jié)構(gòu)圖
1)對(duì)象層
對(duì)象是面向?qū)ο缶幊陶Z(yǔ)言中基本組織單元,也是構(gòu)件的組成元素,具有封裝、繼承、多態(tài)等特性。當(dāng)前主流的面向?qū)ο缶幊陶Z(yǔ)言包括了C/C++和JAVA,面向?qū)ο缶幊淌钱?dāng)前成熟的編程方法,可快速搭建構(gòu)件的實(shí)現(xiàn)。
2)構(gòu)件層
構(gòu)件代表了業(yè)務(wù)服務(wù)的具體實(shí)現(xiàn)技術(shù),通過(guò)標(biāo)準(zhǔn)化接口暴露業(yè)務(wù)服務(wù),是艦載指控系統(tǒng)軟件的部署和配置的基本單元。它與具體的實(shí)現(xiàn)技術(shù)相關(guān),當(dāng)前主要的構(gòu)件標(biāo)準(zhǔn)包括了CCM,SCA,OSGi等。
3)服務(wù)層
服務(wù)層是指艦載指控系統(tǒng)服務(wù)集,是艦載指控業(yè)務(wù)邏輯的基本封裝單元。服務(wù)接口描述定義了服務(wù)提供者與使用者間的契約,當(dāng)前服務(wù)接口描述方式包括了WSDL,CORBA IDL等方式。
4)流程層
業(yè)務(wù)服務(wù)層把組合服務(wù)層的各種服務(wù),根據(jù)作戰(zhàn)任務(wù)及作戰(zhàn)流程,按照站位進(jìn)行打包、配置和封裝,以供最終作戰(zhàn)用戶使用。該層對(duì)應(yīng)于指控顯控臺(tái)、武器顯控臺(tái)、情報(bào)顯控臺(tái)等設(shè)備上的軟件功能。
5)表示層
按照“軟硬件分離、數(shù)據(jù)與應(yīng)用分離、顯示與處理分離”的原則,表示層提供標(biāo)準(zhǔn)的人機(jī)操控界面,將需要展現(xiàn)的數(shù)據(jù)展現(xiàn)給操作使用人員。根據(jù)使用需求不同劃分為通用操控界面與實(shí)時(shí)操控界面。通用操控界面為所有非實(shí)時(shí)需求的作戰(zhàn)設(shè)備提供人機(jī)操控與數(shù)據(jù)顯示,通過(guò)解析與控制業(yè)務(wù)層傳送XML數(shù)據(jù)與數(shù)據(jù)處理分離。
6)標(biāo)準(zhǔn)規(guī)范
標(biāo)準(zhǔn)規(guī)范是服務(wù)化體系結(jié)構(gòu)中各層軟件所涉及的標(biāo)準(zhǔn)規(guī)范的集合,包括了對(duì)象層的C/C++、構(gòu)件層的SCA、CCM 和OSGi、服務(wù)層的WSDL和CORBA IDL、流程層的BPEL 以及界面層的Portal Form 等。
7)服務(wù)集成支撐
服務(wù)集成支撐提供服務(wù)運(yùn)行時(shí)的支撐庫(kù)和工具,包括了服務(wù)總線和應(yīng)用服務(wù)器等內(nèi)容。其中服務(wù)總線面向服務(wù)構(gòu)架的基礎(chǔ)設(shè)施和實(shí)現(xiàn)平臺(tái),充當(dāng)連接和集成各種實(shí)時(shí)/非實(shí)時(shí)應(yīng)用系統(tǒng)消息總線,實(shí)施了必要抽象層將定義服務(wù)的消息轉(zhuǎn)化成可供業(yè)務(wù)構(gòu)件處理的數(shù)據(jù),核心功能包括了消息實(shí)時(shí)傳輸、遠(yuǎn)程過(guò)程調(diào)用、服務(wù)注冊(cè)與發(fā)現(xiàn)等。應(yīng)用服務(wù)器是應(yīng)用服務(wù)配置部署和加載的服務(wù)器,是服務(wù)構(gòu)件模型的具體實(shí)施。
8)基礎(chǔ)公共服務(wù)
基礎(chǔ)公共服務(wù)是指開(kāi)發(fā)、集成、管理和監(jiān)控應(yīng)用系統(tǒng)的基礎(chǔ)公共服務(wù)。
9)并行和高可用框架
基于消息傳遞的并行框架支持,通過(guò)帶郵箱的任務(wù)實(shí)現(xiàn)高度并行,消除了對(duì)線程、共享內(nèi)存和鎖機(jī)制等影響并行操作的依賴。
基于服務(wù)總線的艦載指控應(yīng)用系統(tǒng)開(kāi)發(fā)集成過(guò)程如圖4所示,包括了應(yīng)用開(kāi)發(fā)、集成、部署、運(yùn)行和監(jiān)控等五個(gè)過(guò)程,對(duì)應(yīng)了五類系統(tǒng)用戶角色:系統(tǒng)開(kāi)發(fā)人員、系統(tǒng)集成人員、系統(tǒng)部署人員、系統(tǒng)管理人員和系統(tǒng)操作用戶。主要的開(kāi)發(fā)步驟如下:
圖4 艦艇指控系統(tǒng)服務(wù)化軟件開(kāi)發(fā)及部署圖
1)應(yīng)用系統(tǒng)開(kāi)發(fā)
系統(tǒng)開(kāi)發(fā)人員利用構(gòu)件開(kāi)發(fā)工具環(huán)境進(jìn)行單個(gè)應(yīng)用服務(wù)構(gòu)件的開(kāi)發(fā),生成消息、服務(wù)和構(gòu)件的描述文件;
2)應(yīng)用系統(tǒng)集成
系統(tǒng)集成人員利用構(gòu)件集成工具環(huán)境根據(jù)應(yīng)用系統(tǒng)功能對(duì)多個(gè)構(gòu)件進(jìn)行集成,包括應(yīng)用功能組裝、作戰(zhàn)業(yè)務(wù)流程管理和應(yīng)用重組容錯(cuò)等,生成構(gòu)件應(yīng)用組裝描述文件、流程定義文件、重組配置描述文件等;
3)應(yīng)用系統(tǒng)部署
系統(tǒng)部署人員根據(jù)應(yīng)用集成的配置文件,將構(gòu)件化應(yīng)用系統(tǒng)從構(gòu)件庫(kù)中下載、安裝和配置到最終的物理臺(tái)位;
4)應(yīng)用系統(tǒng)運(yùn)行
根據(jù)各個(gè)作戰(zhàn)臺(tái)位的節(jié)點(diǎn)的部署配置信息,啟動(dòng)構(gòu)件化應(yīng)用系統(tǒng)各個(gè)子功能系統(tǒng),使作戰(zhàn)應(yīng)用系統(tǒng)進(jìn)入運(yùn)行狀態(tài);系統(tǒng)操作用戶是構(gòu)件化作戰(zhàn)應(yīng)用系統(tǒng)的最終操作使用人員;
5)應(yīng)用系統(tǒng)監(jiān)控跟蹤
系統(tǒng)管理人員利用應(yīng)用系統(tǒng)跟蹤監(jiān)控軟件對(duì)作戰(zhàn)系統(tǒng)的信息流和控制流進(jìn)行實(shí)時(shí)監(jiān)控并記錄存儲(chǔ),并對(duì)系統(tǒng)運(yùn)行狀況進(jìn)行監(jiān)控與評(píng)價(jià)。
本文針對(duì)艦載指控系統(tǒng)所面臨的易于實(shí)現(xiàn)與集成的實(shí)際作戰(zhàn)需求,構(gòu)建了“以服務(wù)為核心”的多層次體系結(jié)構(gòu)模型,并在此基礎(chǔ)上提出了工程實(shí)施方法及技術(shù)解決方案。研究成果對(duì)實(shí)現(xiàn)具備即插即用、柔性重組、良好的互操作的服務(wù)化艦載指控系統(tǒng),具有重要工程應(yīng)用價(jià)值。
[1]李明,王曉軍.以網(wǎng)絡(luò)為中心的美國(guó)海軍[M].北京:國(guó)防工業(yè)出版社,2008:22-23.
[2]羅雪山,等.指揮信息系統(tǒng)分析與設(shè)計(jì)[M].長(zhǎng)沙:國(guó)防科技大學(xué)出版社,2008:55-56.
[3]張維明,等.信息系統(tǒng)建模技術(shù)與應(yīng)用[M].北京:電子工業(yè)出版社,1997:44-45.
[4]楊芙清,梅宏,李克勤.軟件復(fù)用與軟件構(gòu)件技術(shù)[J].電子學(xué)報(bào),1999,27(2):68-75.
[5]邵歡慶,康建初.企業(yè)服務(wù)總線的研究與應(yīng)用[J].計(jì)算機(jī)工程,2007,32(2):220-222.
[6]邢少敏,周伯生.SOA 研究進(jìn)展[J].計(jì)算機(jī)科學(xué),2008,135(19):19-21.
[7]李明.基于CORBA 的分布式MVC 軟件體系結(jié)構(gòu)[J].計(jì)算機(jī)工程與科學(xué),2008,30(5):95-97.
[8]張偉寧,劉列根,張宇.基于消息傳遞的ESB 的研究與應(yīng)用[J].微計(jì)算機(jī)信息,2008,24(9):18-20.
[9]鐘山,岳祥.WFQ 流量調(diào)度算法研究[J].光通信研究,2006,32(5):16-18.
[10]彭政,聶瑞華,李飛.基于ServiceMix的SOA 架構(gòu)的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與科學(xué),2009,31(4):153-156.