周 霞,張 馳,曹鑫亮,于大為
(1.蘇州信息職業(yè)技術(shù)學(xué)院 大數(shù)據(jù)與互聯(lián)網(wǎng)學(xué)院,江蘇 蘇州 215200; 2.南通大學(xué) 地理科學(xué)學(xué)院,江蘇 南通 226007)
車(chē)輛監(jiān)控管理平臺(tái)[1-3]是以因特網(wǎng)、大數(shù)據(jù)[4-5]及云計(jì)算為基礎(chǔ),結(jié)合4G通信技術(shù)、地理信息技術(shù)、泛在技術(shù),將不斷運(yùn)動(dòng)的人、車(chē)和靜態(tài)的路、橋等對(duì)象結(jié)合[6]。在運(yùn)轉(zhuǎn)過(guò)程中,平臺(tái)采用車(chē)輛傳感設(shè)備,實(shí)時(shí)獲取車(chē)輛行駛過(guò)程中的位置、速度、狀態(tài)等信息,將這些數(shù)據(jù)進(jìn)行存儲(chǔ),并進(jìn)行相關(guān)的智能分析[7-11]。對(duì)車(chē)輛管理系統(tǒng)來(lái)說(shuō),所需要解決的一個(gè)核心問(wèn)題是大量汽車(chē)同時(shí)在線所帶來(lái)的高并發(fā)情況。針對(duì)該問(wèn)題,對(duì)數(shù)據(jù)的采集、處理等相關(guān)的問(wèn)題進(jìn)行了優(yōu)化[12-16]處理,使得系統(tǒng)能夠?qū)Ω卟l(fā)數(shù)據(jù)實(shí)現(xiàn)管理。
目前的車(chē)輛管理系統(tǒng)大多采用交通部部標(biāo)808協(xié)議,該協(xié)議能夠很好地對(duì)車(chē)輛的狀態(tài)進(jìn)行跟蹤并與車(chē)輛進(jìn)行有效交互。然而,目前也存在著大量不采用808協(xié)議的舊系統(tǒng)。為了將舊系統(tǒng)中的車(chē)輛進(jìn)行統(tǒng)一管理,有必要將這些系統(tǒng)升級(jí)到808協(xié)議平臺(tái)。但在升級(jí)過(guò)程中,會(huì)遇到如下問(wèn)題:在新系統(tǒng)開(kāi)發(fā)完成之后,往往不能直接替換,而是需要試運(yùn)行一段時(shí)間。在此期間,舊系統(tǒng)仍然需要繼續(xù)運(yùn)行,如何讓新、舊系統(tǒng)同時(shí)接入實(shí)時(shí)數(shù)據(jù)進(jìn)行運(yùn)行,是需要解決的核心問(wèn)題[17]。
針對(duì)上述問(wèn)題,本文提出一種服務(wù)器抓包轉(zhuǎn)發(fā)的方式來(lái)構(gòu)建一個(gè)中轉(zhuǎn)服務(wù)器,以該中轉(zhuǎn)服務(wù)器為核心,將所接收到的數(shù)據(jù)分別轉(zhuǎn)發(fā)給新舊系統(tǒng),實(shí)現(xiàn)新舊系統(tǒng)的同時(shí)運(yùn)行。
要實(shí)現(xiàn)傳感器數(shù)據(jù)的中轉(zhuǎn),需要解決以下幾個(gè)問(wèn)題:
1)大規(guī)模數(shù)據(jù)并發(fā)問(wèn)題。車(chē)輛管理系統(tǒng)要實(shí)現(xiàn)數(shù)據(jù)中轉(zhuǎn),大規(guī)模并發(fā)數(shù)據(jù)的壓力都會(huì)集中在中轉(zhuǎn)服務(wù)器上。服務(wù)器需要同時(shí)承擔(dān)數(shù)據(jù)的匯聚和轉(zhuǎn)發(fā),很容易形成數(shù)據(jù)瓶頸。
2)協(xié)議轉(zhuǎn)換問(wèn)題。新系統(tǒng)統(tǒng)一采用部標(biāo)808協(xié)議,而舊系統(tǒng)所采用的數(shù)據(jù)傳輸協(xié)議與新系統(tǒng)不同。因此中轉(zhuǎn)服務(wù)器還需要解決的一個(gè)問(wèn)題,即不同協(xié)議之間的兼容問(wèn)題。
3)數(shù)據(jù)持久化問(wèn)題。車(chē)輛管理系統(tǒng)運(yùn)行中數(shù)據(jù)量較大,若每收到一幀數(shù)據(jù)就立即連接數(shù)據(jù)庫(kù)進(jìn)行入庫(kù)處理,將會(huì)造成數(shù)據(jù)庫(kù)的頻繁開(kāi)、關(guān)操作,從而造成數(shù)據(jù)庫(kù)崩潰的后果。但如果不能對(duì)數(shù)據(jù)實(shí)時(shí)地進(jìn)行處理,客戶端的數(shù)據(jù)顯示則會(huì)產(chǎn)生延遲。
本文接下來(lái)將對(duì)數(shù)據(jù)并發(fā)、數(shù)據(jù)入庫(kù)、協(xié)議轉(zhuǎn)換等問(wèn)題進(jìn)行解決,最終實(shí)現(xiàn)新舊車(chē)輛管理系統(tǒng)的有效銜接。
傳統(tǒng)BIO在接受遠(yuǎn)程用戶的連接請(qǐng)求之后,就會(huì)為遠(yuǎn)程用戶建立一個(gè)線程并進(jìn)行處理。服務(wù)器在處理過(guò)程中會(huì)一直保留該線程直至處理完畢后銷(xiāo)毀。該架構(gòu)中,系統(tǒng)為每個(gè)單獨(dú)的連接創(chuàng)建線程的處理方式,在面對(duì)大規(guī)模并發(fā)數(shù)據(jù)時(shí),系統(tǒng)開(kāi)銷(xiāo)將急劇增長(zhǎng)。傳統(tǒng)BIO模型的處理方式,導(dǎo)致系統(tǒng)伸縮性較差,從而嚴(yán)重制約了整個(gè)系統(tǒng)的效率。在極端情況下,大量用戶在同一時(shí)間申請(qǐng)連接,服務(wù)器將會(huì)觸發(fā)線程創(chuàng)建失敗、堆棧溢出等情況,甚至可能出現(xiàn)系統(tǒng)崩潰等災(zāi)難性后果。
針對(duì)上述問(wèn)題,本項(xiàng)目選擇中間件Netty作為高性能通信框架,它采用一種基于NIO的異步非阻塞通信框架。NIO框架與傳統(tǒng)的BIO框架存在較大的區(qū)別,它有很強(qiáng)的可擴(kuò)展性與健壯性。該框架中相關(guān)核心組件如下:
1)Buffer。Buffer(緩沖區(qū))是包含一個(gè)數(shù)組的容器。通道(Channel)中的數(shù)據(jù)無(wú)論是讀取還是寫(xiě)入都必須以緩沖區(qū)為基礎(chǔ)。
2)Channel。Channel(通道)與一般流數(shù)據(jù)最顯著的區(qū)別在于,傳統(tǒng)流數(shù)據(jù)是單向的,但對(duì)于通道來(lái)說(shuō),它可以進(jìn)行雙向的讀取和寫(xiě)入操作。
3)Selector。Selector(選擇器)作為NIO框架的核心部件,它能夠通過(guò)輪詢的模式檢測(cè)到注冊(cè)的通道是否發(fā)生了相關(guān)事件,如果有事件發(fā)生,則調(diào)用事件處理程序進(jìn)行相應(yīng)處理。
本文設(shè)計(jì)的NIO的異步非阻塞通信架構(gòu)中,存在一個(gè)線程池,其中包含大量線程。這種情況下,就不需要為每個(gè)連接請(qǐng)求重新創(chuàng)建線程。采用線程池之后,用少量的線程就能為大量的遠(yuǎn)程終端服務(wù)了。遠(yuǎn)程終端建立連接之后,首先需要到選擇器上完成注冊(cè)(見(jiàn)圖1),選擇器將對(duì)注冊(cè)在其上的通道輪詢,查詢是否觸發(fā)了相應(yīng)事件。發(fā)現(xiàn)查詢的通道有事件發(fā)生,便可截獲該事件并進(jìn)行處理。當(dāng)涉及讀或?qū)懙氖录|發(fā)時(shí),線程池會(huì)調(diào)用線程來(lái)對(duì)其進(jìn)行處理。該操作模式將原有的同步阻塞式通信方式變?yōu)楫惒椒亲枞酵ㄐ欧绞剑到y(tǒng)維護(hù)成本得以大幅度降低,系統(tǒng)效率也得以大幅度提高。通過(guò)該框架,數(shù)據(jù)中轉(zhuǎn)服務(wù)器就可以對(duì)大規(guī)模并發(fā)數(shù)據(jù)實(shí)現(xiàn)很好的接收。
圖1 NIO內(nèi)部執(zhí)行圖
基于Netty框架,本文設(shè)計(jì)了數(shù)據(jù)中轉(zhuǎn)服務(wù)器,數(shù)據(jù)中轉(zhuǎn)服務(wù)器主要解決大規(guī)模數(shù)據(jù)的并發(fā)接收、中轉(zhuǎn)以及協(xié)議轉(zhuǎn)換問(wèn)題。其工作原理如圖2所示,遠(yuǎn)程傳感器終端發(fā)送大量并發(fā)數(shù)據(jù)到達(dá)中轉(zhuǎn)服務(wù)器的網(wǎng)卡之后,中轉(zhuǎn)服務(wù)器對(duì)數(shù)據(jù)包進(jìn)行抓取,并基于NIO框架的線程組向目標(biāo)主機(jī)實(shí)現(xiàn)轉(zhuǎn)發(fā)。在此期間,中轉(zhuǎn)主機(jī)可對(duì)所抓取的數(shù)據(jù)不經(jīng)過(guò)處理,直接轉(zhuǎn)發(fā);也可以在進(jìn)行簡(jiǎn)要處理后再向目標(biāo)服務(wù)器進(jìn)行轉(zhuǎn)發(fā)。由于本文的中轉(zhuǎn)服務(wù)器需要實(shí)現(xiàn)新舊系統(tǒng)之間的協(xié)議轉(zhuǎn)換,因此采取上述第二種模式,在接收到遠(yuǎn)程終端發(fā)來(lái)的數(shù)據(jù)后,首先對(duì)其進(jìn)行解析,在此基礎(chǔ)上,根據(jù)所對(duì)接的新、舊系統(tǒng)所使用的協(xié)議進(jìn)行協(xié)議轉(zhuǎn)換,最后將轉(zhuǎn)換后的數(shù)據(jù)通過(guò)線程組發(fā)送給相應(yīng)的模塊。
圖2 數(shù)據(jù)中轉(zhuǎn)模塊示意圖
通過(guò)高性能NIO框架以及數(shù)據(jù)中轉(zhuǎn)服務(wù)器,就能很好地解決數(shù)據(jù)的高并發(fā)問(wèn)題以及新舊系統(tǒng)之間的協(xié)議轉(zhuǎn)換問(wèn)題,使得在系統(tǒng)更替、試運(yùn)行時(shí),能夠?qū)崿F(xiàn)雙系統(tǒng)的同步運(yùn)行,有效降低系統(tǒng)升級(jí)所帶來(lái)的不確定性。
作為一個(gè)大型服務(wù)系統(tǒng),在系統(tǒng)運(yùn)行過(guò)程中,經(jīng)常出現(xiàn)大量傳感器同時(shí)發(fā)送數(shù)據(jù)的情況,在此影響下,后臺(tái)數(shù)據(jù)庫(kù)服務(wù)器在特定時(shí)刻或時(shí)段將會(huì)收到大規(guī)模并發(fā)數(shù)據(jù)。
在接收到數(shù)據(jù)之后,需要綜合考慮兩個(gè)問(wèn)題。首先數(shù)據(jù)能夠?qū)崟r(shí)地在客戶端進(jìn)行顯示;其次數(shù)據(jù)能夠完整地進(jìn)行持久化,為以后的歷史數(shù)據(jù)反演(如軌跡回放)做準(zhǔn)備。
這就帶來(lái)一個(gè)矛盾,對(duì)于規(guī)模巨大的數(shù)據(jù),如果每收到一個(gè)數(shù)據(jù)就進(jìn)行處理的話,由于數(shù)據(jù)并發(fā)量太大,頻繁地開(kāi)、關(guān)后臺(tái)數(shù)據(jù)庫(kù)必然會(huì)使得數(shù)據(jù)庫(kù)崩潰;與此同時(shí),頻繁的數(shù)據(jù)庫(kù)開(kāi)、關(guān)操作也將導(dǎo)致數(shù)據(jù)庫(kù)的開(kāi)、關(guān)時(shí)間要高于原始的數(shù)據(jù)處理時(shí)間。因此倘若接到一幀數(shù)據(jù)就進(jìn)行數(shù)據(jù)庫(kù)入庫(kù)操作,不管從性能上還是技術(shù)上都不具備可操作性。但如果等收集到一定數(shù)據(jù)之后集中進(jìn)行處理的話,又會(huì)面臨一個(gè)問(wèn)題,即數(shù)據(jù)不能夠?qū)崟r(shí)地在客戶端進(jìn)行顯示??紤]上述問(wèn)題,本文采用圖3所示的框架實(shí)現(xiàn)數(shù)據(jù)的持久化。
該模塊同樣采用支持NIO框架的Netty來(lái)進(jìn)行實(shí)現(xiàn)。該框架由數(shù)據(jù)接收主線程、數(shù)據(jù)處理模塊、數(shù)據(jù)緩存、數(shù)據(jù)隊(duì)列及持久化模塊等組成。在數(shù)據(jù)接入之后,首先由主線程進(jìn)行接收,并分派給子線程。子線程中,短事務(wù)線程先進(jìn)行接收。短事務(wù)線程所做的操作主要包括數(shù)據(jù)接收、協(xié)議解析等。如遇到需要處理的長(zhǎng)事務(wù),如文件讀寫(xiě)、數(shù)據(jù)庫(kù)讀寫(xiě)等,則將其包裝成一個(gè)“任務(wù)”,交給長(zhǎng)事務(wù)線程進(jìn)行調(diào)用。
要想使得數(shù)據(jù)庫(kù)能夠容納大規(guī)模并發(fā)數(shù)據(jù)的入庫(kù),則必須采用集中入庫(kù)的方式,即服務(wù)器再接收到一定的數(shù)據(jù)之后,統(tǒng)一入庫(kù)。集中入庫(kù)帶來(lái)一個(gè)問(wèn)題即數(shù)據(jù)延遲,考慮到該問(wèn)題,本文采用的核心思路是數(shù)據(jù)緩存與延遲入庫(kù)。該框架在收到遠(yuǎn)程終端發(fā)來(lái)的一條數(shù)據(jù)后,首先將其存儲(chǔ)在數(shù)據(jù)緩存中,不直接進(jìn)行入庫(kù)操作。等待一定的時(shí)間后,再將之前存儲(chǔ)在緩存中的數(shù)據(jù)進(jìn)行批量入庫(kù),通過(guò)這種方式,來(lái)避免數(shù)據(jù)庫(kù)的頻繁斷、連操作,從而提高平臺(tái)的運(yùn)行效率。對(duì)于緩存的容量以及延遲入庫(kù)的時(shí)間,也必須要根據(jù)具體情況進(jìn)行合理設(shè)置。一般情況下為5 s或8 s,即每隔5 s或8 s將把緩存中的數(shù)據(jù)批量寫(xiě)入數(shù)據(jù)庫(kù)。但是假如在一個(gè)時(shí)間點(diǎn)接收到大量數(shù)據(jù),那么即使入庫(kù)時(shí)間并未到達(dá),由于數(shù)據(jù)緩存已經(jīng)用完,也需要立刻對(duì)暫存在緩存中的數(shù)據(jù)進(jìn)行批量入庫(kù)操作。
在這種方式下,短事務(wù)線程在接收到數(shù)據(jù)之后,同時(shí)對(duì)數(shù)據(jù)緩存服務(wù)器與數(shù)據(jù)隊(duì)列進(jìn)行寫(xiě)入,并以相應(yīng)的策略對(duì)緩存服務(wù)器進(jìn)行維護(hù)。以保證延遲入庫(kù)不對(duì)數(shù)據(jù)的實(shí)時(shí)性產(chǎn)生影響。
該框架在清空原有數(shù)據(jù)緩存空間以及數(shù)據(jù)批量入庫(kù)的過(guò)程中,仍有可能會(huì)有大規(guī)模傳感器數(shù)據(jù)接入。如果不進(jìn)行相應(yīng)處理,將會(huì)丟失大量數(shù)據(jù)。針對(duì)該問(wèn)題,本文重新設(shè)置一個(gè)數(shù)據(jù)緩存來(lái)與現(xiàn)有的數(shù)據(jù)緩存進(jìn)行配合。即系統(tǒng)中同時(shí)使用兩個(gè)數(shù)據(jù)緩存——緩存X和緩存Y。當(dāng)緩存X容量已滿,系統(tǒng)將暫時(shí)不再對(duì)緩存X進(jìn)行寫(xiě)入,而是轉(zhuǎn)而對(duì)緩存Y進(jìn)行寫(xiě)入;相應(yīng)地,當(dāng)緩存Y容量已滿,而緩存X被清空之后,系統(tǒng)將重新對(duì)緩存X進(jìn)行寫(xiě)入。當(dāng)系統(tǒng)批量入庫(kù)時(shí)間到后,緩存中的數(shù)據(jù)被寫(xiě)入數(shù)據(jù)庫(kù),緩存也將被清空。在某些特殊的應(yīng)用場(chǎng)景下,需要對(duì)某傳感器進(jìn)行單獨(dú)跟蹤,這就需要對(duì)原始入庫(kù)的時(shí)間進(jìn)行調(diào)整,加大入庫(kù)頻率(如設(shè)置3 s的入庫(kù)間隔時(shí)間)。由于該要求比較特殊,不同于其他一般的入庫(kù)信息,所以需要設(shè)置一個(gè)單獨(dú)的線程來(lái)獨(dú)立負(fù)責(zé)接收該車(chē)載傳感器的數(shù)據(jù),從而確保對(duì)該車(chē)載傳感器的持續(xù)跟蹤。
為了提高車(chē)輛管理系統(tǒng)的整體運(yùn)行效率,在數(shù)據(jù)入庫(kù)過(guò)程中,需要將接收數(shù)據(jù)和寫(xiě)數(shù)據(jù)庫(kù)的功能分開(kāi)。在本文所述框架中,若將數(shù)據(jù)接收和數(shù)據(jù)批量入庫(kù)功能整合在同一個(gè)線程,不僅會(huì)使當(dāng)前系統(tǒng)的運(yùn)行效率大幅度下降,而且很可能會(huì)造成服務(wù)器的崩潰。所以本文設(shè)定接收數(shù)據(jù)的線程只負(fù)責(zé)數(shù)據(jù)接收,與此同時(shí),單獨(dú)啟動(dòng)一個(gè)線程,專門(mén)負(fù)責(zé)數(shù)據(jù)庫(kù)的寫(xiě)入操作。這種操作模式不僅可以更好地提升整個(gè)系統(tǒng)的運(yùn)轉(zhuǎn)效率,還能在極大程度上加強(qiáng)系統(tǒng)的可維護(hù)性與穩(wěn)定性。
為了驗(yàn)證本文基于上述提出的一系列方法的有效性。為了保證數(shù)據(jù)的安全性,在新系統(tǒng)上線之后,舊系統(tǒng)將和新系統(tǒng)同步運(yùn)行一段時(shí)間,等新系統(tǒng)完全穩(wěn)定之后,再將舊系統(tǒng)停止??紤]到該需求,本系統(tǒng)采用數(shù)據(jù)轉(zhuǎn)發(fā)的方式對(duì)新舊車(chē)輛管理系統(tǒng)進(jìn)行銜接。在數(shù)據(jù)到達(dá)轉(zhuǎn)發(fā)服務(wù)器后,一路數(shù)據(jù)由轉(zhuǎn)發(fā)服務(wù)器轉(zhuǎn)入舊系統(tǒng),另一路數(shù)據(jù)則轉(zhuǎn)入新系統(tǒng)。舊系統(tǒng)為如東市出租車(chē)管理信息系統(tǒng),采用非部標(biāo)808協(xié)議。新系統(tǒng)為江蘇太平洋通訊科技有限公司開(kāi)發(fā)的支持部標(biāo)808協(xié)議的車(chē)輛通訊管理系統(tǒng),如圖4所示。
圖4 實(shí)驗(yàn)思路
主要從兩個(gè)方面來(lái)驗(yàn)證本文方法:1)數(shù)據(jù)轉(zhuǎn)接后,新系統(tǒng)對(duì)協(xié)議轉(zhuǎn)接與大規(guī)模并發(fā)車(chē)輛數(shù)據(jù)的支持。這就要求新系統(tǒng)能夠順利的實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)接,從舊系統(tǒng)協(xié)議轉(zhuǎn)換到部標(biāo)808協(xié)議,且支持10 000以上級(jí)別的大規(guī)模并發(fā)車(chē)輛同時(shí)在線;2)新系統(tǒng)對(duì)數(shù)據(jù)批量入庫(kù)的支持。這就要求新系統(tǒng)能夠支持歷史數(shù)據(jù)的存儲(chǔ)和訪問(wèn),支持類似歷史軌跡回放等功能的使用。
實(shí)驗(yàn)步驟如下:第一步,將如東出租車(chē)系統(tǒng)數(shù)據(jù)接入數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器;第二步,將數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器所獲取的數(shù)據(jù)劃分為兩組數(shù)據(jù)轉(zhuǎn)出。一組為如東市出租車(chē)系統(tǒng),另一組為江蘇太平洋通訊科技有限公司的新系統(tǒng)。將接入新系統(tǒng)的數(shù)據(jù)做預(yù)處理,即數(shù)據(jù)協(xié)議轉(zhuǎn)換,將舊系統(tǒng)的協(xié)議轉(zhuǎn)化為部標(biāo)808協(xié)議;第三步,將新系統(tǒng)采用數(shù)據(jù)持久化框架進(jìn)行處理,實(shí)現(xiàn)大規(guī)模并發(fā)數(shù)據(jù)的批量入庫(kù)與實(shí)時(shí)可視化。最后,訪問(wèn)歷史數(shù)據(jù)庫(kù),實(shí)現(xiàn)車(chē)輛的歷史軌跡回放功能,驗(yàn)證數(shù)據(jù)入庫(kù)的有效性。
經(jīng)過(guò)上述步驟,本文實(shí)驗(yàn)結(jié)果如下:
1)新系統(tǒng)對(duì)協(xié)議轉(zhuǎn)換及大規(guī)模并發(fā)數(shù)據(jù)的支持。圖5展示了通過(guò)銜接系統(tǒng)中轉(zhuǎn)平臺(tái)并進(jìn)行協(xié)議轉(zhuǎn)換之后新系統(tǒng)的運(yùn)行界面。該系統(tǒng)可以支持50 000級(jí)別的車(chē)輛同時(shí)在線,上述車(chē)輛每隔5 s向服務(wù)器發(fā)送1 kB大小的數(shù)據(jù)幀,該系統(tǒng)能夠比較好地實(shí)現(xiàn)并發(fā)數(shù)據(jù)的接收,不出現(xiàn)異常情況。
圖5 車(chē)輛監(jiān)控系統(tǒng)界面圖
2)該系統(tǒng)很好地處理了數(shù)據(jù)實(shí)時(shí)顯示與數(shù)據(jù)入庫(kù)的問(wèn)題。在接收到一條數(shù)據(jù)之后,系統(tǒng)能夠很好地對(duì)其進(jìn)行響應(yīng),并在界面上進(jìn)行顯示。在積累一定的數(shù)據(jù)之后,數(shù)據(jù)會(huì)批量存入數(shù)據(jù)庫(kù)。圖6展示了軌跡回放功能,該功能需要基于歷史數(shù)據(jù)對(duì)車(chē)輛的位置進(jìn)行查詢,并形成軌跡。該功能的正常運(yùn)行表明了系統(tǒng)能夠?qū)v史數(shù)據(jù)完好的存入數(shù)據(jù)庫(kù),為后期的數(shù)據(jù)分析提供支持。
圖6 車(chē)輛歷史軌跡回放
實(shí)驗(yàn)表明,新系統(tǒng)能支持50 000級(jí)別的大規(guī)模并發(fā)數(shù)據(jù)的接入,實(shí)時(shí)表達(dá)與批量入庫(kù)。但依然存在一定的問(wèn)題,主要體現(xiàn)在:一旦數(shù)據(jù)量突破50 000級(jí)別時(shí),系統(tǒng)會(huì)出現(xiàn)CPU和內(nèi)存使用率上升的問(wèn)題,并導(dǎo)致服務(wù)器數(shù)據(jù)丟失。這是因?yàn)閱闻_(tái)服務(wù)器的處理能力存在一定的上限,一旦達(dá)到這個(gè)上限,數(shù)據(jù)服務(wù)器將會(huì)成為整個(gè)系統(tǒng)的瓶頸。隨著CPU和內(nèi)存的占用率上升,系統(tǒng)接入大規(guī)模并發(fā)傳感器數(shù)據(jù)的能力逐步減弱,在達(dá)到一個(gè)閾值之后,將有可能產(chǎn)生服務(wù)器整體崩潰的情況。
在今后,將考慮對(duì)系統(tǒng)進(jìn)一步升級(jí)。以數(shù)據(jù)中轉(zhuǎn)服務(wù)器為基礎(chǔ),實(shí)現(xiàn)多臺(tái)服務(wù)器的負(fù)載均衡,進(jìn)一步提高系統(tǒng)的吞吐量。
本文基于數(shù)據(jù)中轉(zhuǎn)框架,對(duì)新舊車(chē)輛管理系統(tǒng)進(jìn)行了銜接,并有效解決了銜接過(guò)程中的相關(guān)問(wèn)題,并得出以下結(jié)論:
1)基于Netty架構(gòu)構(gòu)建的數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器,能夠很好地實(shí)現(xiàn)大規(guī)模并發(fā)車(chē)輛傳感器數(shù)據(jù)的轉(zhuǎn)發(fā)。在轉(zhuǎn)發(fā)服務(wù)器中進(jìn)行協(xié)議轉(zhuǎn)換,就可以有效地實(shí)現(xiàn)新舊系統(tǒng)的銜接。
2)基于延遲入庫(kù)與數(shù)據(jù)緩存策略,本系統(tǒng)能夠有效實(shí)現(xiàn)大規(guī)模并發(fā)車(chē)載傳感數(shù)據(jù)批量入庫(kù)與實(shí)時(shí)顯示。
3)基于本文所提出的數(shù)據(jù)中轉(zhuǎn)框架,可以有效地實(shí)現(xiàn)基于不同協(xié)議的車(chē)輛管理系統(tǒng)的銜接,實(shí)現(xiàn)新舊系統(tǒng)的無(wú)縫過(guò)渡。