楊 勇,薛化建,任 鴿
1(新疆師范大學計算機科學技術學院,烏魯木齊830054)
2(中國科學院 新疆理化技術研究所,烏魯木齊 830011)
當前,通訊網絡在人類生活中起著重要作用.由于地形地貌多種多樣和人類活動不均衡等情況,單一的通訊網絡無法覆蓋所有的應用場景,因此存在多種不同的通信網絡,用來滿足多樣化的需求.通常,全球移動通信系統(GSM)和碼分多址(CDMA)之類的移動網絡常用于人口繁多地區.出于成本的考慮,GSM和CDMA信號通常不會覆蓋人煙稀少的山區或沙漠地區.天通衛星網絡或北斗衛星網絡通常是沙漠或山區的最佳通信選擇.在中國新疆等地勢惡劣地區,就使用了許多通信網絡,以滿足人們的通訊需求.不同的通信網絡同時使用,從而構成混合模式的通信網絡.由于通信機制不同,因此無法在混合式網絡之間傳輸消息數據,降低了信息的即時性.
隨著通信技術重要性日漸增加,混合網絡的研究也變得越來越重要.早期的研究集中在現場總線和工業局域網領域[1].研究熱點是分析通信過程并建立多協議轉換模型.這些研究集中在如何規范協議轉換,而不是給出完整的數據交換方法.本文提出一種基于發布-訂閱模型的數據傳輸交換方法,為混合網絡之間的消息數據傳輸提供數據轉換、映射和重組方法.基于該方法實現的系統由設備軟件代理、消息內容分析組件和負載平衡組件等組成.設備軟件代理負責加載通信設備驅動等初始化工作,并管理這些設備消息收發功能.內容分析組件對消息數據的內容進行分析,解析消息路由,并根據指定的規則將消息發送到特定的目標設備.由于在混合網絡中存在低速通信設備,這降低了混合網絡的整體通信性能.負載平衡組件可以管理并聚合多個低速通信設備,從而提高混合網絡的整體消息數據吞吐量.
發布/訂閱模型為上述的系統組件之間的消息數據傳輸提供了可靠通信模式.每個系統組件都與發布/訂閱方面的主題相關聯,從而將這些組件間的數據通信和通信設備控制相分離,有利于形成高性能的動態消息數據交換網絡.
本文的其余部分安排如下.第1節介紹了有關發布/訂閱模型的相關研究工作.第2節詳細介紹了基于該方法實現的系統架構以及系統中格式化的消息數據結構和負載平衡算法.第3節中介紹實驗方法,并分析了實驗結果.第4節總結了論文.
發布/訂閱是一種消息傳遞模式,由Frank Schmuck在1987年提出[2].在發布/訂閱模型中,消息的發送者稱為發布者,消息的接收者稱為訂閱者.發布者不直接將消息發送給特定的接收者,而是對發布的消息進行分類,然后在不了解訂閱者的情況下將消息數據按照分類結果發到消息中間件.在不了解發布者的情況下,消息接收者可以訂閱一個或多個類別的消息,從消息中間件接收感興趣的消息.上述方法實現了消息發布者和消息接收者之間的解耦,使得整個系統具有良好的擴展性和伸縮性[3].發布/訂閱模型已廣泛用于數據分發[4],中間件[5]和無線傳感器網絡[6].
存在多種發布/訂閱系統的變體,分別稱為基于主題和基于內容的發布/訂閱系統,這些系統具有不同的性能開銷.基于主題的發布/訂閱系統中的主題由唯一的名稱(通常是字符串)標識,主題抽象易于理解,系統將各個主題映射到不同的通信渠道,從而增強了平臺的互操作性.基于主題的發布/訂閱很簡單,僅提供原始的表達能力.然而,基于內容的發布/訂閱具有很高的表達力,并在某些研究中得到使用[7].基于內容的發布/訂閱依賴于復雜的協議,從而導致更高的運行時開銷[8].
發布/訂閱已成功在多種分布式應用中使用.本文利用基于內容的發布/訂閱模型來分離混合網絡中的消息發送者和消息接收者.根據某些預定義的標準對消息內容進行格式化和分類,同時利用負載均衡算法將消息內容分發到多個內容分析組件,從而減少了分析消息內容時的整體運行時開銷,提高系統的整體性能.
本文所述的混合網絡主要應用于新疆地區,用來解決新疆戈壁、沙漠等無人地區的即時通信問題.該混合網絡主要由北斗導航衛星網絡、移動通信網絡(GSM 等)、移動背負式數字電臺網絡和基于TCP/IP的局域網(LAN)等組成.其中北斗網絡設備、GSM網絡設備、數字電臺設備、計算機等通信設備通過以太網或串口接入混合網絡網關來完成混合網絡之間進行數據傳輸.通常情況下通過串口接入的通信設備的通信性能較低,而通過以太網接入的通信設備是高速通信設備.為了提高混合網絡的整體數據吞吐量,該系統允許同時接入多個GSM設備和多個北斗設備來提高低速通信網絡的吞吐量,負載均衡算法會自動管理并分配空閑設備的通信通道.該系統的體系結構如圖1所示.
如圖1所示,該系統主要分為4層,其中底部的通信設備層包含不同通信網絡的通信設備,用于建立各設備對應通信網絡的通信鏈路.在設備層上方的設備驅動軟件代理層中,每一個設備對應一個軟件代理,通信網絡類型和對應通信設備標識符規定了軟件代理的標識符.在系統初始化時,由軟件代理完成通信設備的驅動加載、設備初始化、通信鏈路建立、建立設備消息接收和發送等操作環境.在系統運行中,設備軟件代理的標識符將作為發布/訂閱模型的主題由軟件代理訂閱.發往該標識符主題的數據均由該軟件代理處理并通過對應的通信設備發送到相應的通信網絡中.其中,低速網絡的設備軟件代理的主題選擇由各自的負載均衡算法完成.

