張衛中
(上海瀚訊信息技術股份有限公司,上海,200335)
在這個信息技術快速發展的時代,物聯網、大數據也伴隨這個時代而興起,信息大融合使得構建信息系統的邏輯架構越來越復雜。分布式系統是其組件分布在連網的計算機上,組件之間通過傳遞消息進行通信和動作協調的系統[1],分布式系統是解決復雜信息系統的一個重要技術手段。在分布式系統架構里,中間件是介于操作系統和應用軟件之間的軟件層[2],使用中間件可以將操作系統和異構物理網絡視作“透明”層,為上層應用軟件提供規范接口,中間件必須具備高并發連接、低延遲傳遞、高可靠交互以及易于系統架構伸縮等特點才能為分布式系統提供支撐。
ZeroMQ[3]是一個開源的通用消息傳遞庫,支持多種傳輸方式上多種消息傳遞模式。它是零代理的、零延遲、零成本和零管理[3],不是單獨的服務或程序,僅是一個消息庫,不同于RabbitMQ、ActiveMQ、MSMQ和Kafka消息中間件作為分布式的消息代理服務需要復雜地安裝部署,也不同于現有主流的數據分發服務[4](Data Distribute Service,DDS)產品RTI Connext DDS、Vortex DDS、Core DDS等已經商業化[5]。系統設計者直接把某種貨架產品作為獨立的服務軟件應用于分布式系統,使得系統的生命周期對某產品產生依賴,影響信息系統的網絡安全和靈活伸縮。ZeroMQ能夠有效解決分布式系統節點通信普遍存在的開銷大、延遲高、配置復雜等問題,減少網絡通信效率不高對整個分布式系統性能的影響[6]。ZeroMQ在時延和吞吐量方面比其它消息中間件都有顯著的性能表現,可以達到微秒級時延和百萬級吞吐量[7-9],僅受限于實際應用網絡帶寬和交換設備性能。
本文提出對ZeroMQ的SRC庫源碼進行二次開發,在多播傳遞方式上采用發布/訂閱的消息傳遞模式,構造本地數據重構和共享虛擬池,引入DDS的數據實體域和主題的概念,以此構建可復用數據分發組件(下文簡稱ZMQDDS)。將組件嵌入分布式各個子系統,實現計算機進程間和不同計算機節點間的數據分發,組合子系統間形成軟總線式網絡結構。如此使得分布式系統不依賴于第三方軟件,減少復雜地安裝部署工作,易于系統架構擴展,以此構建靈活、高效的數據分發組件支持項目實際應用。
實現ZMQDDS支持計算機進程間和不同計算機節點間的數據交互。在數據發布/訂閱層與應用層之間,對共享數據的本地重構,以類的形式對數據發布/訂閱層提供的服務進行了封裝,讓應用層可以快速地訪問數據[10]。支持對數據實體按照域或主題管理,支持相關參數靈活配置。主要模塊包括域管理、主題管理、數據分發、數據監視、節點發現等。
(1)域管理:管理業務節點加入域和退出域。數據實體按照域為基本區分單元進行數據處理,每個實體必須從屬于某一個域,且只能在相同域中與其它實體進行交互。
(2)主題管理:實現業務節點對主題發布和取消發布、對主題訂閱和取消訂閱等。發布/訂閱傳遞按照主題進行數據匹配,一個域里的每個主題有各自唯一的標識,并以該標識進行實體發布,可以通過不同實例發布相同主題的數據樣本。發布數據過程總是指向一個明確的主題。訂閱者是通過主題請求匹配的數據。
(3)數據分發:實現主題數據分發,能夠實時向訂閱者發送業務主題,主題內容為二進制流格式,限制單個業務主題容量最大64kB以利于保持低時延、高吞吐量的性能。實現從軟總線上獲取主題內容。
(4)數據監視:實現獲取系統內發布/訂閱的主題信息,與數據分發模塊形成支持1:1、1:N、N:M的通信[11]。支持監視業務主題收發次數統計、網絡流量等信息。
(5)節點發現:實現對具有相同域名的節點連接管理,實現節點間P2P連接,支持節點間可插拔式框架便于系統架構靈活伸縮。
按照圖1業務模型采用QT4.8.6進行開發設計以便于跨系統應用,以ZeroMQ的SRC源碼的為基礎構建動態庫工程,引入TinyXML源碼庫支持結構化參數靈活配置。新增自定義類:高級消息隊列管理(AMQ_DDS)作為組件對外接口的初始化、加入或離開域、數據監聽、數據分發等;消息結構(MSG_DEFINE)包含消息類型、分發數據標識、傳輸消息標識、多播消息標識等;數據隊列管理(DATA_QUEUE)方便數據緩存插入、刪除、提取等操作;域管理(DDS_DOMAIN)控制發布、取消發布、訂閱、取消訂閱、數據緩存等;網絡節點發現(NODE_FINDER)控制多播配置參數、綁定服務、定時器以及其它類等。重構ctx類增加監聽、加載結構化參數配置文件等。重構reaper類以控制域和主題管理、緩存管理、數據分發和節點發現等。軟件類設計關系圖如圖2所示(此圖中箭頭為引用關系)。

