呂廣,劉雨坤,劉 陶
(中國航空工業(yè)集團公司 西安航空計算技術(shù)研究所,陜西 西安 710000)
在分布式系統(tǒng)中,通信中間件是整個系統(tǒng)架構(gòu)的核心技術(shù),主要用于解決2方面的問題,一是解決不同子系統(tǒng)間的通信問題,屏蔽不同子系統(tǒng)間的差異為用戶提供統(tǒng)一的通信接口;二是提供一種一致的方式,支持不同子系統(tǒng)間的交互[1]。分布式系統(tǒng)可按照集成程度進(jìn)行分類:客戶端服務(wù)器模式,一個網(wǎng)絡(luò)應(yīng)用由一個服務(wù)器組成,負(fù)責(zé)運行應(yīng)用程序并使得其對遠(yuǎn)程程序可用,客戶端可以發(fā)送請求給服務(wù)器,由服務(wù)器執(zhí)行相應(yīng)操作并返回執(zhí)行結(jié)果;企業(yè)應(yīng)用集成模型。該模型中,應(yīng)用服務(wù)較為復(fù)雜,可對外提供獨立的服務(wù),不同的服務(wù)之間可以直接進(jìn)行通信[2]。
為了滿足不同的需求,形成了多種技術(shù)。例如:遠(yuǎn)程過程調(diào)用(RPC)[3]、遠(yuǎn)程方法調(diào)用(RMI),面向消息的中間件(MOM),公共對象請求代理體系結(jié)構(gòu)(Common Object Request Broker Architecture,CORBA)[4]和數(shù)據(jù)分發(fā)服務(wù)(Data Distribution Service,DDS)[5]等。
還有許多集成度較高的中間件軟件,例如:IBM ESB、Microsoft ESB、TARS,ServiceMix等。本文基于對上述技術(shù)的分析與研究,提出面向嵌入式領(lǐng)域的分布式軟總線技術(shù)方案。
軟件模塊化、功能服務(wù)化已經(jīng)成為國際上武器裝備發(fā)展的趨勢,軟件提供的能力不再局限于某個單一的節(jié)點,而是通過網(wǎng)絡(luò)覆蓋到整個分布式系統(tǒng)之中。軟件模塊化、功能服務(wù)化的技術(shù)在國外發(fā)達(dá)國家早已開展了前期研究。
軟件通信體系結(jié)構(gòu)(SCA)是一種開放式體系結(jié)構(gòu)框架,可以指導(dǎo)設(shè)計師如何使硬件和軟件各部分協(xié)調(diào)工作,是實現(xiàn)通信平臺的組件可移植性、可互換性、互操作性、軟件重用性、體系結(jié)構(gòu)可縮放性的一種標(biāo)準(zhǔn)。
未來機載能力環(huán)境(Future Airborne Capability Environment,FACE)技術(shù),定義了通用的機載運行環(huán)境用以支持整個航空系統(tǒng)軟件運行,還定義了模塊化、功能服務(wù)化的軟件組件的實現(xiàn)方式,提升組件的可移植性、重用性。
針對分布式技術(shù)、軟件模塊化技術(shù)以及功能服務(wù)化技術(shù)衍生的通信、互操作需求以及嵌入式領(lǐng)域?qū)崟r性、服務(wù)質(zhì)量、組網(wǎng)方式以及服務(wù)調(diào)用方式的特殊要求,本文將基于DDS構(gòu)建面向嵌入式領(lǐng)域的分布式軟總線。
軟總線的設(shè)計是參照國外FACE標(biāo)準(zhǔn)中對傳輸段的要求進(jìn)行的,FACE框架示如圖1所示。
圖1 FACE框架
操作系統(tǒng)段承載著不同的操作系統(tǒng)、運行時、框架接口,并為其他段的所有軟件提供接口,如任務(wù)管理、任務(wù)間同步與通信管理、通信端口管理、存儲管理、時間管理、健康監(jiān)控等。
I/O服務(wù)段為平臺指定服務(wù)段訪問操作系統(tǒng)設(shè)備驅(qū)動中的數(shù)據(jù)提供支持。
平臺指定服務(wù)段是傳統(tǒng)軟件架構(gòu)中與平臺專用設(shè)備ICD緊耦合的部分,這些軟件的構(gòu)建有利于提高可移植組件段中組件的可移植性。
傳輸服務(wù)段中的組件和服務(wù)為可移植組件段和平臺指定服務(wù)段之間以及可移植組件段或平臺指定服務(wù)段中不同的組件之間的數(shù)據(jù)傳輸提供支持。
可移植組件段由一組可移植組件和公共服務(wù)組成,協(xié)同運行實現(xiàn)系統(tǒng)需要的平臺級能力。
面向嵌入式領(lǐng)域的分布式軟總線由2部分組成,基于發(fā)布訂閱的數(shù)據(jù)分發(fā)服務(wù)和基于請求應(yīng)答的互操作總線。其中基于發(fā)布訂閱的數(shù)據(jù)分發(fā)服務(wù)是基礎(chǔ),具備Qos管理能力、數(shù)據(jù)轉(zhuǎn)換能力、配置能力;基于請求應(yīng)答的互操作總線則是在發(fā)布訂閱機制的基礎(chǔ)上通過構(gòu)建遠(yuǎn)程服務(wù)的調(diào)用過程。
基于發(fā)布訂閱的數(shù)據(jù)分發(fā)服務(wù)為航電系統(tǒng)提供完整的分布式通信解決方案,在商用軟件產(chǎn)品的基礎(chǔ)上進(jìn)行功能的擴展,包括:傳輸段接口封裝、傳輸插件設(shè)計與封裝、操作系統(tǒng)適配以及配置工具功能擴展。
基于發(fā)布訂閱的數(shù)據(jù)分發(fā)服務(wù)具有以下優(yōu)勢:(1)有效地實現(xiàn)了應(yīng)用與網(wǎng)絡(luò)協(xié)議的解耦,為應(yīng)用提供實時透明的傳輸服務(wù);(2)能夠感知節(jié)點的動態(tài)接入與退出,在系統(tǒng)重構(gòu)以及動態(tài)組網(wǎng)環(huán)境下具有明顯優(yōu)勢;(3)整個網(wǎng)絡(luò)拓?fù)湫螒B(tài)中不存在中心節(jié)點,不存在單點失效的問題;(4)提供了多種服務(wù)質(zhì)量如:可靠傳輸、所有權(quán)選擇、基于時間的過濾等,能夠直接應(yīng)用于網(wǎng)絡(luò)不穩(wěn)定、冗余備份、周期數(shù)據(jù)傳輸?shù)忍厥獾膽?yīng)用場景中,應(yīng)用程序無需進(jìn)行改動,只需調(diào)整服務(wù)質(zhì)量的配置即可,提升了應(yīng)用開發(fā)效率;(5)提供了有效的工具用于工程實踐,形成了應(yīng)用間邏輯關(guān)系到網(wǎng)絡(luò)層物理關(guān)系的有效映射。
該架構(gòu)包括傳輸段接口、數(shù)據(jù)分發(fā)服務(wù)(DDS)、操作系統(tǒng)以及配置工具4個部分。
(1)傳輸段接口。參照FACE標(biāo)準(zhǔn)對原有DDS接口進(jìn)行了封裝,簡化DDS的初始化過程,使數(shù)據(jù)分發(fā)的操作簡單易行。
(2)數(shù)據(jù)分發(fā)服務(wù)是該系統(tǒng)的重要組成部分,支持以數(shù)據(jù)為中心的發(fā)布訂閱以及發(fā)布訂閱相關(guān)的服務(wù)質(zhì)量。在擴展過程中,采用適配器模式設(shè)計了傳輸插件用于支持多種不同網(wǎng)絡(luò)協(xié)議。
(3)操作系統(tǒng)。目前基于發(fā)布訂閱的數(shù)據(jù)分發(fā)服務(wù)可支持WindowsXP和天脈系列操作系統(tǒng),還可擴展。
(4)配置工具。有效地解決了ICD文件與主題定義文件之間的轉(zhuǎn)換,提升了航電應(yīng)用開發(fā)效率,能夠生成DDS所需的節(jié)點互聯(lián)關(guān)系配置信息、傳輸段配置、主題定義文件。
經(jīng)典的互操作總線包括服務(wù)提供者、服務(wù)請求者以及服務(wù)注冊中心。服務(wù)請求者作為一個應(yīng)用程序組件、一個功能組件,可以是一個獨立的結(jié)構(gòu)也可以由幾個組件組裝而成。當(dāng)需要某一服務(wù)時,向服務(wù)代理者發(fā)起查詢請求,執(zhí)行相應(yīng)功能。服務(wù)注冊中心用于管理服務(wù),是服務(wù)發(fā)現(xiàn)的支持者,允許請求者查找服務(wù)提供者的接口。服務(wù)提供者實現(xiàn)具體的服務(wù),通過數(shù)據(jù)總線將自己的服務(wù)和接口信息等發(fā)送到服務(wù)代理者,以便服務(wù)請求者可以發(fā)現(xiàn)和訪問。
本文在數(shù)據(jù)分發(fā)服務(wù)和利用在發(fā)布訂閱通信機制的基礎(chǔ)上,建立基于請求應(yīng)答的互操作總線。相較于傳統(tǒng)模型,基于請求應(yīng)答的互操作總線,在主題與服務(wù)之間建立一對一的關(guān)系,服務(wù)的發(fā)現(xiàn)過程通過主題的發(fā)布訂閱過程實現(xiàn),不必建立獨立的服務(wù)注冊中心,減少了服務(wù)查詢過程,在執(zhí)行遠(yuǎn)程調(diào)用時能夠直接將請求發(fā)送到服務(wù)端,提升了服務(wù)執(zhí)行效率。其軟件架構(gòu)如圖2所示。
圖2 基于請求應(yīng)答的互操作總線方案
服務(wù)請求端發(fā)送請求命令執(zhí)行某種服務(wù),并接收執(zhí)行結(jié)果。服務(wù)執(zhí)行端用于接收請求命令,執(zhí)行服務(wù),返回執(zhí)行結(jié)果。
基于發(fā)布訂閱的遠(yuǎn)程服務(wù)調(diào)用需要涉及請求對象和應(yīng)答對象。請求對象包含服務(wù)請求者發(fā)送服務(wù)請求命令;服務(wù)應(yīng)答讀者接收應(yīng)答消息。應(yīng)答對象包含服務(wù)請求讀者接收服務(wù)請求命令;服務(wù)應(yīng)答者發(fā)送服務(wù)執(zhí)行結(jié)果的應(yīng)答消息。
軟總線在工業(yè)制造、人工智能、航空航天、物聯(lián)網(wǎng)、醫(yī)療、金融、交通等多個領(lǐng)域有著廣泛的應(yīng)用前景,當(dāng)前國內(nèi)外在通用領(lǐng)域已有成熟的軟件產(chǎn)品和技術(shù)標(biāo)準(zhǔn),但沒有嵌入式的解決方案。本文提出的面向嵌入式領(lǐng)域的分布式軟總線解決方案,既考慮了分布式通信的需求又提供了遠(yuǎn)程過程調(diào)用的能力,充分滿足了嵌入式場景中互聯(lián)互操作的需要,后續(xù)可在異構(gòu)通信、組網(wǎng)方面開展進(jìn)一步的研究。