圖1 系統體系結構圖
從通信設備收到的消息由設備的軟件代理推送到圖1的消息內容分析層.根據預定義規則的數據消息格式分析,從數據內容中提取數據的目標設備地址,根據該地址能夠獲得目標通信網絡,從而選擇合適的通信設備將數據推送到相應的設備軟件代理,最終由通信設備完成在目標通信網絡中的數據傳遞.為了更好地利用多核CPU的處理能力,在數據內容分析層中,系統運行時將構建內容分析組件的多個實例,由負載均衡算法確定具體的實例來處理當前消息數據.
該系統規定了消息數據的特定格式,對目標設備地址和消息數據內容組成數據內容要求進行規范化,最重要的是對混合網絡中設備地址進行規范化.該系統規定混合網絡中設備地址由通信網絡ID和通信設備ID 來唯一表示,從而避免不同通信網絡中設備標識符的重名問題.發送消息的數據格式為“#目標網絡ID:目標設備ID#消息內容”,如數據“#BD:112546#速返回”表示將數據內容“速返回”發送到北斗網絡“BD”中設備標識符為“112546”的目標設備.
當接入系統的通信設備收到格式化消息數據后,軟件代理將相關的補充信息如發送消息的源設備地址和消息順序號添加到消息數據中,形成規范化的系統內部數據格式為“#目標網絡ID:目標設備ID#消息內容#發送網絡ID:發送設備ID”,直接發布到內容分析組件的訂閱主題上.
內容分析組件對該數據內容進行解析,提取目標網絡ID、目標設備ID和消息數據內容“消息內容#發送網絡ID:發送設備ID”.根據目標網絡ID 將目標設備ID和消息數據內容發布到合適的主題,由訂閱該主題的軟件代理操作對應的通信設備完成目標網絡中的通信操作,將消息數據送往目標設備.
組成混合網絡的通信設備的帶寬差異較大,有線網絡的帶寬遠高于無線網絡的帶寬,如以太網的帶寬一般為1000 Mbps或100 Mbps;而在移動網絡中,中國電信運營商要求單臺通信設備在一分鐘內發送的消息數不能超過200條;對于北斗導航衛星網絡來說,通常一分鐘內只能發送一條140字節的消息數據.以百兆以太網作為高速通信網絡來說,理論上每秒可傳遞125 K的消息數據;而對于低速網絡如移動通信網絡,中國運營商規定每條短消息最多140字節,以1 s發送10條短消息為基準,需接入約89臺移動網絡設備才能夠達到百兆以太網的通信性能.因高速網絡的通信性能遠高于低速網絡,因此高速網絡通信設備僅需單個設備直接接入內容分析組件進行內容分析和消息分發即可.但是對于低速網絡,則需要接入多個同類通信設備聚合為通信網絡設備池,提高低速網絡的帶寬,最終提高消息數據的即時性.
負載均衡算法用來管理通信網絡設備池,負責從中選擇空閑設備進行消息數據發送等.除此之外,負載平衡算法也用于內容分析組件的多個實例的管理,如圖2所示.

