褚水琴,葉劍超,徐志江
(1.浙江工業(yè)大學(xué)省通信網(wǎng)應(yīng)用技術(shù)研究重點實驗室,浙江杭州310023;2.杭州龍騫科技有限公司,浙江杭州310012)
交通出行是人類最基本的需要之一,然而目前中國城市交通量不斷地增長,交通擁擠和堵塞現(xiàn)象日趨嚴重,正越來越引起社會的普遍關(guān)注。交通參與者不能獲得實時的交通信息,出行路線的選擇具有盲目性,是造成高峰期城市出行難的根本原因。傳統(tǒng)的交通信息發(fā)布系統(tǒng)一般都是基于請求/應(yīng)答的點對點的同步通信,不能滿足大規(guī)模的動態(tài)分布式應(yīng)用環(huán)境[1],而訂閱/發(fā)布通信模式實現(xiàn)了時間、空間和同步關(guān)系3個方面的完全解耦合[2],使得它在分布式系統(tǒng)中的應(yīng)用越來越廣泛。通過中間件來進行數(shù)據(jù)的傳輸和消息的共享已廣泛實施和部署在分布式系統(tǒng)中。例如,文獻3就是利用中間件很好地解決了分布式測控系統(tǒng)在網(wǎng)絡(luò)通信方面的問題。本文通過利用網(wǎng)絡(luò)通信引擎(Internet Communication Engine,ICE)中間件很好地解決了交通信息發(fā)布在分布式系統(tǒng)中缺乏實時性的問題。
ICE是由ZeroC公司推出的中間件產(chǎn)品,是一種面向?qū)ο蟮闹虚g件平臺,為構(gòu)建面向?qū)ο蟮目蛻簦?wù)器應(yīng)用提供了工具、API和庫支持。ICE應(yīng)用適合在異種環(huán)境中使用,ICE定義了自己的規(guī)范語言Slice,用于使對象接口與其實現(xiàn)相分離的基礎(chǔ)性抽象機制。ICE的客戶和服務(wù)器可以用不同的編程語言編寫,可以運行在不同的操作系統(tǒng)和機器構(gòu)架上,并且可以使用多種網(wǎng)絡(luò)技術(shù)進行通信。ICE公開源碼,并且無論部署環(huán)境如何,這些應(yīng)用的源碼都是可以移植的[4]。ICE核心為分布式應(yīng)用開發(fā)提供了一個完善的客戶——服務(wù)平臺,ICE還提供了一系列服務(wù)為現(xiàn)實應(yīng)用提供ICE核心不能提供的特性。
IceStorm是ICE的一個服務(wù),是一種發(fā)布-訂閱服務(wù),它能很好的解除客戶與服務(wù)器的耦合。發(fā)布者把事件發(fā)給這個服務(wù),然后由IceStorm發(fā)給其他多個訂閱者。事件按照主題分類,訂閱者會指定他們感興趣的主題?;贗CE中間件的訂閱發(fā)布模型能使得消息的發(fā)布端和訂閱端專注于自己的應(yīng)用,減少訂閱管理上的應(yīng)用開銷。該模型主要分為發(fā)布端,中間件和訂閱者端?;贗CE的訂閱發(fā)布模型如圖1所示。
圖1 基于Ice中間件的訂閱發(fā)布模型
IceGrid是ICE定位服務(wù)的一個實現(xiàn),是ICE面向分布式開發(fā)提出的解決方案,利用IceGrid提供的若干基本服務(wù),可以簡化復(fù)雜的分布式應(yīng)用和開發(fā)部署。例如它可以使應(yīng)用客戶端能夠定位他們的服務(wù)器。IceGrid會在請求到來的時候?qū)⒎?wù)器激活,響應(yīng)客戶端的請求。一個IceGrid域由一個注冊表和任何數(shù)目的節(jié)點構(gòu)成。通過對IceGrid的使用,可以實現(xiàn)對目標服務(wù)器的動態(tài)定位,解決服務(wù)的動態(tài)配置問題,提高消息傳輸?shù)挠行浴?/p>
Glacier是ICE的防火墻服務(wù),它能使IceStorm穿越防火墻進行消息發(fā)布和訂閱,不局限于局域網(wǎng)內(nèi)部。
交通信息發(fā)布系統(tǒng)可以從城市交通信息平臺的路況數(shù)據(jù)庫中獲取路況參數(shù)。此外,還可以對獲得的路況信息進行分類處理,將處理后的交通信息分為多個類別,比如交通事故信息,最優(yōu)交通路線信息,停車位信息和最新交通新聞[5]。然后,將簡單分類處理過的路況信息進行發(fā)布。在IceStorm中,上述各類信息可以分別定義為不同的主題,出行者可以進行對上述主題的訂閱,實時接收交通路況中的各類信息。運用ICE中間可用來進行實時交通信息的傳輸與共享,同時為用戶展現(xiàn)一個簡單的開發(fā)和部署平臺。交通信息發(fā)布系統(tǒng)的系統(tǒng)結(jié)構(gòu)如圖2所示。
圖2 交通信息發(fā)布系統(tǒng)結(jié)構(gòu)圖
基于ICE的交通信息發(fā)布系統(tǒng)主要使用ICE中間件的IceStorm服務(wù),同時還使用Glacier服務(wù)來解決IceStorm不能穿越防火墻進行消息傳輸?shù)娜秉c。這樣可以讓客戶與服務(wù)器通過防火墻安全的通信,將IceStorm和IceGrid、Glacier結(jié)合設(shè)計的交通信息發(fā)布系統(tǒng)如圖3所示。
圖3 ICE服務(wù)在交通信息發(fā)布系統(tǒng)的應(yīng)用
交通信息發(fā)布系統(tǒng)可以作為圖3中的發(fā)布端,用戶則為各類交通信息的訂閱端。將Glacier和IceS-torm服務(wù)結(jié)合放在同一臺計算機上。基于ICE的實時交通系統(tǒng)首先由發(fā)布端發(fā)布消息主題,即交通信息發(fā)布系統(tǒng)發(fā)布各類信息主體到IceStorm中形成主題列表。然后,訂閱端使用Glacier和IceGrid通過防火墻并定位找到激活I(lǐng)CE服務(wù)所在計算機,并根據(jù)自身需要訂閱的相應(yīng)的主題信息并將訂閱請求發(fā)送給ICE服務(wù)。IceStorm能夠管理訂閱者的增加和刪除,維護相關(guān)主題的信息,同時將發(fā)布端發(fā)布的相關(guān)消息通過防火墻發(fā)送給訂閱端。它可以解除訂閱端和發(fā)布端的耦合,還允許每個訂閱者制定自己的服務(wù)質(zhì)量參數(shù)。
本系統(tǒng)使用C++作為程序開發(fā)語言,ICE版本為3.4.2,開發(fā)工具為Visual Studio 2010。經(jīng)過多次編程和調(diào)試,初步實現(xiàn)了使用ICE來進行交通信息發(fā)布的部分。測試分為一個發(fā)布端,一個訂閱端,分別部署在不同的局域網(wǎng)的兩臺計算機上。發(fā)布端的主題為Traffic。計算機A的操作系統(tǒng)為Windows操作系統(tǒng),且在局域網(wǎng)中的IP地址為:198.168.1.209。計算機B的操作系統(tǒng)為Linux操作系統(tǒng),且在公網(wǎng)中的IP地址為:210.32.200.129。發(fā)布端分布在計算機A上,訂閱端client在計算機B上,并且默認訂閱上述發(fā)布端。測試結(jié)果如圖4、5所示,可以看到基于ICE的實時消息提醒系統(tǒng)能夠滿足現(xiàn)實要求。
隨著我國交通信息系統(tǒng)的建立與完善,交通信息服務(wù)也逐漸成為一項便民的服務(wù)。本文在研究訂閱發(fā)布模型以及ICE的基礎(chǔ)上,提出并設(shè)計了一種基于ICE的交通信息發(fā)布系統(tǒng)。此外,ICE在架構(gòu)上提供的優(yōu)點也使得該系統(tǒng)具有極其廣泛的應(yīng)用前景。例如,該系統(tǒng)可以使運營商便捷地向訂閱客戶發(fā)布各類信息服務(wù),也可用于企事業(yè)內(nèi)部事件通知等服務(wù)。
[1] 盧鵬.基于JMS的消息中間件的輕量級設(shè)計與整合[D].成都:西南交通大學(xué),2010.
[2] 劉海巖,梁建龍.基于中間件的分布式系統(tǒng)開發(fā)過程的研究[J].計算機應(yīng)用研究,2004,21(1):85-87.
[3] 尹勝剛,翟正軍.基于Ice中間件的分布式測控網(wǎng)絡(luò)[J].測控技術(shù),2011,30(10):77-80.
[4] MichiHenning,Mark Spruiell.Distributed Programming With Ice.[EB/OL]http://download.zeroc.com/Ice/3.4/Ice-3.4.1.pdf,2010 -06 -08.
[5] 朱東輝.智能交通系統(tǒng)的發(fā)展[J].山東交通學(xué)院學(xué)報,2002,10(4):9-14.