呂廣,劉雨坤,劉 陶
(中國航空工業集團公司 西安航空計算技術研究所,陜西 西安 710000)
在分布式系統中,通信中間件是整個系統架構的核心技術,主要用于解決2方面的問題,一是解決不同子系統間的通信問題,屏蔽不同子系統間的差異為用戶提供統一的通信接口;二是提供一種一致的方式,支持不同子系統間的交互[1]。分布式系統可按照集成程度進行分類:客戶端服務器模式,一個網絡應用由一個服務器組成,負責運行應用程序并使得其對遠程程序可用,客戶端可以發送請求給服務器,由服務器執行相應操作并返回執行結果;企業應用集成模型。該模型中,應用服務較為復雜,可對外提供獨立的服務,不同的服務之間可以直接進行通信[2]。
為了滿足不同的需求,形成了多種技術。例如:遠程過程調用(RPC)[3]、遠程方法調用(RMI),面向消息的中間件(MOM),公共對象請求代理體系結構(Common Object Request Broker Architecture,CORBA)[4]和數據分發服務(Data Distribution Service,DDS)[5]等。
還有許多集成度較高的中間件軟件,例如:IBM ESB、Microsoft ESB、TARS,ServiceMix等。本文基于對上述技術的分析與研究,提出面向嵌入式領域的分布式軟總線技術方案。
軟件模塊化、功能服務化已經成為國際上武器裝備發展的趨勢,軟件提供的能力不再局限于某個單一的節點,而是通過網絡覆蓋到整個分布式系統之中。軟件模塊化、功能服務化的技術在國外發達國家早已開展了前期研究。
軟件通信體系結構(SCA)是一種開放式體系結構框架,可以指導設計師如何使硬件和軟件各部分協調工作,是實現通信平臺的組件可移植性、可互換性、互操作性、軟件重用性、體系結構可縮放性的一種標準。
未來機載能力環境(Future Airborne Capability Environment,FACE)技術,定義了通用的機載運行環境用以支持整個航空系統軟件運行,還定義了模塊化、功能服務化的軟件組件的實現方式,提升組件的可移植性、重用性。
針對分布式技術、軟件模塊化技術以及功能服務化技術衍生的通信、互操作需求以及嵌入式領域對實時性、服務質量、組網方式以及服務調用方式的特殊要求,本文將基于DDS構建面向嵌入式領域的分布式軟總線。
軟總線的設計是參照國外FACE標準中對傳輸段的要求進行的,FACE框架示如圖1所示。

圖1 FACE框架
操作系統段承載著不同的操作系統、運行時、框架接口,并為其他段的所有軟件提供接口,如任務管理、任務間同步與通信管理、通信端口管理、存儲管理、時間管理、健康監控等。
I/O服務段為平臺指定服務段訪問操作系統設備驅動中的數據提供支持。
平臺指定服務段是傳統軟件架構中與平臺專用設備ICD緊耦合的部分,這些軟件的構建有利于提高可移植組件段中組件的可移植性。
傳輸服務段中的組件和服務為可移植組件段和平臺指定服務段之間以及可移植組件段或平臺指定服務段中不同的組件之間的數據傳輸提供支持。
可移植組件段由一組可移植組件和公共服務組成,協同運行實現系統需要的平臺級能力。
面向嵌入式領域的分布式軟總線由2部分組成,基于發布訂閱的數據分發服務和基于請求應答的互操作總線。其中基于發布訂閱的數據分發服務是基礎,具備Qos管理能力、數據轉換能力、配置能力;基于請求應答的互操作總線則是在發布訂閱機制的基礎上通過構建遠程服務的調用過程。
基于發布訂閱的數據分發服務為航電系統提供完整的分布式通信解決方案,在商用軟件產品的基礎上進行功能的擴展,包括:傳輸段接口封裝、傳輸插件設計與封裝、操作系統適配以及配置工具功能擴展。
基于發布訂閱的數據分發服務具有以下優勢:(1)有效地實現了應用與網絡協議的解耦,為應用提供實時透明的傳輸服務;(2)能夠感知節點的動態接入與退出,在系統重構以及動態組網環境下具有明顯優勢;(3)整個網絡拓撲形態中不存在中心節點,不存在單點失效的問題;(4)提供了多種服務質量如:可靠傳輸、所有權選擇、基于時間的過濾等,能夠直接應用于網絡不穩定、冗余備份、周期數據傳輸等特殊的應用場景中,應用程序無需進行改動,只需調整服務質量的配置即可,提升了應用開發效率;(5)提供了有效的工具用于工程實踐,形成了應用間邏輯關系到網絡層物理關系的有效映射。
該架構包括傳輸段接口、數據分發服務(DDS)、操作系統以及配置工具4個部分。
(1)傳輸段接口。參照FACE標準對原有DDS接口進行了封裝,簡化DDS的初始化過程,使數據分發的操作簡單易行。
(2)數據分發服務是該系統的重要組成部分,支持以數據為中心的發布訂閱以及發布訂閱相關的服務質量。在擴展過程中,采用適配器模式設計了傳輸插件用于支持多種不同網絡協議。
(3)操作系統。目前基于發布訂閱的數據分發服務可支持WindowsXP和天脈系列操作系統,還可擴展。
(4)配置工具。有效地解決了ICD文件與主題定義文件之間的轉換,提升了航電應用開發效率,能夠生成DDS所需的節點互聯關系配置信息、傳輸段配置、主題定義文件。
經典的互操作總線包括服務提供者、服務請求者以及服務注冊中心。服務請求者作為一個應用程序組件、一個功能組件,可以是一個獨立的結構也可以由幾個組件組裝而成。當需要某一服務時,向服務代理者發起查詢請求,執行相應功能。服務注冊中心用于管理服務,是服務發現的支持者,允許請求者查找服務提供者的接口。服務提供者實現具體的服務,通過數據總線將自己的服務和接口信息等發送到服務代理者,以便服務請求者可以發現和訪問。
本文在數據分發服務和利用在發布訂閱通信機制的基礎上,建立基于請求應答的互操作總線。相較于傳統模型,基于請求應答的互操作總線,在主題與服務之間建立一對一的關系,服務的發現過程通過主題的發布訂閱過程實現,不必建立獨立的服務注冊中心,減少了服務查詢過程,在執行遠程調用時能夠直接將請求發送到服務端,提升了服務執行效率。其軟件架構如圖2所示。

圖2 基于請求應答的互操作總線方案
服務請求端發送請求命令執行某種服務,并接收執行結果。服務執行端用于接收請求命令,執行服務,返回執行結果。
基于發布訂閱的遠程服務調用需要涉及請求對象和應答對象。請求對象包含服務請求者發送服務請求命令;服務應答讀者接收應答消息。應答對象包含服務請求讀者接收服務請求命令;服務應答者發送服務執行結果的應答消息。
軟總線在工業制造、人工智能、航空航天、物聯網、醫療、金融、交通等多個領域有著廣泛的應用前景,當前國內外在通用領域已有成熟的軟件產品和技術標準,但沒有嵌入式的解決方案。本文提出的面向嵌入式領域的分布式軟總線解決方案,既考慮了分布式通信的需求又提供了遠程過程調用的能力,充分滿足了嵌入式場景中互聯互操作的需要,后續可在異構通信、組網方面開展進一步的研究。