圖2 負載均衡算法管理內容分析組件的流程圖
在基于發布/訂閱模型實現的系統中,設備軟件代理依據網絡的不同分別向負載均衡組件報告各自連接設備的狀態,以此為依據,負載均衡組件實現了一種基于循環調度的通信設備調度算法[9],實現了依據設備狀態對設備進行的合理調度.該算法假定同類網絡的接入設備具有相同的通信能力,因此各設備具有相同的通信間隔,但實際使用中,通信設備的已使用時間長短、購買時間會造成一定的實際使用差異,因此負載均衡算法考慮了這些問題,利用權來表示設備的調度差異,權重均為正值.用戶可根據設備的實際使用狀態為通信設備賦予不同權重,實現通信設備的合理調度.如用戶給新設備賦予高權重,而給舊設備賦予低權重,可用實現新設備優先使用,舊設備作為備份的設備調度管理方法.
為簡化算法實現,虛擬了一個權重為0的通信設備,表示該類目前沒有接入通信設備,選中虛擬通信設備表示消息數據發送失敗.以移動通信網絡設備軟件代理的負載平衡為例,假設有一組可變的移動通信網絡設備軟件代理DV = {(d1,v1),(d2,v2),···,(dn,vn),(d0,0)},其中設備編號為d1、d2···dn,對應的設備權重v1、v2···vn均為正值,而虛擬設備編號為d0,對應的設備權重為0.變量n表示加入移動通信網絡的設備軟件代理數量.變量t表示設備需要t秒發送一條消息.最終該算法總是選擇有序的設備軟件代理DV 中的第一個通信設備.
該算法的偽代碼如算法1所示,偽代碼中定時器到期時總是將設備軟件代理DV中的最后一個設備權重v設置為-1×v,并按權重重新對DV排序.

算法1.光流擾動效應檢測算法1)輸入:當前所用的通信設備i 2)輸入:當前通信設備DV,按權重值從大到小已排序3)輸出:算法選中的下一個可用通信設備topicID 4)將DV的長度賦予n 5)if n== 1 then 6)topicID = d0 7)執行無設備接入處理8)else 9)將D 中第1個通信設備賦予topicID 10)if topicID == d0 then 11)執行無空閑設備處理12)else 13)在DV 中置v topicID = -1×vtopicID 14)按權重值從大到小排序DV 15)設置定時器時間t,啟動定時器16)end if 17)end if 18)return topicID
上述算法要求每組設備軟件代理添加一個權重為0的虛擬通信設備d0,無論系統是否接入該組設備,均保證每組設備必有一個虛擬通信設備d0可用于通信.這種方式使每組設備的可調度設備數量比實際接入設備數量多1個,對數據交換性能幾乎沒有影響,同時有利于實現調度算法和錯誤報告.以北斗設備為例,即使系統中沒有接入北斗設備,系統中仍存在虛擬的北斗設備軟件代理d0,當其被調度用于消息發送時,虛擬北斗設備軟件代理d0 將向監控組件報告通信設備接入錯誤信息,同時在操作日志記錄通信錯誤.
為了評估所提出系統的有效性和傳輸性能,使用Python語言開發了兩個系統進行實驗.其中一個系統利用Mosquitto[10]作為發布/訂閱服務器,實現了發布/訂閱模型.作為一個開源消息代理,Mosquitto 能實現基于主題的發布/訂閱消息傳遞模型.內容分析組件、負載均衡組件和各設備的軟件代理組件均由Python編程語言實現的;另一個系統利用Twisted框架[11]實現了基于事件驅動的數據交換傳輸系統.Twisted是Python語言編寫的一種基于事件驅動的網絡引擎,可用于實現事件驅動的數據傳輸.在實驗中,沒有使用真實的通信設備.各設備的軟件代理根據表1中列出的參數模擬相關設備的通信特性;并且實驗中使用的單條消息數據不超過100字節.實驗結果主要使用批量數據傳輸時間來評估不同系統的傳輸性能[12].所有實驗均在臺式機上執行的,臺式機的處理器為Intel i5-6500 3.2 GHz,配有16 GB內存,運行Ubuntu 14.04操作系統.實驗系統中使用局域網即時通信軟件飛鴿作為計算機端的通訊軟件,因此實驗中使用Python語言實現了飛鴿通信協議作為大批量消息數據發送源.

