張愛(ài)玲,曹 磊
(1.西安理工大學(xué),陜西 西安 710082;2.河南科技大學(xué),河南 洛陽(yáng) 471023)
自從我國(guó)將“互聯(lián)網(wǎng)+物流”劃入重點(diǎn)規(guī)劃后,“互聯(lián)網(wǎng)+物流”便乘上了大眾創(chuàng)業(yè)、萬(wàn)眾創(chuàng)新的東風(fēng),物流業(yè)得到飛速發(fā)展??傮w來(lái)看,中國(guó)物流產(chǎn)業(yè)的總體規(guī)模目前還比較小,發(fā)展水平也比較低,這一方面是由我國(guó)經(jīng)濟(jì)發(fā)展的水平和階段所決定的,另一方面,也是更為重要的是我國(guó)經(jīng)濟(jì)中還存在著許多影響和制約物流產(chǎn)業(yè)健康發(fā)展的因素[1]。李克強(qiáng)總理提出“要推動(dòng)互聯(lián)網(wǎng)、大數(shù)據(jù)、云計(jì)算等信息技術(shù)與物流深度融合,推動(dòng)物流業(yè)乃至中國(guó)經(jīng)濟(jì)的轉(zhuǎn)型升級(jí),這是物流業(yè)的供給側(cè)改革。”由此證明了“互聯(lián)網(wǎng)+物流”已成為我國(guó)未來(lái)物流業(yè)發(fā)展的大趨勢(shì)[2]。
通過(guò)分析大件物流行業(yè)中存在的問(wèn)題,本文將互聯(lián)網(wǎng)、大數(shù)據(jù)、云計(jì)算等信息技術(shù)與物流產(chǎn)業(yè)進(jìn)行深度融合,構(gòu)建出一個(gè)獨(dú)立的車(chē)輛軌跡監(jiān)控平臺(tái),通過(guò)全球定位系統(tǒng)(Global Positioning System, GPS)、APP(即智能手機(jī)的第三方應(yīng)用程序)及電子圍欄等技術(shù)進(jìn)行車(chē)輛軌跡上傳,實(shí)現(xiàn)物流全流程節(jié)點(diǎn)配裝到簽收的精確展現(xiàn),實(shí)現(xiàn)物流配送精準(zhǔn),達(dá)到了物流平臺(tái)對(duì)物流運(yùn)輸配送過(guò)程中的可視化業(yè)務(wù)管理,滿足了大件物流行業(yè)要求的物流信息透明化戰(zhàn)略要求[3]。
大件物流信息監(jiān)控平臺(tái)主要的監(jiān)控對(duì)象是車(chē)輛,本系統(tǒng)通過(guò)車(chē)輛軌跡監(jiān)控來(lái)實(shí)現(xiàn)物流的跟蹤。平臺(tái)采用基于消息機(jī)制的線程隊(duì)列技術(shù)來(lái)實(shí)現(xiàn)任務(wù)之間的事件驅(qū)動(dòng);采用分布式集群作為具有高并發(fā)能力的終端接入層的實(shí)現(xiàn)模式;采用緩存與數(shù)據(jù)庫(kù)集群以及數(shù)據(jù)庫(kù)的垂直與水平切分作為數(shù)據(jù)存儲(chǔ)層,從而提升系統(tǒng)整體數(shù)據(jù)I/O能力;選取JSP+Action+Delegate+Webservice+Domain+Dao的典型設(shè)計(jì)模式作為Web層的實(shí)現(xiàn)模式;采用Spring+JDBC+Mongo+MySQL作為后端的框架。
圖1 車(chē)輛軌跡監(jiān)控平臺(tái)總體架構(gòu)
車(chē)輛軌跡監(jiān)控平臺(tái)應(yīng)用架構(gòu)完全基于JavaEE的系統(tǒng)體系,使用Spring MVC為整體Web框架,使用Spring為核心業(yè)務(wù)模型層,使用JDBC為數(shù)據(jù)訪問(wèn)層,使用MySQL為數(shù)據(jù)庫(kù)持久層,使用MongoDB為緩存與非結(jié)構(gòu)化存儲(chǔ)層,以ActiveMQ為消息中間件。本平臺(tái)針對(duì)數(shù)據(jù)量大、并發(fā)大和業(yè)務(wù)功能本身的要求,選擇基于Spring、SpringMVC、ORM、MongoDB、Netty、ActiveMQ的整套技術(shù)體系架構(gòu),整體結(jié)構(gòu)支持基于虛擬化技術(shù)的進(jìn)行云服務(wù)的規(guī)?;渴稹?/p>
系統(tǒng)的應(yīng)用架構(gòu)采用分層設(shè)計(jì)的理念[4],基于JavaEE的整體技術(shù)體系,結(jié)合本系統(tǒng)的特點(diǎn),將系統(tǒng)分為前端展示層、終端接入層、服務(wù)總線層、基礎(chǔ)設(shè)施層等多層體系,如圖1所示。
本平臺(tái)在數(shù)據(jù)流轉(zhuǎn)維護(hù)時(shí),采用圖2所示的處理方案。在圖2中,GPS上行數(shù)據(jù)流是APP通過(guò)數(shù)據(jù)移動(dòng)網(wǎng)絡(luò)將GPS數(shù)據(jù)發(fā)送至服務(wù)器,接收數(shù)據(jù)的為平臺(tái)的終端接入層,終端接入層將數(shù)據(jù)進(jìn)行實(shí)時(shí)的大數(shù)據(jù)存儲(chǔ),之后進(jìn)行相關(guān)的業(yè)務(wù)邏輯判斷。將終端接入層產(chǎn)生的業(yè)務(wù)事件通過(guò)MQ集群發(fā)送至平臺(tái)服務(wù)層,之后由平臺(tái)服務(wù)層進(jìn)行業(yè)務(wù)邏輯處理。APP業(yè)務(wù)處理數(shù)據(jù)流是司機(jī)端應(yīng)用APP通過(guò)移動(dòng)網(wǎng)絡(luò)調(diào)用本平臺(tái)的對(duì)外接口服務(wù),接口服務(wù)將請(qǐng)求數(shù)據(jù)分發(fā)至平臺(tái)服務(wù)層,進(jìn)行相關(guān)的業(yè)務(wù)邏輯處理,平臺(tái)服務(wù)層處理完成之后通過(guò)接口服務(wù)將響應(yīng)結(jié)果數(shù)據(jù)返回至APP端。
對(duì)于外部系統(tǒng)請(qǐng)求數(shù)據(jù)流,是外部系統(tǒng)在某些場(chǎng)景下會(huì)請(qǐng)求本平臺(tái)的數(shù)據(jù)服務(wù),由對(duì)外接口服務(wù)統(tǒng)一接入外部請(qǐng)求,之后將請(qǐng)求數(shù)據(jù)分發(fā)至平臺(tái)服務(wù)層,進(jìn)行相關(guān)的業(yè)務(wù)邏輯處理,平臺(tái)服務(wù)層處理完成之后通過(guò)接口服務(wù),將響應(yīng)結(jié)果數(shù)據(jù)返回至外部系統(tǒng)。
平臺(tái)采用分層分布式的軟件技術(shù)體系[5],因此每一層軟件都采用集群的方式,集群下的每個(gè)節(jié)點(diǎn)分別運(yùn)行在不同的物理服務(wù)器之上,采用交叉部署的方式進(jìn)行。設(shè)備接入的總?cè)肟诓捎秘?fù)載均衡設(shè)備(F5/A10)進(jìn)行統(tǒng)一的負(fù)載接入,將負(fù)載數(shù)據(jù)分發(fā)至設(shè)備接入集群,此后數(shù)據(jù)進(jìn)入系統(tǒng)內(nèi)部進(jìn)行業(yè)務(wù)處理與前端展示。
本平臺(tái)基于JavaEE技術(shù)體系,采用系統(tǒng)模塊化分層設(shè)計(jì),各個(gè)層所負(fù)責(zé)的職責(zé)不同,相互之間配合完成整體系統(tǒng)的業(yè)務(wù)功能流程,同時(shí)可以非常好地實(shí)現(xiàn)系統(tǒng)的擴(kuò)展、性能的調(diào)優(yōu)、系統(tǒng)模塊化升級(jí)等。
終端接入層是APP的GPS數(shù)據(jù)上行下行的唯一通道,如圖3所示,終端接入層與APP端進(jìn)行數(shù)據(jù)協(xié)議的制定,通過(guò)標(biāo)準(zhǔn)的通信協(xié)議與數(shù)據(jù)協(xié)議進(jìn)行通信,終端接入層接收到APP上行來(lái)的數(shù)據(jù),將進(jìn)行初步的邏輯判斷,并將原始GPS數(shù)據(jù)存入大數(shù)據(jù)平臺(tái),之后將初步判斷的結(jié)果性事件信息傳入數(shù)據(jù)通信層(MQ)。
圖3 APP終端接入層
為了保證終端接入層在未來(lái)能夠支撐10萬(wàn)的并發(fā),終端接入層采用了集群化的軟件管理模式,并通過(guò)前端負(fù)載設(shè)備將數(shù)據(jù)分發(fā)至不同的接入層節(jié)點(diǎn),實(shí)現(xiàn)數(shù)據(jù)處理能力的負(fù)載分發(fā),從而實(shí)現(xiàn)大并發(fā)的APP端數(shù)據(jù)上行的處理能力。終端接入層的解析適配器可以適配多種設(shè)備數(shù)據(jù)協(xié)議(XML、JSON)、多種通訊協(xié)議(HTTP、TCP/IP、UDP),能夠達(dá)到無(wú)縫集成各類(lèi)終端,如手機(jī)APP、GPS終端、外部系統(tǒng)等。
數(shù)據(jù)由終端接入到平臺(tái)之后,會(huì)路由到數(shù)據(jù)通信層。平臺(tái)的數(shù)據(jù)通信層采用相應(yīng)的消息隊(duì)列中間件(MQ)進(jìn)行數(shù)據(jù)的存儲(chǔ)與轉(zhuǎn)發(fā),來(lái)提高系統(tǒng)對(duì)大量終端上報(bào)數(shù)據(jù)的處理能力、減少系統(tǒng)通信阻塞、提高協(xié)議適配等多方面功能。
平臺(tái)所采用的是Apache的ActiveMQ,可支持每秒數(shù)萬(wàn)級(jí)的并發(fā),同時(shí)可支持集群方式,能夠?yàn)楹罄m(xù)的吞吐量擴(kuò)充提供良好的保障。
平臺(tái)總線服務(wù)層是系統(tǒng)的核心業(yè)務(wù)單元,包括核心的業(yè)務(wù)模塊、流程、規(guī)則、數(shù)據(jù)訪問(wèn)、系統(tǒng)集成、統(tǒng)計(jì)報(bào)表、組織架構(gòu)、安全模塊、核心GPS算法等。平臺(tái)總線服務(wù)層最終是以Service的方式對(duì)外提供服務(wù)。服務(wù)總線層功能如表1所示。
表1 車(chē)輛軌跡監(jiān)控平臺(tái)數(shù)據(jù)通信層功能
Web展現(xiàn)層是整個(gè)系統(tǒng)平臺(tái)的UI展現(xiàn)部分,為用戶提供了所有的UI界面功能。UI層不做任何業(yè)務(wù)邏輯和數(shù)據(jù)存儲(chǔ)邏輯,它與服務(wù)總線層通過(guò)服務(wù)調(diào)用的方式進(jìn)行通信,為系統(tǒng)用戶提供管理界面的使用。
Web展現(xiàn)層采用了JSP+Jquery+Ajax的技術(shù)框架,充分體現(xiàn)了Web2.0的良好交互體驗(yàn)。
本系統(tǒng)會(huì)產(chǎn)生海量的GPS數(shù)據(jù),而同時(shí)GPS數(shù)據(jù)中的經(jīng)緯度又是空間數(shù)據(jù),空間數(shù)據(jù)采用[經(jīng)度,緯度]的模型進(jìn)行存儲(chǔ),在系統(tǒng)中還會(huì)有大量的基于GPS信息的電子圍欄計(jì)算、距離計(jì)算等算法需要對(duì)空間數(shù)據(jù)進(jìn)行解析計(jì)算,因此空間數(shù)據(jù)的海量數(shù)據(jù)存儲(chǔ)與訪問(wèn)成為非常重要的設(shè)計(jì)環(huán)節(jié),直接影響到系統(tǒng)的核心功能與性能實(shí)現(xiàn)。
本模塊采用基于MongoDB進(jìn)行GPS海量數(shù)據(jù)的存儲(chǔ),結(jié)合MapReduce技術(shù)實(shí)現(xiàn)數(shù)據(jù)的分布式存儲(chǔ)與讀取,從而大大地提高了大數(shù)據(jù)的處理能力,為后續(xù)的數(shù)據(jù)挖掘、大數(shù)據(jù)分析、高性能的軌跡查詢、軌跡分析等提供非常有力的支撐。大數(shù)據(jù)處理平臺(tái)如圖4所示。
本系統(tǒng)會(huì)與外部系統(tǒng)及其他相關(guān)業(yè)務(wù)系統(tǒng)進(jìn)行對(duì)接,由于系統(tǒng)多元化,系統(tǒng)的接口方式不確定,因此本系統(tǒng)實(shí)現(xiàn)了幾乎所有的接口方式,包括Web/HTTP Service、消息隊(duì)列、接口表等各種服務(wù),如圖5所示。此外,本系統(tǒng)也會(huì)適配各種外部系統(tǒng)所提供的接口,從而實(shí)現(xiàn)全部的請(qǐng)求、響應(yīng)流程,更好地使本系統(tǒng)在內(nèi)部無(wú)縫地與其他系統(tǒng)進(jìn)行集成。
除了通信模式的多元化,系統(tǒng)還能夠提供不同級(jí)別的數(shù)據(jù)協(xié)議,更好地實(shí)現(xiàn)系統(tǒng)間數(shù)據(jù)傳遞的便捷、高效。
圖4 大數(shù)據(jù)處理平臺(tái)
圖5 車(chē)輛軌跡監(jiān)控平臺(tái)接口設(shè)計(jì)
本系統(tǒng)中的大并發(fā)量主要體現(xiàn)在APP終端接入量在初期要支撐2萬(wàn),未來(lái)要達(dá)到10萬(wàn)。在架構(gòu)設(shè)計(jì)上,系統(tǒng)采用了分布式的終端接入層集群架構(gòu),采用統(tǒng)一的入口負(fù)載均衡機(jī)制將APP上行的GPS數(shù)據(jù)進(jìn)行分發(fā)處理,通過(guò)擴(kuò)充終端接入層的實(shí)例節(jié)點(diǎn)來(lái)增加系統(tǒng)的并發(fā)處理能力,從而為擴(kuò)充GPS上行并發(fā)量提供了穩(wěn)定擴(kuò)展的技術(shù)架構(gòu)體系。
本系統(tǒng)所管理的目標(biāo)車(chē)輛將會(huì)超過(guò)10萬(wàn)甚至更多,因此對(duì)于車(chē)輛頻繁上報(bào)的GPS數(shù)據(jù)量將會(huì)非常大。因此系統(tǒng)平臺(tái)將采用海量存儲(chǔ)技術(shù)來(lái)實(shí)現(xiàn)大數(shù)據(jù)量的存儲(chǔ),同時(shí)能夠高性能地對(duì)海量數(shù)據(jù)進(jìn)行存儲(chǔ)、查詢等數(shù)據(jù)操作。主要有以下幾個(gè)方面的體現(xiàn):(1)上報(bào)GPS數(shù)據(jù)寫(xiě)入大數(shù)據(jù)存儲(chǔ);(2)管理用戶端要支撐5 000用戶對(duì)軌跡大數(shù)據(jù)進(jìn)行并發(fā)查詢操作。
本系統(tǒng)在大數(shù)據(jù)處理方面,通過(guò)MongoDB進(jìn)行GPS空間大數(shù)據(jù)的存儲(chǔ),通過(guò)MapReduce進(jìn)行分布式非結(jié)構(gòu)化文件的管理與讀寫(xiě),非常好地解決了TB級(jí)乃至PB級(jí)數(shù)據(jù)量的存儲(chǔ)、查詢。
本系統(tǒng)為了精準(zhǔn)車(chē)輛軌跡信息,一是采用道路匹配算法,該算法結(jié)合圖商的路網(wǎng)信息,通過(guò)對(duì)部分精度不準(zhǔn)的GPS數(shù)據(jù)進(jìn)行道路匹配,使應(yīng)該在路上的GPS數(shù)據(jù)全面地匹配到地圖道路之上,更友好地展示GPS的軌跡;二是采用智能飛點(diǎn)糾正算法,該算法結(jié)合路網(wǎng)信息,針對(duì)飛點(diǎn)的前后GPS數(shù)據(jù)的定位情況,對(duì)飛點(diǎn)進(jìn)行精準(zhǔn)糾正,讓軌跡更加平滑,避免由于GPS漂移所帶來(lái)的軌跡展示的誤差,如圖6所示。
圖6 車(chē)輛軌跡監(jiān)控平臺(tái)軌跡優(yōu)化與飛點(diǎn)處理
本平臺(tái)基于JavaEE的成熟、安全、穩(wěn)定、可維護(hù)、可擴(kuò)展的技術(shù)特性,通過(guò)分層體系進(jìn)行架構(gòu)設(shè)計(jì),支持靈活的模塊開(kāi)發(fā),能夠支持大量的設(shè)備終端的接入,并有良好的性能體現(xiàn),對(duì)GPS海量數(shù)據(jù)的讀寫(xiě)有明顯優(yōu)勢(shì),能夠支撐TB級(jí)大數(shù)據(jù)的管理。系統(tǒng)部署后,用戶反饋良好。本平臺(tái)還能夠?qū)I(yè)控制、人工智能、公共交通、設(shè)備監(jiān)管、智能家居提供強(qiáng)大的平臺(tái)支撐,充分體現(xiàn)了平臺(tái)基于物聯(lián)網(wǎng)整體架構(gòu)的處理能力,可為各行業(yè)提供較為細(xì)分的行業(yè)云平臺(tái)管理監(jiān)控綜合解決方案。
可以預(yù)知,如果能夠在兩客一危(指大客車(chē)、大型旅游客車(chē)以及危險(xiǎn)品車(chē))、個(gè)人用車(chē)管理、大眾用車(chē)服務(wù)、租車(chē)云監(jiān)控、政企用車(chē)等方面提供更加細(xì)化的行業(yè)解決方案,就會(huì)使基于GPS+北斗和移動(dòng)APP的多元化終端接入到本平臺(tái),形成更具擴(kuò)展性和管理能力的行業(yè)解決方案。