《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > GPS車輛監(jiān)控系統(tǒng)服務(wù)器性能優(yōu)化與實(shí)現(xiàn)
GPS車輛監(jiān)控系統(tǒng)服務(wù)器性能優(yōu)化與實(shí)現(xiàn)
來源:微型機(jī)與應(yīng)用2013年第24期
薛 津,,葉少珍
(福州大學(xué) 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院,,福建 福州350108)
摘要: 在C/S模式下,,車載終端的并發(fā)接入量是檢驗(yàn)GPS車輛監(jiān)控系統(tǒng)服務(wù)器性能的重要因素,。為了滿足大量終端的并發(fā)連接請求并快速響應(yīng)用戶操作,,首先采用三層體系結(jié)構(gòu)設(shè)計(jì)服務(wù)器,,增強(qiáng)系統(tǒng)的可擴(kuò)展性,實(shí)現(xiàn)模塊間高內(nèi)聚低耦合,。其次對服務(wù)器接入模塊部分應(yīng)用IOCP模型進(jìn)行優(yōu)化,,針對實(shí)際應(yīng)用中信息定位、多類型終端接入,、資源優(yōu)化管理,、數(shù)據(jù)正確性等問題,分別采取緩沖鏈表,、內(nèi)存池以及分包策略等方法進(jìn)行有效解決,。最后在實(shí)際應(yīng)用項(xiàng)目中進(jìn)行測試,實(shí)驗(yàn)結(jié)果均表明優(yōu)化后的服務(wù)器性能和穩(wěn)定性具有明顯的改善,。
Abstract:
Key words :

摘  要: 在C/S模式下,,車載終端的并發(fā)接入量是檢驗(yàn)GPS車輛監(jiān)控系統(tǒng)服務(wù)器性能的重要因素,。為了滿足大量終端的并發(fā)連接請求并快速響應(yīng)用戶操作,,首先采用三層體系結(jié)構(gòu)設(shè)計(jì)服務(wù)器,增強(qiáng)系統(tǒng)的可擴(kuò)展性,,實(shí)現(xiàn)模塊間高內(nèi)聚低耦合,。其次對服務(wù)器接入模塊部分應(yīng)用IOCP模型進(jìn)行優(yōu)化,針對實(shí)際應(yīng)用中信息定位,、多類型終端接入,、資源優(yōu)化管理、數(shù)據(jù)正確性等問題,,分別采取緩沖鏈表,、內(nèi)存池以及分包策略等方法進(jìn)行有效解決。最后在實(shí)際應(yīng)用項(xiàng)目中進(jìn)行測試,,實(shí)驗(yàn)結(jié)果均表明優(yōu)化后的服務(wù)器性能和穩(wěn)定性具有明顯的改善,。
關(guān)鍵詞: GPS車輛監(jiān)控;IOCP,;線程池,;內(nèi)存池

    近年隨著社會(huì)經(jīng)濟(jì)的快速發(fā)展,城市交通緊張的狀況不斷地加劇,,為了實(shí)現(xiàn)有效的,、科學(xué)的車輛信息管理,GPS車輛監(jiān)控系統(tǒng)應(yīng)運(yùn)而生。GPS車輛監(jiān)控系統(tǒng)通過無線網(wǎng)絡(luò),,根據(jù)需要將車載終端GPS數(shù)據(jù)包括當(dāng)前車輛的運(yùn)行狀況,、位置信息和速度等接入服務(wù)器,并通過客戶端向用戶提供監(jiān)控服務(wù)[1],。該監(jiān)控系統(tǒng)主要由服務(wù)器,、客戶端和GPS車載終端三部分組成[2]。
    其中,,服務(wù)器部分是整個(gè)車輛監(jiān)控系統(tǒng)的核心,,主要完成車輛GPS車載終端定位信息和報(bào)警信息的采集、處理,、轉(zhuǎn)發(fā),,對客戶端軟件的指令快速響應(yīng)與處理以及實(shí)現(xiàn)平臺(tái)數(shù)據(jù)的管理,并且需要滿足7×24小時(shí)為大規(guī)模的GPS車載終端提供接入服務(wù),。然而由于終端連接數(shù)目龐大,,使服務(wù)器程序負(fù)載量大,無法快速地響應(yīng)并處理海量終端的連接請求,,造成系統(tǒng)不穩(wěn)定,。本文設(shè)計(jì)了一種性能和穩(wěn)定性良好的服務(wù)器軟件平臺(tái),采用三層體系結(jié)構(gòu)實(shí)現(xiàn)模塊高內(nèi)聚低耦合,,并結(jié)合IOCP網(wǎng)絡(luò)通信模型來優(yōu)化服務(wù)端,,快速響應(yīng)并處理海量車載終端的并發(fā)接入請求,在此基礎(chǔ)上改善系統(tǒng)資源的優(yōu)化管理,,從而有效提高系統(tǒng)的性能和穩(wěn)定性,。