表1 模擬設備的數據傳輸性能設定
實驗結果記錄了從飛鴿通信軟件代理向GSM設備軟件代理傳輸消息數據的花費時間作為傳輸性能的測量依據.實驗中的消息數量最初為10萬條,然后每次增加10萬條直到最終60萬條.當飛鴿通信軟件代理發送第一條消息時,當前時間點被稱為t1.當目標GSM軟件代理收到最后一條消息時,此時的時間點被稱為t2.那么本批消息的傳輸耗費時間是t1與t2的差值.每個批次的實驗均重復10次,所得到的平均傳輸耗費時間列于表2.在表2中也給出了內容分析組件的負載平衡算法的性能.

表2 基于發布/訂閱模型的系統與基于Twisted 實現的事件驅動系統的批量消息數據傳輸時間對比
如表2所示,和基于事件驅動的系統相比,在僅啟用一個內容分析組件實例時,基于發布/訂閱模型的系統的消息傳輸性能差.由于實驗中傳輸的消息數量大,基于事件驅動的系統在運行時,處理器的單核利用率達到了100%,經過分析,內容分析組件實例占用了過多的處理器時間.受Python語言多線程特性的影響,基于事件驅動的系統無法充分利用多核處理器的并發功能,但在基于發布/訂閱模型的系統中,內容分析組件實例運行在獨立進程中,通過主題進行消息的收發,從而可以通過增加內容分析組件實例,提高多核處理器的利用率.實驗中從一個內容分析組件實例逐步增加到5個并行的實例,這些實例的管理和選擇由負載平衡算法處理.如表2所示,當消息數量為10萬條且基于發布/訂閱模型的系統中內容分析實例數大于2時,基于發布/訂閱模型的系統的消息傳輸性能要優于基于事件驅動的系統.但消息數量逐步增加時,兩個系統的性能均逐步下降,并且基于發布/訂閱模型的系統下降得更快.隨著內容分析組件實例數量的增加,基于發布/訂閱模型的系統的消息傳輸性能隨之增加.在實驗中,當內容分析組件實例的數量為4時,和基于事件驅動的系統相比,基于發布/訂閱模型的系統表現出最好的數據傳輸性能.
如表2所示,隨著內容分析組件實例數量增加,系統的消息傳輸性能增加,但傳輸性能的增加幅度下降.有研究表明,當通過網絡傳輸大量消息時,操作系統自身會緩存消息隊列,從而降低了系統性能,因此影響了負載均衡算法的有效性,利用低速通信網絡可以更好地測試負載均衡算法的有效性.本研究對北斗導航衛星網絡、移動網絡、無線電臺網絡分別進行負載均衡實驗,實驗中的消息數據數量從1千條逐步增加到7千條.負載均衡實驗結果如圖3所示.

圖3 負載均衡實驗結果
如圖3所示,在低速網絡中,隨著內容分析組件實例數量的增加,消息數據傳輸耗費時間明顯減少.圖3中隨著內容分析組件實例的數量增加,耗費時間曲線幾乎成比例的下降,這表明負載平衡算法通過聚合多個低速網絡通信設備能有效提高低速網絡的數據傳輸性能.
通信網絡在人們的生活中得到了廣泛使用.移動通信網絡已經普遍覆蓋了城市、農村等地區,但在偏遠地區、沙漠、戈壁等無人區,無線電臺、衛星網絡等通信網絡更加適用,研究混合網絡之間的高性能數據傳輸,實現混合網絡即時消息數據傳遞,能夠滿足新疆等偏遠地區的現實需求.本文描述了一種基于發布/訂閱模型的混合網絡數據傳輸方法,實現了由移動通信網絡、北斗導航衛星網絡、無線電臺網絡和計算機局域網形成的混合網絡之間的消息數據傳輸.在該方法中,消息內容分析組件、設備軟件代理和負載平衡組件均一一對應發布/訂閱模型的主題.其中,消息內容分析組件負責消息的格式化內容分析,解析消息路由;設備軟件代理負責網絡通信設備的驅動加載和管理;負載平衡組件通過聚合多個低速通信設備來提高低速通信網絡帶寬.經過模擬實驗,該方法能有效實現混合網絡之間的高性能消息數據傳輸.目前,利用該方法實現的混合網絡傳輸系統已經在實際項目中得到了應用.未來,我們將進一步優化發布/訂閱模型和負載平衡算法來提高系統性能.