盧 飛,程培星,陰啟玉
(1.海裝電子部,北京 100841;2.江蘇自動(dòng)化研究所,江蘇 連云港 222006)
當(dāng)前以“信息化”為核心的世界新軍事變革浪潮席卷全球,獲取信息優(yōu)勢(shì)、進(jìn)而取得決策優(yōu)勢(shì)和最終的行動(dòng)優(yōu)勢(shì)是奪取未來(lái)信息化戰(zhàn)爭(zhēng)勝利的關(guān)鍵。在相應(yīng)軍事系統(tǒng)構(gòu)建中,面向服務(wù)架構(gòu) SOA(Service Orient Architecture)能將廣泛分布的松耦合的各種系統(tǒng)組成信息服務(wù)網(wǎng)絡(luò),為終端用戶提供所需的各種服務(wù)和數(shù)據(jù)[1]。但是,軍用通信環(huán)境是一個(gè)包含戰(zhàn)略、戰(zhàn)役及戰(zhàn)術(shù)互聯(lián)網(wǎng)的復(fù)雜多系統(tǒng)異構(gòu)通信網(wǎng)絡(luò),其中,既有地面光纖寬帶骨干網(wǎng),又有衛(wèi)星通信、無(wú)線電臺(tái)通信和戰(zhàn)術(shù)互聯(lián)網(wǎng)等其他通信網(wǎng)絡(luò)。而現(xiàn)有的SOA技術(shù)實(shí)現(xiàn)主要還是針對(duì)互聯(lián)網(wǎng)環(huán)境的,并未考慮軍用網(wǎng)絡(luò)環(huán)境的復(fù)雜性,尤其是目前 SOA技術(shù)主要采用BPEL(Business Process Execution Language)作為業(yè)務(wù)邏輯整合標(biāo)準(zhǔn)實(shí)現(xiàn)業(yè)務(wù)流程的動(dòng)態(tài)配置和發(fā)布,其標(biāo)準(zhǔn)規(guī)范是基于中心式的,需要大量的數(shù)據(jù)流和控制流信息的通信,難以適應(yīng)無(wú)線電臺(tái)、數(shù)據(jù)鏈等窄帶通信信道要求,無(wú)法滿足網(wǎng)絡(luò)化指控系統(tǒng)的服務(wù)集成要求。
美軍在20世紀(jì)90年代末提出了建立全球信息柵格(Global Information Grid,GIG),實(shí)現(xiàn)全球范圍的信息優(yōu)勢(shì),即在正確的時(shí)間,將正確的信息以正確的形式安全可靠地傳送給正確的接收者,同時(shí)壓制敵方謀求同樣能力的企圖。全球信息柵格是一種可互操作的聯(lián)合電子信息系統(tǒng),利用信息技術(shù)和創(chuàng)新的概念,實(shí)現(xiàn)多種綜合信息系統(tǒng)與傳感器系統(tǒng)、武器系統(tǒng)在更多功能領(lǐng)域、更大空間范圍、更多作戰(zhàn)層次上的綜合集成,在網(wǎng)絡(luò)上提供信息與服務(wù),使用戶能夠根據(jù)所需主動(dòng)提取而不是強(qiáng)推信息和服務(wù)[2]。
但是,全球信息柵格也面臨著許多方面的技術(shù)挑戰(zhàn)。通信帶寬容量在戰(zhàn)略、戰(zhàn)役和戰(zhàn)術(shù)級(jí)別都受到嚴(yán)重制約和挑戰(zhàn),特別是戰(zhàn)術(shù)級(jí)的帶寬需要擴(kuò)展才能滿足未來(lái)作戰(zhàn)的信息需求。由于通信帶寬容量的限制,很大程度上降低了信息共享以及系統(tǒng)間互操作的能力,限制了關(guān)鍵信息向指揮系統(tǒng)和武器系統(tǒng)的傳輸,阻礙了作戰(zhàn)空間中時(shí)敏作戰(zhàn)行動(dòng),因此如何有效融合現(xiàn)有的各通信帶寬的信息節(jié)點(diǎn)以及最終各信息節(jié)點(diǎn)形成統(tǒng)一的互操作標(biāo)準(zhǔn)將是GIG發(fā)展的重點(diǎn)。
要實(shí)現(xiàn)作戰(zhàn)要素的動(dòng)態(tài)組合,并能夠根據(jù)不同需要構(gòu)建不同規(guī)模和能力的任務(wù)系統(tǒng),組成指控系統(tǒng)的服務(wù)組件必須具備可組合性,通過(guò)服務(wù)組件之間的組合,可以構(gòu)建新的服務(wù),這個(gè)新的服務(wù)能完成單個(gè)服務(wù)不能完成的任務(wù),滿足用戶特定的需求。在面向服務(wù)架構(gòu)中主要采用 Orchestration形式的組合,Orchestration定義了可執(zhí)行的流程,流程和外界信息交換的順序由Orchestration來(lái)集中控制,其對(duì)應(yīng)的規(guī)范為BPEL[3]。目前其技術(shù)實(shí)現(xiàn)主要采用集中式的信息流處理方法,這樣做使得組合后的服務(wù)成為一個(gè)中心控制端,它負(fù)責(zé)運(yùn)行時(shí)各子服務(wù)的消息關(guān)聯(lián)。各個(gè)子服務(wù)間交互的數(shù)據(jù)都必須通過(guò)這個(gè)中心控制端進(jìn)行轉(zhuǎn)發(fā)、處理,這樣不僅大大降低了業(yè)務(wù)流執(zhí)行效率,而且還浪費(fèi)了大量帶寬。目前,很多軟件架構(gòu)都是基于這種中心式的數(shù)據(jù)流進(jìn)行集成的,包括J2EE、CORBA、Microsoft .NET等。在軍用網(wǎng)絡(luò)環(huán)境中(包含各類低速無(wú)線網(wǎng)絡(luò)),這個(gè)缺點(diǎn)顯得尤其突出,指控系統(tǒng)中很多基于無(wú)線窄帶的應(yīng)用平臺(tái)將無(wú)法適合目前的SOA體系結(jié)構(gòu)[4]。
基于以上原因,本文提出了一種基于分布式數(shù)據(jù)流的指控系統(tǒng)服務(wù)集成方法?;谠摲椒傻闹缚叵到y(tǒng)可以實(shí)現(xiàn)以下目標(biāo):①增強(qiáng)服務(wù)化指控系統(tǒng)的擴(kuò)展性,可以支持軍用異構(gòu)網(wǎng)絡(luò)環(huán)境下的多平臺(tái)系統(tǒng)集成,適應(yīng)各種復(fù)雜的軍事網(wǎng)絡(luò)環(huán)境。②提高服務(wù)化指控系統(tǒng)的執(zhí)行效率,可使集成后的系統(tǒng)執(zhí)行速度和效率更高。③簡(jiǎn)化集成難度,異構(gòu)平臺(tái)下的各個(gè)服務(wù)組件可以在不犧牲擴(kuò)展性和效率的前提下,更加便捷、快速的集成。
為了實(shí)現(xiàn)基于分布數(shù)據(jù)流集成的指控系統(tǒng),本文首先設(shè)計(jì)了服務(wù)組件模型,該組件模型可以有效地提升服務(wù)間的互操作效率。指控的服務(wù)組件模型如圖1所示,它由一個(gè)核心處理部分、一個(gè)輸入事件隊(duì)列、一個(gè)輸出事件隊(duì)列、一個(gè)輸入數(shù)據(jù)容器、一個(gè)輸出數(shù)據(jù)容器組成,其中:
· 核心處理部分是服務(wù)組件的核心功能實(shí)現(xiàn)。它負(fù)責(zé)處理輸入的數(shù)據(jù),并生成相應(yīng)的輸出數(shù)據(jù)。我們通過(guò)適應(yīng)性改造可以把已有的軟件應(yīng)用封裝成服務(wù)核心處理部分。
· 事件是在服務(wù)之間交互的控制流信息。服務(wù)組件的異步運(yùn)行主要通過(guò)事件來(lái)進(jìn)行協(xié)調(diào)控制。其中隊(duì)列結(jié)構(gòu)采用FIFO(first in and first out),即保證按照事件到達(dá)的順序依次進(jìn)行處理,在工程應(yīng)用中可通過(guò)設(shè)置事件流水號(hào)來(lái)確保事件的發(fā)送順序與到達(dá)順序的一致。
· 數(shù)據(jù)容器包含服務(wù)組件的輸入數(shù)據(jù)和輸出數(shù)據(jù)。輸入的數(shù)據(jù)元素可從輸入數(shù)據(jù)容器中獲取,由服務(wù)核心處理部分計(jì)算、處理,其產(chǎn)生的數(shù)據(jù)元素放入到輸出數(shù)據(jù)容器中。
服務(wù)化指控的各軟件模塊按照服務(wù)組件模型的定義進(jìn)行封裝,并發(fā)布到網(wǎng)絡(luò)上。盡管各個(gè)服務(wù)實(shí)現(xiàn)的功能不同,但是所有服務(wù)組件發(fā)布形式都是相同的,因?yàn)樗鼈兒泄餐囊?如事件隊(duì)列和數(shù)據(jù)容器。這就保證了組件之間交互方式是統(tǒng)一的。因此,服務(wù)化指控可以基于標(biāo)準(zhǔn)的模塊進(jìn)行構(gòu)建、重組,大大減少了集成的難度。這里,我們將服務(wù)核心處理部分封裝的部分,即圖1中的灰色部分,稱作服務(wù)封裝。
服務(wù)組件基于服務(wù)核心處理部分,實(shí)現(xiàn)了三個(gè)主要接口函數(shù),將核心處理部分封裝成標(biāo)準(zhǔn)化的服務(wù)組件,接口函數(shù)主要包括:setup( ),execute( ),terminate( )。其中:
· setup( ):主要定義了服務(wù)初始化階段進(jìn)行的操作;
· execute( ):當(dāng)服務(wù)被調(diào)用時(shí),負(fù)責(zé)觸發(fā)服務(wù)的核心處理部分的執(zhí)行,處理時(shí)核心處理部分從輸入數(shù)據(jù)容器中取出待處理數(shù)據(jù),并將結(jié)果放入輸出數(shù)據(jù)容器中;
· terminate( ):當(dāng)服務(wù)終止時(shí)被調(diào)用。
其中每個(gè)接口函數(shù)都包含三個(gè)參數(shù),inputcontainer定義了輸入數(shù)據(jù)容器的引用,outputcontainer定義了輸出數(shù)據(jù)容器的引用,flowid定義了服務(wù)組件所屬的工作流。
基于以上的服務(wù)組件模型,下面定義了服務(wù)組件訪問(wèn)協(xié)議,根據(jù)定義的協(xié)議服務(wù)組件可以進(jìn)行互操作。服務(wù)組件訪問(wèn)協(xié)議通過(guò)一系列的事件來(lái)管理控制流和數(shù)據(jù)流。該協(xié)議是異步和非阻塞的,這就保證了事件的發(fā)送者不需要等待響應(yīng),可以繼續(xù)執(zhí)行其他操作。該協(xié)議是基于XML的分層結(jié)構(gòu)的,與具體的編程語(yǔ)言、操作系統(tǒng)無(wú)關(guān)的。
協(xié)議中與數(shù)據(jù)流調(diào)度相關(guān)的幾個(gè)主要事件如下所示:
· 創(chuàng)建(Service)
創(chuàng)建事件用來(lái)初始化一個(gè)服務(wù)組件,并為服務(wù)組件調(diào)用準(zhǔn)備必要的系統(tǒng)資源。當(dāng)服務(wù)組件初始化完成后返回一個(gè)應(yīng)答。
· 終止(Service)
終止事件將強(qiáng)制終止一個(gè)服務(wù)組件。在終止服務(wù)的時(shí)候?qū)⑨尫欧?wù)組件占用的系統(tǒng)資源。當(dāng)服務(wù)組件終止后,返回一個(gè)應(yīng)答。
· 調(diào)用(Service)
調(diào)用事件將啟動(dòng)一個(gè)服務(wù)組件。在處理調(diào)用事件的時(shí)候,服務(wù)組件的核心處理部分開(kāi)始執(zhí)行。調(diào)用完成后,核心處理部分輸出的數(shù)據(jù)元素將放到輸出數(shù)據(jù)容器中。另外,返回一個(gè)應(yīng)答。
· 數(shù)據(jù)映射(DataElement,SourceService, DestinationService)
數(shù)據(jù)映射事件用來(lái)控制兩個(gè)數(shù)據(jù)容器間的數(shù)據(jù)流,該事件定義了各服務(wù)組件間數(shù)據(jù)流的流向。數(shù)據(jù)映射事件由協(xié)調(diào)各個(gè)服務(wù)組件的組合服務(wù)控制器來(lái)發(fā)送,數(shù)據(jù)元素在服務(wù)組件的數(shù)據(jù)容器間直接交互。數(shù)據(jù)映射事件可以實(shí)現(xiàn)分布式的數(shù)據(jù)流,通過(guò)預(yù)先訂好的事件可以實(shí)現(xiàn)分布式數(shù)據(jù)流的靈活重組,并有效的提高了重組效率。
數(shù)據(jù)映射事件有兩種實(shí)現(xiàn)形式。一種實(shí)現(xiàn)形式是“推事件”,事件將被發(fā)送到源服務(wù)組件,源服務(wù)組件從輸出數(shù)據(jù)容器中獲取數(shù)據(jù)元素,然后將數(shù)據(jù)推送到目的服務(wù)組件中。另一種實(shí)現(xiàn)方式是“拉事件”,事件發(fā)送到目的服務(wù)組件,目的服務(wù)組件從源服務(wù)組件中拉數(shù)據(jù)元素,然后將數(shù)據(jù)放入輸入數(shù)據(jù)容器。
基于前面定義的服務(wù)組件模型以及服務(wù)組件間的訪問(wèn)協(xié)議,我們可以構(gòu)建服務(wù)組件集成架構(gòu)。如圖2所示。
圖2 服務(wù)組件集成架構(gòu)
該架構(gòu)主要由組合服務(wù)控制器、服務(wù)組件目錄及各個(gè)封裝好的服務(wù)組件組成。組合服務(wù)負(fù)責(zé)控制整個(gè)業(yè)務(wù)的執(zhí)行過(guò)程,其根據(jù)預(yù)先定義好的控制流信息,通過(guò)發(fā)送事件來(lái)控制各個(gè)服務(wù)組件間的執(zhí)行流程。服務(wù)組件目錄保存了網(wǎng)絡(luò)中所有服務(wù)組件的詳細(xì)信息,這里邏輯上雖是中心式的,但是可以基于分布式架構(gòu)來(lái)實(shí)現(xiàn)。新的服務(wù)組件只需在服務(wù)組件目錄中注冊(cè)其相應(yīng)信息,并連接到通信網(wǎng)絡(luò)上即可插入到集成架構(gòu)中。
圖3 集中式和分布式數(shù)據(jù)流服務(wù)集成架構(gòu)
通常情況服務(wù)集成框架實(shí)現(xiàn)中,控制流和數(shù)據(jù)流都是集中式管理的,如圖 3(a)所示,組合服務(wù)首先向服務(wù) 1發(fā)送請(qǐng)求信息,然后依次由服務(wù)2、服務(wù)3處理。因?yàn)閿?shù)據(jù)流和控制流沒(méi)有分離,所有的數(shù)據(jù)都必須經(jīng)過(guò)組合服務(wù)轉(zhuǎn)發(fā),額外增加了很多數(shù)據(jù)的通信量,尤其是在軍用通信網(wǎng)絡(luò)中對(duì)通信資源造成了很大的壓力,進(jìn)而影響了系統(tǒng)的性能和可擴(kuò)展性。
如圖3(b)所示,說(shuō)明了本文中的分布式數(shù)據(jù)流服務(wù)集成架構(gòu)。圖中,控制流和數(shù)據(jù)流是分離的,控制流負(fù)責(zé)事件的處理和服務(wù)組件的運(yùn)行狀態(tài)控制,數(shù)據(jù)流主要涉及數(shù)據(jù)容器間的數(shù)據(jù)交換和服務(wù)組件的數(shù)據(jù)處理。組合服務(wù)通過(guò)控制流建立了服務(wù)組件間的數(shù)據(jù)流直接交互通道。因此,圖3(b)中的服務(wù)1和服務(wù)2,服務(wù)2和服務(wù)3可以直接交換數(shù)據(jù),而不需要像圖3(a)中的集中式數(shù)據(jù)流,必須通過(guò)組合服務(wù)。通過(guò)分布式的數(shù)據(jù)流,減少了冗余數(shù)據(jù)的發(fā)送,克服了原來(lái)所有數(shù)據(jù)都需要通過(guò)組合服務(wù)帶來(lái)的服務(wù)響應(yīng)時(shí)延大、通信帶寬占用大的弊端。而且,如果經(jīng)過(guò)流程的優(yōu)化,可以使得數(shù)據(jù)盡量在本地進(jìn)行處理,這樣可以進(jìn)一步減少數(shù)據(jù)的傳輸量,提高執(zhí)行效率。
為了保證業(yè)務(wù)流程的順利執(zhí)行,分布式數(shù)據(jù)流服務(wù)集成架構(gòu)需要生成向各服務(wù)組件發(fā)送的控制流。首先需要分析組合服務(wù)組件間的數(shù)據(jù)依賴關(guān)系,建立服務(wù)組件間的數(shù)據(jù)依賴圖,最后生成組合服務(wù)控制器發(fā)送的控制流事件依賴圖。
分析上面所示的一段示例代碼,Service3的輸入為A和B,而A和B分別由Service1和Service2生成,所以 Service3在數(shù)據(jù)上依賴于 Service1和Service2的調(diào)用。同理,示例代碼被映射成如圖 4(a)所示的數(shù)據(jù)依賴圖。圖中的節(jié)點(diǎn)代表一個(gè)服務(wù)組件的調(diào)用,每條線代表著服務(wù)組件之間交互的數(shù)據(jù)元素。將圖4(a)中的線轉(zhuǎn)換成數(shù)據(jù)映射事件,就得到了組合服務(wù)的控制流事件依賴圖,如圖 4(b)所示,圖中的每一個(gè)節(jié)點(diǎn)代表的是組合服務(wù)控制器將要發(fā)送的一個(gè)控制事件,圖中的線表示了事件發(fā)送的先后關(guān)系,后一個(gè)事件只有在前一個(gè)事件發(fā)送后才會(huì)發(fā)出,其中調(diào)用事件負(fù)責(zé)調(diào)用服務(wù)組件的 execute( )接口,數(shù)據(jù)映射事件負(fù)責(zé)從源服務(wù)的輸出數(shù)據(jù)容器中取出數(shù)據(jù)發(fā)送到目的服務(wù)的輸入數(shù)據(jù)容器。組合服務(wù)控制器根據(jù)圖4(b)依次發(fā)送控制事件,保證整個(gè)流程的順利執(zhí)行。
本文提出的服務(wù)集成架構(gòu)基于分布式數(shù)據(jù)流模型。該模型允許不同服務(wù)間數(shù)據(jù)的直接交互,比起集中式數(shù)據(jù)處理,特別是當(dāng)傳輸?shù)臄?shù)據(jù)量很大時(shí),分布式的數(shù)據(jù)流模型提供了更好的服務(wù)集成性能和擴(kuò)展性。分布式的數(shù)據(jù)交互有利于充分利用服務(wù)間的帶寬資源,避免集中管理帶來(lái)的通信瓶頸。尤其是當(dāng)組合服務(wù)調(diào)用的構(gòu)件在無(wú)線低帶寬的移動(dòng)平臺(tái)時(shí),傳統(tǒng)的集中式服務(wù)管理將受到很大限制。而基于本文提出的架構(gòu),只有控制流(如遠(yuǎn)端程序的調(diào)用)是中心式的,占用帶寬大的數(shù)據(jù)流則完全是分布式的,減少了對(duì)帶寬的要求。
圖4 控制流事件依賴圖(
基于本文的研究成果,在復(fù)雜的軍用通信環(huán)境下,基于服務(wù)組件模型構(gòu)建的分布式服務(wù)集成架構(gòu)將有效支持服務(wù)組件向各級(jí)作戰(zhàn)平臺(tái)的延伸,可初步實(shí)現(xiàn)軍事信息系統(tǒng)中岸海之間、海上編隊(duì)之間的互操作?;诓煌?guī)模和能力的作戰(zhàn)任務(wù),實(shí)現(xiàn)服務(wù)的多平臺(tái)、跨網(wǎng)絡(luò)組合應(yīng)用,解決了面向服務(wù)架構(gòu)中服務(wù)的組合與應(yīng)用對(duì)低帶寬環(huán)境的適應(yīng)性。
[1]毛新生.SOA原理·方法·實(shí)踐[M].北京:電子工業(yè)出版社,2007.
[2]張培珍,等.美軍全球信息柵格結(jié)構(gòu)研究[J].兵工自動(dòng)化,2009,28(10):65-68.
[3]余浩,等.SOA實(shí)踐[M]. 北京:電子工業(yè)出版社,2009.
[4]周曉明,等.指揮控制系統(tǒng)服務(wù)化研究[J]. 指揮控制與仿真,2010,32(3):12-14,21.