于曉昀
摘要:交通卡口系統(tǒng)是車輛監(jiān)管的有效工具,由于系統(tǒng)建設(shè)過(guò)程所采用的技術(shù)和數(shù)據(jù)結(jié)構(gòu)定義的差異,使得與其他信息系統(tǒng)共享卡口數(shù)據(jù)存在障礙,限制了卡口數(shù)據(jù)的利用價(jià)值。為了實(shí)現(xiàn)交通卡口數(shù)據(jù)的共享,該文研究了以Netty框架為基礎(chǔ)的交通卡口數(shù)據(jù)交換中間件的總體框架,設(shè)計(jì)了中間件的功能組件,定義了消息交互的關(guān)鍵流程,對(duì)交通卡口數(shù)據(jù)的共享具有重要意義。
關(guān)鍵詞:NIO技術(shù);Netty框架;中間件
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)12-0108-02
隨著我國(guó)居民購(gòu)買力的提升,道路上的機(jī)動(dòng)車數(shù)量逐年增多,增加了車輛違章行駛、肇事逃逸等違規(guī)違法現(xiàn)象的發(fā)生概率。為了有效地監(jiān)管車輛,維護(hù)交通秩序,在重要交通卡口都設(shè)置了監(jiān)控拍照和測(cè)速設(shè)施,可對(duì)通過(guò)卡口的過(guò)往車輛進(jìn)行實(shí)時(shí)監(jiān)控和數(shù)據(jù)記錄。各地通過(guò)建設(shè)交通卡口系統(tǒng)對(duì)獲取的過(guò)往車輛信息進(jìn)行處理、分析和調(diào)用,為糾正違規(guī)行駛、偵破肇事案件提供了有力的數(shù)據(jù)依據(jù)[1]。然而,目前建成的交通卡口系統(tǒng)由于建設(shè)過(guò)程中采用的技術(shù)和數(shù)據(jù)結(jié)構(gòu)定義的差異,所持有的數(shù)據(jù)只能供卡口系統(tǒng)自身使用[2],無(wú)法與PGIS平臺(tái)、視頻綜合平臺(tái)等其他公安信息系統(tǒng)實(shí)現(xiàn)共享,實(shí)現(xiàn)過(guò)往車輛的空間分析、視頻圖像分析等深化應(yīng)用,在一定程度上限制了交通卡口數(shù)據(jù)的利用價(jià)值。
交通卡口數(shù)據(jù)的共享問(wèn)題可以通過(guò)中間件技術(shù)進(jìn)行解決。周樂(lè)欽等研究了滿足企業(yè)信息化系統(tǒng)之間進(jìn)行消息傳遞的數(shù)據(jù)交換平臺(tái)中間件[3],梁彥杰等研究了在水污染治理過(guò)程中各個(gè)協(xié)調(diào)系統(tǒng)之間的基于中間件技術(shù)的數(shù)據(jù)交換平臺(tái)的傳輸框架[4],這些基于中間件的數(shù)據(jù)交換技術(shù)為實(shí)現(xiàn)交通卡口系統(tǒng)的數(shù)據(jù)共享提供了有效參考價(jià)值。
為了構(gòu)建高效、穩(wěn)定的交通卡口數(shù)據(jù)的共享渠道,本文分析了異步事件驅(qū)動(dòng)的網(wǎng)絡(luò)應(yīng)用程序框架Netty,以Netty為基礎(chǔ)研究了適用于交通卡口系統(tǒng)與其他公安系統(tǒng)進(jìn)行數(shù)據(jù)交互的中間件,定義了消息交互流程。
1 Netty框架
NIO是Java提供的無(wú)堵塞I/O技術(shù),能夠有效解決多線程服務(wù)器存在的線程開(kāi)銷問(wèn)題。NIO能夠?yàn)槊總€(gè)客戶端請(qǐng)求分配獨(dú)立的服務(wù)線程,充分利用多個(gè)CPU的處理能力,達(dá)到提高服務(wù)能力的目的[5]。Netty是一個(gè)NIO客戶端/服務(wù)器框架,具有大吞吐量,低延遲和低消耗的優(yōu)點(diǎn),使得如TCP、UDP服務(wù)器和客戶端的開(kāi)發(fā)性能更加優(yōu)秀,便捷和可靠[6]。
Netty基于多線程反應(yīng)器模式(Multiple Reactors),包含主反應(yīng)器和子反應(yīng)器,其中主反應(yīng)器中的請(qǐng)求接收器負(fù)責(zé)接收客戶端的連接請(qǐng)求,并將通道注冊(cè)到子反應(yīng)器線程池,各個(gè)子反應(yīng)器采用IO多路復(fù)用機(jī)制,同時(shí)監(jiān)聽(tīng)處理多個(gè)通道的IO請(qǐng)求,完成業(yè)務(wù)邏輯處理。Netty在應(yīng)對(duì)高并發(fā)的請(qǐng)求、保證消息傳輸?shù)目煽啃?、維持高效處理能力等方面表現(xiàn)優(yōu)異[7]。圖1所示為Netty框架模型。
2 中間件設(shè)計(jì)
根據(jù)交通卡口系統(tǒng)對(duì)數(shù)據(jù)共享的可靠性、安全性要求,并考到中間件在應(yīng)用過(guò)程中的通用性和可擴(kuò)展性,本文設(shè)計(jì)了中間件的總體架構(gòu),分為網(wǎng)絡(luò)層、服務(wù)層和應(yīng)用層, 如圖2所示。
1) 網(wǎng)絡(luò)層應(yīng)用了Netty框架來(lái)實(shí)現(xiàn)消息在網(wǎng)絡(luò)中的無(wú)堵塞傳輸。
2) 服務(wù)層由配置管理組件、認(rèn)證管理組件、心跳監(jiān)測(cè)器、模型管理組件、模型適配器、消息隊(duì)列管理器、編解碼器和發(fā)送\接收器組成。
①配置管理組件用以管理和加載數(shù)據(jù)交換時(shí)的相關(guān)配置,如消息發(fā)送\接收的地址和端口、數(shù)據(jù)交換頻率、應(yīng)用中間件的系統(tǒng)信息等。
②認(rèn)證管理組件用以驗(yàn)證外接系統(tǒng)與交通卡口系統(tǒng)對(duì)接的權(quán)限,并建立通信鏈路。
③心跳監(jiān)測(cè)器用以監(jiān)測(cè)交換鏈路狀態(tài)是否正常。
④模型管理組件用以管理和擴(kuò)展中間件交互時(shí)的消息模型。
⑤模型適配器用以進(jìn)行消息模型匹配。消息發(fā)送接口傳入的參數(shù)進(jìn)行模型匹配,生成對(duì)應(yīng)的請(qǐng)求消息;接收的消息經(jīng)過(guò)模型匹配生成對(duì)應(yīng)的結(jié)果集通過(guò)消息接收接口傳遞給系統(tǒng)。
⑥)消息隊(duì)列管理器采用多路并發(fā)的方式輪詢隊(duì)列中的消息,用以管理消息發(fā)送隊(duì)列和消息接收隊(duì)列,將請(qǐng)求與響應(yīng)進(jìn)行匹配。
⑦編解碼器用以對(duì)需要發(fā)送和接收的消息進(jìn)行編碼和解碼。
⑧發(fā)送\接收器用以發(fā)送經(jīng)過(guò)編碼的消息并接收消息。
2.3 應(yīng)用層包括消息發(fā)送接口和消息接收接口,分別實(shí)現(xiàn)消息的發(fā)送和接收。
3 消息交互設(shè)計(jì)
交通卡口系統(tǒng)與外接系統(tǒng)進(jìn)行數(shù)據(jù)共享時(shí),需要在交通卡口系統(tǒng)和外接系統(tǒng)分別部署中間件,交互流程包括接入認(rèn)證、心跳監(jiān)測(cè)和業(yè)務(wù)數(shù)據(jù)交互。其中,接入認(rèn)證用以建立外接系統(tǒng)與卡口系統(tǒng)間的安全通信鏈路,心跳監(jiān)測(cè)用以監(jiān)測(cè)鏈路的狀態(tài),業(yè)務(wù)交互流程完成交通卡口系統(tǒng)共享車輛信息、行車記錄、圖片信息等卡口數(shù)據(jù)。為確保消息傳輸?shù)目煽啃?,交互過(guò)程均采用請(qǐng)求-應(yīng)答方式。登錄流程和業(yè)務(wù)交互流程需要確保其可靠性,采用面向連接的、具備可靠傳輸特性的TCP協(xié)議來(lái)進(jìn)行消息傳輸,心跳監(jiān)測(cè)鏈路狀態(tài),對(duì)可靠性要求不高,采用面向無(wú)連接的,占用資源小的UDP協(xié)議[8]。
交通卡口系統(tǒng)端的中間件啟動(dòng)時(shí),加載配置信息并啟動(dòng)接入監(jiān)聽(tīng),外接系統(tǒng)端的中間件啟動(dòng)后,加載配置信息并將認(rèn)證信息發(fā)送至卡口系統(tǒng)端的中間件進(jìn)行接入認(rèn)證。認(rèn)證成功,外接系統(tǒng)端的中間件開(kāi)始進(jìn)行心跳監(jiān)測(cè),可以進(jìn)行數(shù)據(jù)交互,流程如圖3所示;認(rèn)證失敗,拒絕該系統(tǒng)與卡口系統(tǒng)的數(shù)據(jù)交互。
圖4顯示了數(shù)據(jù)交互請(qǐng)求過(guò)程。外接系統(tǒng)進(jìn)行請(qǐng)求時(shí),通過(guò)調(diào)用中間件的消息發(fā)送接口,將數(shù)據(jù)請(qǐng)求參數(shù)接入中間件,經(jīng)過(guò)模型匹配后將生成的請(qǐng)求消息加入發(fā)送隊(duì)列,消息隊(duì)列管理器取出消息后,發(fā)送器將經(jīng)過(guò)編碼的請(qǐng)求消息發(fā)送至交通卡口系統(tǒng)端的接收器。接收器將經(jīng)過(guò)解碼的請(qǐng)求消息加入接收隊(duì)列,經(jīng)過(guò)模型匹配后將解析生成的結(jié)果集通過(guò)消息接收接口傳送給交通卡口系統(tǒng)。
圖5顯示了數(shù)據(jù)交互響應(yīng)過(guò)程。交通卡口系統(tǒng)返回響應(yīng)時(shí),通過(guò)調(diào)用中間件的消息發(fā)送接口,將數(shù)據(jù)響應(yīng)參數(shù)接入中間件,經(jīng)過(guò)模型匹配后將生成的響應(yīng)消息加入發(fā)送隊(duì)列,消息隊(duì)列管理器將響應(yīng)與請(qǐng)求進(jìn)行匹配后加入消息發(fā)送隊(duì)列,取出消息后,發(fā)送器將經(jīng)過(guò)編碼的響應(yīng)消息發(fā)送至外接系統(tǒng)端的接收器。接收器將經(jīng)過(guò)解碼的響應(yīng)消息加入接收隊(duì)列,經(jīng)過(guò)模型匹配后將解析生成的結(jié)果集通過(guò)消息接收接口傳送給外接系統(tǒng)。
4 結(jié)束語(yǔ)
本文以實(shí)現(xiàn)交通卡口系統(tǒng)的數(shù)據(jù)共享為目的,研究了適用于交通卡口系統(tǒng)與其他系統(tǒng)進(jìn)行數(shù)據(jù)交互的中間件,為數(shù)據(jù)共享提供了數(shù)據(jù)交換接口、流程規(guī)范、通信可靠的數(shù)據(jù)交換環(huán)境,屏蔽了交通卡口系統(tǒng)與其他系統(tǒng)間由于建設(shè)技術(shù)和數(shù)據(jù)結(jié)構(gòu)上差異而造成的數(shù)據(jù)隔離問(wèn)題。
參考文獻(xiàn):
[1] 唐漢征. 現(xiàn)代交通卡口系統(tǒng)智能化探析[J]. 機(jī)電信息, 2014(24): 158-159.
[2] 田力. 實(shí)現(xiàn)備卡口數(shù)據(jù)信息集中共享[N]. 人民公安報(bào), 2010-10-11(8).
[3] 周樂(lè)欽. 數(shù)據(jù)交換平臺(tái)中消息中間件的研究與實(shí)現(xiàn)[D]. 上海: 東華大學(xué), 2013.
[4] 梁彥杰, 廉東本. 基于消息中間件的數(shù)據(jù)交換平臺(tái)傳輸框架設(shè)計(jì)[J]. 計(jì)算機(jī)系統(tǒng)應(yīng)用, 2012, 21(4): 10-13.
[5] 劉蓬. NIO高性能框架的研究與應(yīng)用[D]. 長(zhǎng)沙: 湖南大學(xué), 2013.
[6] 李林鋒. Netty權(quán)威指南[M]. 北京: 電子工業(yè)出版社, 2014.
[7] 崔曉旻. 基于Netty的高可服務(wù)消息中間件的研究與實(shí)現(xiàn)[D]. 成都: 電子科技大學(xué), 2014.
[8] 張藝瀕, 張志斌, 趙詠, 等.TCP與UDP網(wǎng)絡(luò)流量對(duì)比分析研究[J]. 計(jì)算機(jī)應(yīng)用研究, 2010, 27(6): 2192-2197.