任女爾 陳辰 魏金津
摘要:隨著智慧交通、智慧城市的發(fā)展,以及新能源車輛在國家政策下的監(jiān)控要求,車輛監(jiān)控的業(yè)務(wù)場(chǎng)景需求、并發(fā)性能需求、對(duì)智能化擴(kuò)展需求也日益增加和趨于繁復(fù);傳統(tǒng)的單體架構(gòu)和分布式架構(gòu)已經(jīng)無法滿足需求的快速變化。為此提出了基于微服務(wù)的車輛監(jiān)控系統(tǒng)架構(gòu),從性能、擴(kuò)展性、數(shù)據(jù)存儲(chǔ)等方案完成架構(gòu)設(shè)計(jì)和實(shí)現(xiàn)。從案例結(jié)果表明,在性能、擴(kuò)展性方面大幅度提升了系統(tǒng)的變化響應(yīng)能力,并在產(chǎn)品化發(fā)展上具有重要意義。
關(guān)鍵詞:微服務(wù);車輛監(jiān)控;高并發(fā);系統(tǒng)架構(gòu)
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2018)17-0218-02
1引言
在車輛監(jiān)控的業(yè)務(wù)場(chǎng)景中,常見的有1)針對(duì)新能源車輛按照國標(biāo)要求進(jìn)行監(jiān)控,由車企監(jiān)控到地方政府要求,最終到國家平臺(tái)監(jiān)控;2)針對(duì)貨運(yùn)車輛的監(jiān)控,實(shí)現(xiàn)對(duì)貨運(yùn)車輛位置、安全等內(nèi)容的監(jiān)控;3)港口、機(jī)場(chǎng)等封閉園區(qū)的車輛監(jiān)控,實(shí)現(xiàn)高效的調(diào)度和合理管控;4)無人駕駛車輛監(jiān)控,從而有效地打通監(jiān)督控制通路。大部分監(jiān)控需要對(duì)數(shù)據(jù)采取持續(xù)收集、存儲(chǔ)、處理與分析的方案,同時(shí)需要進(jìn)行如疲勞駕駛、遠(yuǎn)程控制、車輛狀態(tài)分析、輔助駕駛、VOC氣味管控、視頻識(shí)別等不同的功能。
在車輛監(jiān)控技術(shù)體系中,傳統(tǒng)方式采用單體式架構(gòu),如采用單體的J2EE架構(gòu),當(dāng)并發(fā)響應(yīng)無法支撐時(shí),采用集群部署的方式,一般能支撐到百級(jí)并發(fā);為了更好地適配變更,部分企業(yè)采用了數(shù)據(jù)采集、解析、存儲(chǔ)、分析用不同的應(yīng)用承擔(dān),也就是簡(jiǎn)單的分布式架構(gòu)來執(zhí)行,能夠?qū)崿F(xiàn)多臺(tái)部署,但是部署方式復(fù)雜,支撐到千級(jí)并發(fā),運(yùn)維能力較強(qiáng)的情況下支撐到萬級(jí)并發(fā);隨著SOA、微服務(wù)及分布式數(shù)據(jù)庫等技術(shù)體系的發(fā)展,逐步采用了基于SOA等技術(shù)體系的軟件設(shè)計(jì),但整體架構(gòu)不支持異構(gòu),無法有效地利用資源。提出基于微服務(wù)技術(shù)的軟件架構(gòu)設(shè)計(jì),解決資源充分利用、業(yè)務(wù)擴(kuò)展能力要求高、并發(fā)變化響應(yīng)快等問題。
2 2 基于springcloud的微服務(wù)技術(shù)體系
微服務(wù)作為互聯(lián)網(wǎng)級(jí)別當(dāng)前主流的技術(shù)架構(gòu),表現(xiàn)了更加穩(wěn)定、擴(kuò)展性更強(qiáng)、并發(fā)響應(yīng)更強(qiáng)的能力【1】。通過將業(yè)務(wù)進(jìn)行組件化、服務(wù)化分離,每個(gè)服務(wù)功能簡(jiǎn)單、可獨(dú)立集群部署,更加靈活和易于調(diào)配;耦合度低,再復(fù)合上消息隊(duì)列等技術(shù)進(jìn)行進(jìn)一步解耦,能夠方便地進(jìn)行業(yè)務(wù)擴(kuò)展;服務(wù)拆分后,專注的業(yè)務(wù)領(lǐng)域可以由不同的技術(shù)團(tuán)隊(duì)執(zhí)行,更加靈活【2】。
在近幾年,形成了以dubbo+zookeeper體系和springcloud體系的微服務(wù)技術(shù)架構(gòu),為企業(yè)解決了很多的業(yè)務(wù)擴(kuò)展和運(yùn)維問題。相比dubbo與springcloud技術(shù)體系,springCloud的容錯(cuò)和熔斷機(jī)制更加完整,服務(wù)交互的友好性更強(qiáng);而dubbo的協(xié)議比springcloud更低一層,因此性能好一點(diǎn)。但是基于微服務(wù)易于擴(kuò)展的特性,采用springCloud可以輕松的達(dá)到性能效果,因此車輛監(jiān)控系統(tǒng)采用springCloud技術(shù)體系完成微服務(wù)技術(shù)實(shí)施。
SpringCloud基于springboot實(shí)現(xiàn)非常便捷,它是一套框架與組件的有序集合,其輕量級(jí)組件包括Eureka服務(wù)發(fā)現(xiàn)與治理、HyStrix服務(wù)容錯(cuò)與Turbine監(jiān)控、Zuul服務(wù)網(wǎng)關(guān)、Config Server服務(wù)配置、Ribbon負(fù)載均衡、Spring Cloud Bus消息總線、Spring Cloud Sleuth服務(wù)跟蹤等【3】。
當(dāng)服務(wù)為調(diào)用或客戶端請(qǐng)求服務(wù)時(shí),首先由網(wǎng)關(guān)Zuul進(jìn)行請(qǐng)求控制管理,根據(jù)請(qǐng)求服務(wù)的注冊(cè)內(nèi)容進(jìn)行轉(zhuǎn)發(fā);當(dāng)服務(wù)無法滿足并發(fā)需求時(shí),由Ribbon實(shí)現(xiàn)負(fù)載均衡處理;服務(wù)注冊(cè)中心Eureka根據(jù)請(qǐng)求尋找對(duì)應(yīng)的服務(wù)【4】;由COnfig Server進(jìn)行服務(wù)的統(tǒng)一配置;消息隊(duì)列負(fù)責(zé)服務(wù)間解耦通信。此外,由Turbine和Hystrix監(jiān)控服務(wù)健康狀態(tài),當(dāng)有異常時(shí)合理處理熔斷并進(jìn)行監(jiān)控展示;追蹤組件記錄請(qǐng)求服務(wù)的耗時(shí)、延誤以及網(wǎng)絡(luò)情況提供優(yōu)化依據(jù)。
3 架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)
車輛監(jiān)控的基礎(chǔ)架構(gòu)設(shè)計(jì)基于微服務(wù)技術(shù)體系進(jìn)行,從而方便進(jìn)行擴(kuò)展和監(jiān)控。對(duì)應(yīng)圖1中的服務(wù)部分,包括netty偵聽服務(wù)、多線程處理服務(wù)、mongodb存儲(chǔ)服務(wù),以及在業(yè)務(wù)展示端的歷里程服務(wù)、實(shí)時(shí)定位服務(wù)、軌跡回放服務(wù)、車輛管理服務(wù)、保養(yǎng)推薦服務(wù)、日志查詢服務(wù)、遠(yuǎn)程控制服務(wù)及實(shí)施報(bào)警服務(wù)等。技術(shù)架構(gòu)圖如圖2所示。
從技術(shù)架構(gòu)圖進(jìn)行設(shè)計(jì),數(shù)據(jù)接口的分布式負(fù)載采用LVS與haProxy進(jìn)行代理,將數(shù)據(jù)接收、數(shù)據(jù)解析、數(shù)據(jù)存儲(chǔ)、業(yè)務(wù)與分析部分的服務(wù)均基于springcloud設(shè)計(jì)為服務(wù),方便進(jìn)行集群擴(kuò)展與部署,通過容易的技術(shù)體系進(jìn)行注冊(cè)發(fā)現(xiàn)與監(jiān)控管理【5】。針對(duì)每一部分,可以通過監(jiān)控信息查看負(fù)載情況,適當(dāng)?shù)恼{(diào)整集群。其中,mongodb存儲(chǔ)部分是分開的,因此針對(duì)數(shù)據(jù)存儲(chǔ)的服務(wù)接口可以方便地將存儲(chǔ)部分切換到新的hbase分布式數(shù)據(jù)存儲(chǔ)架構(gòu)中,以適應(yīng)高并發(fā)、大數(shù)據(jù)量需求。業(yè)務(wù)架構(gòu)圖展示的從業(yè)務(wù)的角度如何進(jìn)行劃分設(shè)計(jì),如圖3所示。
從業(yè)務(wù)方面,當(dāng)我們將業(yè)務(wù)數(shù)據(jù)進(jìn)行不同方式的方法的接收、解析和存儲(chǔ),并且將設(shè)備最新實(shí)時(shí)數(shù)據(jù)及中間的分析結(jié)果業(yè)務(wù)數(shù)據(jù)存儲(chǔ)到redis緩存中?;跀?shù)據(jù)庫與redis完成實(shí)時(shí)快速響應(yīng)業(yè)務(wù)接口。
在業(yè)務(wù)擴(kuò)展方面,基于疲勞駕駛部分進(jìn)行擴(kuò)展,可以基于存儲(chǔ)的原始數(shù)據(jù)增加離線分析業(yè)務(wù)進(jìn)行分析,然后基于springcloud開發(fā)按照不同的場(chǎng)景識(shí)別的疲勞駕駛方案,如針對(duì)連續(xù)駕駛時(shí)長、車輛的急剎車駕駛數(shù)據(jù)等【6】,然后調(diào)用報(bào)警服務(wù)接口來實(shí)現(xiàn)。整個(gè)業(yè)務(wù)擴(kuò)展不需要針對(duì)其他代碼進(jìn)行改動(dòng),直接開發(fā)新的服務(wù)并調(diào)用既有服務(wù)即可。
在并發(fā)性能方面,如數(shù)據(jù)解析服務(wù)需要計(jì)算,當(dāng)數(shù)據(jù)由netty接收后調(diào)用解析服務(wù),當(dāng)萬級(jí)并發(fā)是,解析服務(wù)需高度負(fù)載,因此,可以針對(duì)解析服務(wù)盡心集群節(jié)點(diǎn)的快捷增加。因?yàn)橛薪y(tǒng)一的服務(wù)接口接入,所以netty接收部分無須擔(dān)心解析性能問題和調(diào)用接口是否需要變更問題,能夠方便地進(jìn)行并發(fā)性擴(kuò)展。
4 測(cè)試結(jié)果
基于微服務(wù)進(jìn)行整體設(shè)計(jì)以后,系統(tǒng)穩(wěn)定性大幅度增加,測(cè)試10000輛車每s發(fā)送1kb數(shù)據(jù)進(jìn)行存儲(chǔ)展示,定位信息響應(yīng)時(shí)間在45ms以內(nèi),軌跡回放在1.23s以內(nèi)。從5000并發(fā)到10000并發(fā)進(jìn)行擴(kuò)展升級(jí),硬件資源足夠的情況下,耗時(shí)約25分鐘,相比于單體應(yīng)用和SOA架構(gòu)是不可能的。因此,基于微服務(wù)的車輛監(jiān)控系統(tǒng)架構(gòu)達(dá)到了對(duì)系統(tǒng)的顛覆性改進(jìn)。
5 總結(jié)
微服務(wù)在業(yè)務(wù)擴(kuò)展性、系統(tǒng)穩(wěn)定性、并發(fā)響應(yīng)性等方面具有較大的優(yōu)勢(shì),通過構(gòu)建微服務(wù)技術(shù)體系,并將車輛監(jiān)控業(yè)務(wù)進(jìn)行服務(wù)設(shè)計(jì)與劃分,能夠大幅度改善車輛監(jiān)控對(duì)業(yè)務(wù)場(chǎng)景的適應(yīng)能力和產(chǎn)品的生存力。
參考文獻(xiàn):
[1] 王方旭.基于Spring Cloud和Docker的微服務(wù)架構(gòu)設(shè)計(jì)[J].中國信息化,2018(3):53-55.
[2] Fowler M,Lewis J.Microservices.https://martinfowler.com/articles/m i c r o s e r v i c e s . h t m l . a r t i c l e s /microservices.html.[2014-03-25].
[3] 王方旭.基于Spring Cloud 實(shí)現(xiàn)業(yè)務(wù)系統(tǒng)微服務(wù)化的設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)與軟件工程,2018(4):60-61.
[4] 韓佼男.淺析微服務(wù)架構(gòu)在企業(yè)信息系統(tǒng)構(gòu)建中的應(yīng)用價(jià)值[J].中國管理信息化,2018(02).
[5] 洪華軍,吳建波,冷文浩.一種基于微服務(wù)架構(gòu)的業(yè)務(wù)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)與數(shù)字工程,2018(01).
[6] 李永坤.基于微服務(wù)架構(gòu)的智慧停車場(chǎng)系統(tǒng)設(shè)計(jì)[J].信息與電腦,2018(02).