1 服務(wù)器設(shè)計(jì)
1.1 服務(wù)器體系結(jié)構(gòu)

    本文設(shè)計(jì)的服務(wù)器采用三層體系結(jié)構(gòu),如圖1所示,,分為數(shù)據(jù)接入層,、處理分析層和業(yè)務(wù)服務(wù)層,目的是實(shí)現(xiàn)交通信息接入規(guī)范化,、功能模塊化,、系統(tǒng)可擴(kuò)展性強(qiáng)和模塊間高內(nèi)聚低耦合化等特點(diǎn);并且在不影響業(yè)務(wù)正常運(yùn)行情況下,,各個(gè)模塊可獨(dú)立升級(jí),,符合定位業(yè)務(wù)不斷發(fā)展的需求。

    數(shù)據(jù)接入層通過各種數(shù)據(jù)接入與轉(zhuǎn)換手段,,實(shí)現(xiàn)數(shù)據(jù)的統(tǒng)一接入,,具體通過Socket接口由車載終端連接到設(shè)備接入服務(wù),實(shí)現(xiàn)雙向數(shù)據(jù)通信,,并在接入服務(wù)中實(shí)現(xiàn)數(shù)據(jù)的轉(zhuǎn)換與統(tǒng)一,,數(shù)據(jù)最后在網(wǎng)關(guān)進(jìn)行匯總,。
    處理分析層實(shí)現(xiàn)模塊化的統(tǒng)一處理,便于系統(tǒng)的擴(kuò)展,。不同類型的終端信息在經(jīng)過數(shù)據(jù)接入層的處理后,,由處理分析程序進(jìn)行加工,實(shí)現(xiàn)業(yè)務(wù)功能,。同時(shí)處理分析層也處理從用戶端發(fā)送的業(yè)務(wù)請求,,并將其通過終端操作完成后返回。
    業(yè)務(wù)服務(wù)層基于處理分析層的數(shù)據(jù)處理結(jié)果,,以及數(shù)據(jù)接入層采集并保存在數(shù)據(jù)庫中的原始數(shù)據(jù),,向用戶提供顯示的平臺(tái)業(yè)務(wù)功能。服務(wù)器體系結(jié)構(gòu)如圖1所示,。
1.2 總體邏輯結(jié)構(gòu)設(shè)計(jì)
  服務(wù)器部分主要由設(shè)備接入服務(wù),、數(shù)據(jù)轉(zhuǎn)發(fā)、GPS信息服務(wù),、命令服務(wù),、業(yè)務(wù)信息服務(wù)和數(shù)據(jù)處理應(yīng)用、網(wǎng)絡(luò)監(jiān)控等模塊共同組成,。其邏輯結(jié)構(gòu)圖如圖2 所示,。

2 設(shè)備接入服務(wù)模塊
    在服務(wù)器設(shè)計(jì)過程中,設(shè)備接入服務(wù)模塊需要快速響應(yīng)和處理高并發(fā)終端的連接請求,,設(shè)備接入服務(wù)模塊設(shè)計(jì)的優(yōu)劣直接影響到整個(gè)系統(tǒng)的穩(wěn)定性和性能,。為了進(jìn)一步提高系統(tǒng)的性能,本節(jié)針對該模塊的網(wǎng)絡(luò)通信模型進(jìn)行了優(yōu)化,,通過完成端口(IOCP)通信模型設(shè)計(jì)并實(shí)現(xiàn)海量終端的連接請求,,并通過優(yōu)化系統(tǒng)資源管理使性能得到提高,。
2.1 IOCP機(jī)理
    IOCP(Input Output Completion Port)也稱完成端口,,是微軟提供的一種高效異步I/O通信模型。它摒棄了普通通信模型在接收到一個(gè)客戶端連接請求時(shí)就對應(yīng)地創(chuàng)建一個(gè)線程來應(yīng)答,,而是通過創(chuàng)建一定數(shù)量的工作線程,,對重疊I/O操作完成處理[3-6]。
    實(shí)際上,,將完成端口看作系統(tǒng)維護(hù)的一個(gè)消息隊(duì)列,,系統(tǒng)將所有用戶的I/O請求都放入該消息隊(duì)列中,并且從起先創(chuàng)建好的一定數(shù)量的工作線程中喚醒某一個(gè)線程來從I/O完成隊(duì)列中取出消息,,完成數(shù)據(jù)的處理,。