圖1 數據分發業務模型

圖2 軟件類關系圖
開發完成組件使得ZMQDDS與ZeroMQ類似的內部數據共享機制,其內部操作I/O都是異步的,調用AMQ_DDS的主線程不會被阻塞。如圖3所示。

圖3 內部數據模型圖
ZMQDDS在射頻信號數據采集系統(下文簡稱采集系統)中得到應用。采集系統主要實現對多臺設備端機采集的信號數據實時處理和本地文件存儲,對實時處理能力、吞吐量和穩定性要求較高。采集系統采用分布式架構設計,采用VS2012+QT4.8.6開發設計各子系統引用ZMQDDS組件以支持多個業務主題的數據分發,系統主要包括顯控操作軟件、數據融合服務、綜合管理軟件、通信服務、地圖態勢等軟件,及擴展的其它輔助軟件。系統架構如圖4所示:

圖4 系統架構示意圖
將多臺信號采集端機實時偵查到的射頻信號數據通過通信服務接入采集系統后再分發至其它子系統,且子系統之間也有數據相互發布/訂閱。數據融合服務訂閱實時信號數據和GPS數據進行融合處理后再發布融合結果,顯控操作軟件展示單/多機融合結果數據、脈沖數據、載荷狀態等,地圖態勢軟件訂閱GPS數據顯示設備軌跡等,綜合管理軟件將設定的主題參數做本地存儲,其它輔助軟件是根據需求擴展的子系統以支持其它業務。在多個場景試驗過程中,采集系統夠應對信號數據實時高速處理和存儲,并能夠長時間保持穩定運行。
采集系統對實時數據轉發的傳輸能力、傳輸時延要求較高。通過信號源仿真設備與多臺信號采集端機模擬多路雷達信號對采集系統進行傳輸能力和時延測試,該系統傳輸結構化單元消息大小1kB,采集系統子系統各席位(Windows10,i7CPU@2.6GHz,8GDDR3內存)組網配置千兆網絡環境。擴展設計GPS輔助軟件引用ZMQDSS組件 采集系統在轉發信號數據、數據融合及數據存儲等工作的同時,通過GPS輔助軟件向采集系統發布兩次連續發送1000條和8000條的不同位置的GPS消息(1kB/條),根據數據融合服務統計和地圖態勢GPS點均勻連續顯示,測試沒有發生消息丟失現象。GPS輔助軟件直接從采集系統訂閱最大消息包(8kB)測試時延,結果顯示時延在56μs左右。如圖5所示。

圖5 采集系統時延測試
針對復雜信息系統實際應用中的問題進行思考,本文通過對分布式系統、數據分發服務技術、ZeroMQ技術特點等綜合研究,設計實現可復用分布式數據分發組件,以減少中間件復雜地安裝部署工作,有效改善系統開銷占比,支持跨系統應用,易于系統架構靈活伸縮。通過性能測試以及多場景應用試驗,采集系統能夠長時間保持穩定運行,驗證了ZMQDDS的可用性,不足之處就是對網絡帶寬要求較高。隨著不斷深入研究,將會對研究成果不斷完善和改進。