高雪 臧金環(huán)
(中汽信息科技(天津)有限公司,天津 300000)
近年來,大數(shù)據(jù)技術(shù)發(fā)展迅速,車輛運行數(shù)據(jù)采集和積累也達到了大數(shù)據(jù)的應(yīng)用水平。在此背景下,汽車行業(yè)開始數(shù)字化轉(zhuǎn)型,向人工智能邁進。汽車主機廠也開始借助大數(shù)據(jù)技術(shù)來研究車輛監(jiān)控系統(tǒng)[1-8]。目前行業(yè)內(nèi)對車輛的監(jiān)控已經(jīng)不滿足于簡單的數(shù)據(jù)監(jiān)控,對大數(shù)據(jù)分析也有更高的要求,實現(xiàn)車輛更智能化的全面監(jiān)控是目前汽車行業(yè)的主流需求。
從技術(shù)層面來看,Java 作為面向?qū)ο缶幊陶Z言的代表,已經(jīng)是應(yīng)用系統(tǒng)的主流開發(fā)語言[9-10],目前已在互聯(lián)網(wǎng)(WEB)應(yīng)用開發(fā)領(lǐng)域得到廣泛應(yīng)用。Python語言在實現(xiàn)面向?qū)ο缶幊掏瑫r,還提供了高效的高級數(shù)據(jù)結(jié)構(gòu),具有豐富和強大的類型庫[11-12]。結(jié)合2 種編程語言各自優(yōu)勢,對2者進行整合開發(fā),既滿足了車輛監(jiān)控系統(tǒng)設(shè)計功能要求,又提高了開發(fā)靈活性和開發(fā)效率。但是經(jīng)過調(diào)研發(fā)現(xiàn),目前整車企業(yè)所應(yīng)用的車輛監(jiān)控系統(tǒng)還處于起步、不斷更新階段,有很多可優(yōu)化空間。
本文提出了基于融合模型的車輛監(jiān)控系統(tǒng),實現(xiàn)了在車輛監(jiān)控系統(tǒng)中集成業(yè)務(wù)平臺與算法平臺的功能,并且在運維、部署時互相解耦、互不影響,保證在滿足需求的前提下,對融合模型的技術(shù)方案做了創(chuàng)新優(yōu)化。融合模型的研究具有行業(yè)重要價值,實時數(shù)據(jù)和模型分析相結(jié)合才真正起到了車輛運行監(jiān)控的目的和意義;營銷數(shù)據(jù)和數(shù)據(jù)分析相結(jié)合的銷量監(jiān)控是汽車行業(yè)銷售市場上提高競爭力的有力工具。
車輛監(jiān)控系統(tǒng)架構(gòu)主要是由業(yè)務(wù)平臺和算法平臺融合而成。車輛運行數(shù)據(jù)由車載通信終端(Telematics Box, T-Box)實時上傳,數(shù)據(jù)報文通過卡夫卡(Kafka)接入服務(wù)器,報文分為2路:
(1)與重型車排放遠程監(jiān)控平臺(以下簡稱:國家平臺)交互進行備案轉(zhuǎn)發(fā);
(2)解析入庫到大數(shù)據(jù)集群中,抽取到關(guān)系型數(shù)據(jù)庫和遠程字典服務(wù)(Remote Dictionary Server,Redis)緩存中,供平臺進行數(shù)據(jù)讀取。
實時數(shù)據(jù)既做業(yè)務(wù)平臺實時監(jiān)控展示,又輸入到算法平臺中進行數(shù)據(jù)統(tǒng)計分析,并將算法模塊嵌入到監(jiān)控系統(tǒng)中,實現(xiàn)基于融合模型的車輛監(jiān)控系統(tǒng)設(shè)計開發(fā),系統(tǒng)總體技術(shù)架構(gòu)如圖1所示。
圖1 系統(tǒng)總體技術(shù)架構(gòu)
在車輛監(jiān)控系統(tǒng)技術(shù)架構(gòu)中用到了大數(shù)據(jù)存儲、關(guān)系型數(shù)據(jù)庫、緩存和中間件技術(shù)棧,在大數(shù)據(jù)存儲部分依賴于Hadoop 大數(shù)據(jù)架構(gòu),與國家平臺交互時采用消息隊列中間件(Rabbit Message Queue, Rabbit MQ)。業(yè)務(wù)平臺和算法平臺部署成2 個獨立的服務(wù),通過應(yīng)用程序接口(Application Program Interface,API)進行通信。
圖2 所示為該系統(tǒng)的WEB 端展示。菜單中分為數(shù)據(jù)質(zhì)量監(jiān)控、車輛異常監(jiān)測、大數(shù)據(jù)分析、細分市場、用戶行為和系統(tǒng)監(jiān)控等共9項,每項數(shù)據(jù)可以展開分析,其中“用戶行為”可以展開為11項分析數(shù)據(jù)。
圖2 系統(tǒng)WEB端展示
車輛監(jiān)控系統(tǒng)設(shè)計與實現(xiàn)部分,從總體功能到分模塊進行闡述,模塊劃分為2部分:系統(tǒng)業(yè)務(wù)平臺和系統(tǒng)算法平臺。
車輛監(jiān)控系統(tǒng)是集數(shù)據(jù)采集、數(shù)據(jù)分析、數(shù)據(jù)計算、數(shù)據(jù)展示、數(shù)據(jù)監(jiān)控和預(yù)警為一身的監(jiān)控平臺。系統(tǒng)總體功能分為業(yè)務(wù)模塊和算法模塊2大部分。系統(tǒng)總體功能架構(gòu)如圖3。
圖3 系統(tǒng)總體功能架構(gòu)
(1)業(yè)務(wù)模塊
業(yè)務(wù)模塊是由Java代碼編寫實現(xiàn),主要功能為:對車輛總體情況的監(jiān)控展示、數(shù)據(jù)監(jiān)測、報表功能和系統(tǒng)管理。
(2)算法模塊
算法模塊是由Java嵌套Python代碼來實現(xiàn),對業(yè)務(wù)模塊提供API調(diào)用,主要功能為:細分市場分析、加油點分析、電池安全預(yù)警、路況分析、載重分析等。
業(yè)務(wù)平臺采用Java 編碼實現(xiàn)。主流開發(fā)框架采用SpringBoot+VUE 架構(gòu),前后端分離部署,關(guān)系型數(shù)據(jù)庫采用MySQL,緩存采用Redis,消息隊列采用RabbitMQ,中間件采用Kafka,大數(shù)據(jù)存儲采用Hadoop 集群技術(shù)棧,實現(xiàn)了對車輛數(shù)據(jù)監(jiān)控與預(yù)警,系統(tǒng)與TBox和國家平臺的3方交互。技術(shù)架構(gòu)如圖4所示。
圖4 業(yè)務(wù)平臺技術(shù)架構(gòu)
算法平臺采用Java集成Python腳本的編碼實現(xiàn),這樣設(shè)計的目的是既能充分利用Python 編碼在大數(shù)據(jù)分析上的靈活性、擴展性,又能充分利用Java 框架的外殼使其自成獨立服務(wù),并且能通過對外提供的API 和業(yè)務(wù)平臺進行融合,達到融合模型的效果。整合方案采用的技術(shù)方式為:Python 代碼作為文件夾放到Java 框架的資源文件夾(Resource)下,通過代碼中命令行進行調(diào)用執(zhí)行Python 腳本,技術(shù)架構(gòu)如圖5 所示。
圖5 算法平臺技術(shù)架構(gòu)
針對本研究中采用的融合模型有2 種開發(fā)語言:Java和Python。常用的融合方式主要有2種方案:
(1)Jython(直接在Java中執(zhí)行Python語句);
(2)通過命令行運行Python代碼。
本研究采用的是第3 種開發(fā)語言方案,即將Java調(diào)取Python的代碼封裝一下,對外提供API,然后與業(yè)務(wù)平臺融合(方案(3))。
第3種封裝Python代碼算法方案和第2種方案的不同點在于,第3 種方案算法部分封裝了一層Java 外殼,可以作為一個單獨的算法平臺進行獨立部署,而第2種方案是和業(yè)務(wù)平臺代碼融合在一起,耦合性更強[13-20]。
將3種方案從需求滿足、可維護性、技術(shù)實現(xiàn)的難易程度3個維度進行對比,如表1所示。
表1 方案對比
經(jīng)過驗證顯示,3種技術(shù)方案都能滿足功能需求,技術(shù)實現(xiàn)難度都不大。
但是從可維護性上考慮,Jython 和通過Python 命令直接調(diào)用的開發(fā)語言,都是將算法平臺代碼和業(yè)務(wù)模塊代碼集成在一起,不論哪一部分出現(xiàn)問題都會直接影響監(jiān)控系統(tǒng)的正常運行。同時Jython 依賴于Python 版本,如果停止維護導致版本過舊,則會影響功能開發(fā)的實現(xiàn)。本文優(yōu)化方法為把調(diào)取Python 代碼算法部分封裝Java外殼,對業(yè)務(wù)平臺提供API,實現(xiàn)了代碼解耦,算法模塊出現(xiàn)故障不會影響監(jiān)控系統(tǒng)正常運行,故采用優(yōu)化后的方案3。
通過方案對比分析后,本文提出的算法模塊封裝方案為最優(yōu)選擇,在該方案中共采用了4個API調(diào)用,如圖6所示為技術(shù)方案實現(xiàn)邏輯。
圖6 技術(shù)方案實現(xiàn)邏輯
先調(diào)用模型開始計算接口,觸發(fā)算法模型運算。運算過程中可以通過調(diào)用計算進度接口來獲取運算進度比例,也可以通過調(diào)用停掉模型服務(wù)的接口隨時停止計算。當模型計算進度為100%時,便可以通過獲取結(jié)果文件接口的方式獲取最終生成的運算結(jié)果。
除了功能測試外,也對3 種技術(shù)方案分別進行了性能測試,通過API 調(diào)用的方式實現(xiàn)了從模型計算到獲取結(jié)果文件的全過程。本小節(jié)對每部分實現(xiàn)的核心代碼進行展示。
(1)模型開始計算
//API 調(diào)用時,輸入模型計算參數(shù),體現(xiàn)了模型靈活性,參數(shù)可調(diào)節(jié)。
//更新數(shù)據(jù)庫表中計算狀態(tài)marketService.updateStatusByFileName(fileName);
(2)獲取計算進度
//通過API 返回的字符串信息,獲取計算進度比例
(3)停掉模型
//殺死進程,終止模型計算過程
result=remote.callRemoteServer("/market/market/restart",null);
(4)獲取結(jié)果文件
//通過獲取文件存放路徑,并返回給前端url訪問路徑的方式來實現(xiàn)。結(jié)果文件以csv格式生成。
在大數(shù)據(jù)時代,算法模型應(yīng)用非常廣泛。本文中提出的融合模型在車輛監(jiān)控領(lǐng)域應(yīng)用廣泛,主要集中在對車輛運行數(shù)據(jù)和車輛銷量數(shù)據(jù)的監(jiān)控[21-25],下面分別對2方面應(yīng)用做如下闡述。
基于融合模型的車輛監(jiān)控系統(tǒng)可應(yīng)用于車輛運行數(shù)據(jù)監(jiān)控,將車輛運行數(shù)據(jù)及算法分析結(jié)合起來。該應(yīng)用使對車輛運行數(shù)據(jù)的監(jiān)控更智能化,滿足客戶對于車輛運行監(jiān)控的全面要求。能夠更及時掌握車輛運行情況,包括對運行中的故障車輛進行響應(yīng)。
車輛運行數(shù)據(jù)包括的業(yè)務(wù)板塊是車輛運行實時數(shù)據(jù)監(jiān)控,算法模塊是對車輛數(shù)據(jù)傳遞丟包率、丟條率、細分市場、電池狀況、路況信息、用戶畫像、油耗分析監(jiān)控。通過Kafka發(fā)布訂閱的方式接入汽車團隊軟件過程(Team Software Process, TSP)服務(wù)器原始數(shù)據(jù)信息,按分區(qū)進行大數(shù)據(jù)存儲供監(jiān)控系統(tǒng)使用。目前,包括家用乘用車在內(nèi)的汽車是很普遍的交通工具,車輛數(shù)量很多,每天產(chǎn)生的運行數(shù)據(jù)量大。車輛故障問題、運行問題也引起廣泛重視,人工已經(jīng)無法分析海量運行數(shù)據(jù),所以通過車輛監(jiān)控系統(tǒng)中調(diào)用算法模型的方式能進行海量數(shù)據(jù)分析。
基于融合模型的車輛監(jiān)控系統(tǒng)同樣適用于銷量數(shù)據(jù)監(jiān)控,對于整車企業(yè)來說,車輛運行是一方面,車輛的銷量也同等重要。
車輛銷量數(shù)據(jù)包括的業(yè)務(wù)模塊是對車輛庫存、出庫、回款、末銷數(shù)據(jù)、存銷比、銷售目標完成情況的監(jiān)控,算法模塊做車輛銷量的預(yù)測分析、銷量的聚集省份、城市分析??梢酝ㄟ^API 請求、文件導入方式獲取車輛品牌銷量,按月維度進行統(tǒng)計和更新。由于營銷數(shù)據(jù)單獨通過Excel工具進行分析,數(shù)據(jù)量大,工作繁瑣,所以此時通過車輛監(jiān)控系統(tǒng)中調(diào)用算法模型的方式更簡單、高效。
本文基于融合模型的車輛監(jiān)控系統(tǒng)是以車輛運行數(shù)據(jù)為基礎(chǔ)的設(shè)計與實現(xiàn)。圖7 和圖8 所示,是該系統(tǒng)將算法模塊嵌入到業(yè)務(wù)系統(tǒng)后的可視化界面展示,即模型計算界面與模型列表界面。
圖7 模型計算界面
圖8 模型列表界面
本文所設(shè)計實現(xiàn)的系統(tǒng)中,通過融合模型解決方案,將業(yè)務(wù)平臺與算法平臺結(jié)合,并在WEB端做了算法模型操作的可視化界面,為用戶提供了執(zhí)行算法模型運算的入口。如圖8 是系統(tǒng)中細分市場模型的展示,該部分設(shè)置了模型列表展示和模型新建功能。
在模型列表展示菜單下可以對所有操作過的運算進行查看,查看已保存或正在運行模型的運算參數(shù),并可以進行暫停操作,也可通過點擊分析跳轉(zhuǎn)到模型新建頁面。列表中清晰地展示了模型名稱、創(chuàng)建人、創(chuàng)建時間和模型運行狀態(tài),方便用戶查看。
模型新建頁面采用流程圖形式展示,可以讓用戶清晰地看出模型運算環(huán)節(jié),并可以進行模型參數(shù)配置,數(shù)據(jù)源選擇,點擊“計算”即可觸發(fā)一次模型運算,保存后便可在模型列表中新增一條數(shù)據(jù),也可通過計算結(jié)果來查看運行進度,導出最終結(jié)果文件。
本文通過Java 開發(fā)的業(yè)務(wù)平臺和Python 開發(fā)的算法平臺進行融合,研究出了一套通過技術(shù)方案優(yōu)化的融合模型,并基于此實現(xiàn)對車輛監(jiān)控系統(tǒng)設(shè)計。該融合模型是經(jīng)過了對汽車行業(yè)的現(xiàn)狀調(diào)研、對用戶需求收集、以及對Java和Python融合方案對比調(diào)試后提出的。從功能上、技術(shù)架構(gòu)上以及技術(shù)運維、業(yè)務(wù)應(yīng)用方面,都實現(xiàn)了改進和優(yōu)化,主要成果和創(chuàng)新點總結(jié)如下:
(1)業(yè)務(wù)需求:滿足了用戶對于監(jiān)控的需求,既能監(jiān)控車輛的實時狀態(tài)(實時運行數(shù)據(jù)、車輛備案狀態(tài)等),又能實現(xiàn)對車輛運行數(shù)據(jù)的統(tǒng)計分析(細分市場分析、工況分析、加油點分析等),實現(xiàn)了對車輛的全方位可視化監(jiān)控。
(2)技術(shù)實現(xiàn):充分結(jié)合了2種開發(fā)語言優(yōu)點。相比于直接調(diào)用Linux 命令行觸發(fā)算法執(zhí)行來說,將命令行和Python 代碼部分嵌入到Java 框架部署獨立的服務(wù),提供對外訪問API,可以實現(xiàn)代碼解耦、相互獨立、互不影響。如果算法部分出現(xiàn)問題,不影響WEB系統(tǒng)接口請求。不論是從功能上還是性能上都進行了優(yōu)化。
(3)部署運維:業(yè)務(wù)基本功能和算法部分進行隔離開來,算法部分作為單獨服務(wù),和WEB可視化系統(tǒng)分開,便于代碼部署和后期系統(tǒng)運行維護。
(4)應(yīng)用廣泛:本文提出的基于融合模型監(jiān)控系統(tǒng)既適用于車輛運行數(shù)據(jù)監(jiān)控,也適用于對車輛銷量數(shù)據(jù)的監(jiān)控,應(yīng)用數(shù)據(jù)范圍廣。
(5)用戶體驗好:該融合模型設(shè)計與實現(xiàn)給用戶提供了操作算法模型執(zhí)行的可視化管理界面,提供了控制模型開始計算、計算進度獲取、運行結(jié)果導出、停止模型運算的可操作按鈕。這些均將算法模塊可視化,為提高用戶體驗帶來便利。
(6)可拓展性強:模型平臺界面做了算法模型可配置設(shè)置,用戶可以對運算模型參數(shù)進行調(diào)整,這個設(shè)計理念也體現(xiàn)出了該融合模型可拓展性,參數(shù)可配、可調(diào)、可修改和可查看。
綜上所述,本文所設(shè)計與實現(xiàn)的基于融合模型的車輛監(jiān)控系統(tǒng)實現(xiàn)了對車輛全面監(jiān)控功能,也在整車企業(yè)中得到應(yīng)用,具有實際參考價值與探索意義。融合模型的車輛監(jiān)控系統(tǒng)不僅能在車輛行業(yè)中得到廣泛應(yīng)用,而且可以推廣到其它領(lǐng)域,比如財務(wù)、醫(yī)學等。
致謝:
感謝在此論文編寫過程中中汽信息科技有限公司前瞻業(yè)務(wù)團隊對作者的支持與協(xié)助,團隊共創(chuàng)是對一項研究成果最好的支撐。