2.2 線程管理
    由于數(shù)據(jù)收發(fā)的處理對系統(tǒng)資源和處理器時(shí)間的消耗極為巨大,而本文所采用的完成端口通過使用線程池技術(shù)對所創(chuàng)建的線程進(jìn)行有效的管理,,從而較好地解決并發(fā)用戶連接的請求以及并發(fā)處理數(shù)據(jù),。一般系統(tǒng)線程池中工作線程可以歸納為3種狀態(tài):運(yùn)行中的狀態(tài),、被掛起的狀態(tài)以及在完成端口上等待的狀態(tài)[7]。
    默認(rèn)情況下,,線程池中的所創(chuàng)建的線程數(shù)目等于CPU的數(shù)目,,但是一旦線程處于被掛起狀態(tài),CPU就會(huì)處于空閑的狀態(tài),。因此定義線程數(shù)目對系統(tǒng)效率也有很大的影響,。然而過多數(shù)目的線程不一定換來系統(tǒng)的高處理能力,因?yàn)槿绻^多的線程并行運(yùn)行在操作系統(tǒng)中,,那么任何一個(gè)線程都有可能獲得時(shí)間運(yùn)行分片,,使得CPU疲于線程之間的上下文切換,造成CPU時(shí)間浪費(fèi),,從而降低系統(tǒng)的處理能力,。而根據(jù)實(shí)際應(yīng)用的效果,可以得出合理的工作線程的數(shù)目=CPU的個(gè)數(shù)×2+2,。
2.3 GPS車載終端接入管理
2.3.1 監(jiān)聽優(yōu)化管理

    對于終端接入的管理,,主要采用緩沖鏈表策略處理。當(dāng)終端連接上系統(tǒng),,先將其插入到緩沖鏈表中,,然后對此鏈表中終端進(jìn)行2 min的判斷。若2 min內(nèi)終端連接并且發(fā)送數(shù)據(jù),,就將其從緩沖鏈表中刪除,;若終端連接卻不發(fā)送數(shù)據(jù),就將其連接斷開,,目的是用來防止長時(shí)間連接的Socket不發(fā)數(shù)據(jù)卻一直霸占著系統(tǒng)資源,,造成資源浪費(fèi)。
2.3.2 多類型車載終端的接入管理
    由于各地GPS車載終端廠商不一樣,,導(dǎo)致設(shè)備終端的生產(chǎn)設(shè)計(jì)標(biāo)準(zhǔn)各異,。在實(shí)際應(yīng)用中,需要在設(shè)備接入模塊中考慮解決多類型的車載終端接入問題,,本文在設(shè)計(jì)接入模塊時(shí),,為每一種類型的終端建立一個(gè)對應(yīng)的協(xié)議類,并且為每一類型的終端建立單獨(dú)的監(jiān)聽端口,。在監(jiān)聽之前事先根據(jù)端口進(jìn)行注冊協(xié)議,,即將協(xié)議與監(jiān)聽端口相綁定,當(dāng)終端接入時(shí),,根據(jù)Socket所連接的端口映射到對應(yīng)的協(xié)議解析類中進(jìn)行解析,。如果有新類型的GPS車載終端,就對應(yīng)的構(gòu)造一個(gè)對應(yīng)的協(xié)議解析類,,這樣不僅增加了系統(tǒng)的可擴(kuò)展性,,也解決了車載終端設(shè)備多樣化的問題,。
2.4 內(nèi)存資源優(yōu)化管理
    作為設(shè)備接入服務(wù)端的開發(fā),合理地管理內(nèi)存是一個(gè)極其重要的問題,。在處理數(shù)據(jù)的過程中,,必定不斷地進(jìn)行內(nèi)存申請和釋放的操作。由于系統(tǒng)的資源有限,,如果頻繁對內(nèi)存進(jìn)行new和delete,,勢必造成系統(tǒng)堆棧變得雜亂無序,產(chǎn)生很多內(nèi)存碎片,,造成系統(tǒng)不穩(wěn)定,,降低性能。在此本文采取內(nèi)存池的方法來解決,,首先根據(jù)實(shí)際應(yīng)用需求,,事先創(chuàng)建好一定數(shù)量的單IO操作數(shù)據(jù)塊,并將其一并放入到一個(gè)空閑鏈表中,。當(dāng)需要進(jìn)行單IO操作數(shù)據(jù)空間的申請時(shí),,就從空閑鏈表檢查是否有滿足的空間,若滿足,,則分出一部分內(nèi)存空間進(jìn)行使用,;若不滿足,則繼續(xù)申請新的內(nèi)存空間,。當(dāng)使用完這個(gè)單IO操作數(shù)據(jù)空間時(shí),,并非直接銷毀掉,而是將其保存到空閑鏈表中,,供下次使用,。這樣就會(huì)消除因?yàn)轭l繁申請和釋放內(nèi)存帶來的碎片,減少了系統(tǒng)資源的浪費(fèi),,使系統(tǒng)性能得到提高,。
2.5 數(shù)據(jù)處理
    在開發(fā)接入模塊時(shí),傳輸層通信的協(xié)議采用TCP協(xié)議,。由于TCP字節(jié)流的特性以及網(wǎng)絡(luò)狀況,,在進(jìn)行數(shù)據(jù)傳輸時(shí)可能出現(xiàn)TCP粘包現(xiàn)象。假設(shè)接收端接收數(shù)據(jù)時(shí),,可能出現(xiàn)圖3所示的4種情況,白色表示Package1,,黑色表示Package2,。

    第一種情況是所需要的。而后3種情況屬于TCP粘包現(xiàn)象,,需要對數(shù)據(jù)進(jìn)行拆包,,拆成如第一種情況一樣的獨(dú)立的數(shù)據(jù)包,。
    針對以上現(xiàn)象給出分包算法。假設(shè)接收到的數(shù)據(jù)長度為N,,首先將數(shù)據(jù)轉(zhuǎn)換成自定義的結(jié)構(gòu)體形式,,并獲取結(jié)構(gòu)體中數(shù)據(jù)長度字段的值L進(jìn)行對比判斷。
    (1)如果L<N,,則說明所接收到的數(shù)據(jù)是多包數(shù)據(jù),,按照長度字段的值截取L字節(jié)數(shù)據(jù)進(jìn)行數(shù)據(jù)處理,而后繼續(xù)按照如此做法截取,,直至結(jié)束,;
    (2)如果L=N,則說明所接收到的數(shù)據(jù)是一個(gè)完整的數(shù)據(jù)包大小,,直接進(jìn)行數(shù)據(jù)處理,;
    (3)如果L>N,則說明所接收到的數(shù)據(jù)不足一個(gè)數(shù)據(jù)包大小,,存進(jìn)臨時(shí)緩沖區(qū)中,,等待接收下一個(gè)數(shù)據(jù)包進(jìn)行合并后再進(jìn)行判斷。
    通過分包算法能很好地解決TCP粘包的現(xiàn)象,,并正確執(zhí)行數(shù)據(jù)處理,。
3 實(shí)驗(yàn)結(jié)果與分析
    針對設(shè)備接入服務(wù)模塊的性能測試,本文主要從最大可支持終端的連接數(shù)目,、車載終端饑餓數(shù)目(在指定時(shí)間內(nèi)無法得到設(shè)備接入服務(wù)模塊響應(yīng)的終端數(shù)目),、系統(tǒng)CPU和內(nèi)存使用情況等4個(gè)方面來測試。為了更好地驗(yàn)證本文應(yīng)用IOCP模型對終端響應(yīng)進(jìn)行優(yōu)化的效果,,在測試階段實(shí)現(xiàn)了基于線程模型的性能對比測試,。
3.1 實(shí)驗(yàn)環(huán)境
    使用5臺(tái)處于同一個(gè)局域網(wǎng)的臺(tái)式機(jī),其中接入模塊所在的主機(jī)配置為:Intel I3 雙核處理器,,主頻2.66 GHz,,2 GB內(nèi)存。另外4臺(tái)客戶機(jī)配置為:Intel Pentium雙核處理器,,主頻2.20 GHz,,1 GB內(nèi)存。每臺(tái)客戶機(jī)上運(yùn)行一個(gè)模擬車載終端程序,,能創(chuàng)建5 000個(gè)Socket連接模擬實(shí)際GPS車載終端的連接情況,。
3.2 實(shí)驗(yàn)結(jié)果分析
    通過實(shí)驗(yàn)驗(yàn)證,可以得出基于IOCP模型的設(shè)備接入服務(wù)模塊最大可支持終端的連接數(shù)目可達(dá)20 000個(gè),。從圖4(a)可以明顯看出,,隨著終端數(shù)目的增加,即隨著Socket連接數(shù)的增多,,基于線程模型的服務(wù)端饑餓的終端數(shù)量也隨之增多,,而基于IOCP模型的服務(wù)端沒有出現(xiàn)終端連接請求得不到響應(yīng)的情況,。
    圖4(b)、圖4(c)為基于IOCP模型接入模塊的系統(tǒng)資源消耗情況,??梢钥闯觯m然剛啟動(dòng)程序,,內(nèi)存資源就消耗了100 MB,,但隨著終端數(shù)目的增加,CPU和內(nèi)存的消耗情況并沒有隨之而快速增長,,而是緩慢地增長,,因此可以得出基于IOCP模型的設(shè)備接入服務(wù)模塊具有良好的伸縮性能。

 

 

    基于上述設(shè)備接入服務(wù)模塊實(shí)現(xiàn)了GPS車輛監(jiān)控系統(tǒng),,該系統(tǒng)已在福州某出租車公司接近500輛車在線運(yùn)營監(jiān)控管理應(yīng)用,。在實(shí)際運(yùn)行過程中,系統(tǒng)都能快速,、及時(shí)地響應(yīng)GPS車載終端的接入請求,,并且呈現(xiàn)出良好的穩(wěn)定性和性能。
    針對需要快速響應(yīng)并處理高并發(fā)量的GPS車載終端的連接請求,,本文對GPS車輛監(jiān)控系統(tǒng)的服務(wù)器進(jìn)行優(yōu)化,。一方面本文優(yōu)化服務(wù)器架構(gòu)設(shè)計(jì),將服務(wù)器結(jié)構(gòu)劃分成三個(gè)層次,,避免單個(gè)服務(wù)器程序壓力太大,,實(shí)現(xiàn)高內(nèi)聚低耦合。另一方面結(jié)合IOCP通信模型對設(shè)備接入服務(wù)模塊進(jìn)行性能優(yōu)化,。通過采用線程池,、內(nèi)存池等方法較好地解決海量終端并發(fā)接入請求、信息定位和資源浪費(fèi)等問題,。其次,,采用緩沖鏈表對終端接入進(jìn)行監(jiān)聽優(yōu)化,避免惡意連接消耗系統(tǒng)資源,。對多類型的終端協(xié)議進(jìn)行統(tǒng)一管理,,解決多類型終端接入問題。最后,,為了確保數(shù)據(jù)的正確性,,在報(bào)文數(shù)據(jù)處理部分結(jié)合分包策略使得TCP粘包現(xiàn)象得到有效解決。另外,,經(jīng)過實(shí)際項(xiàng)目的應(yīng)用,,表明該服務(wù)器具有較好的性能和穩(wěn)定性。
參考文獻(xiàn)
[1] Liu Dan,,Liang Zongwen,,Li Yichao,et al.Research and  design of a high performance GPS vehicle monitoring  system[C].2010 International Conference on Future Information Technology and Management Engineering,,2010.
[2] 齊躍,,劉瀏.GPS車載監(jiān)控系統(tǒng)并發(fā)服務(wù)器的設(shè)計(jì)策略[J]. 武漢理工大學(xué)學(xué)報(bào)(信息與管理工程版),2012,,34(4):471-473.
[3] Wang Xinyu.A method using IOCP model to improve the performence of network equipment management systems[J].  Journal of Guangxi Academy of Sciences,,2012(1):9.
[4] Zhang Weiguo,Shi Donghui,,Li Lifeng.The design of the underlying network communication module based on IOCP[M]. Communications and Information Processing.Springer Berlin Heidelberg,,2012:17-24.
[5] 廖宏建,楊玉寶,,唐連章.完成端口實(shí)現(xiàn)高性能服務(wù)端通信層的關(guān)鍵問題[J].計(jì)算機(jī)應(yīng)用,,2012,32(3):812-815.
[6] GAO W,,WU H,,ZHANG Q,et al.An agricultural information transmission system based on smart display terminal  and IOCP[J].Intelligent Automation and Soft Computing,,2010,,16(6):935-943.
[7] 陳懷松,陳家琪.IOCP寫服務(wù)程序時(shí)的關(guān)鍵問題研究[J]. 計(jì)算機(jī)工程與設(shè)計(jì),,2010,,31(17):3793-3796.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。