色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          "); //-->

          博客專欄

          EEPW首頁 > 博客 > 干貨 | 智能網(wǎng)聯(lián)汽車大數(shù)據(jù)基礎(chǔ)平臺構(gòu)建研究

          干貨 | 智能網(wǎng)聯(lián)汽車大數(shù)據(jù)基礎(chǔ)平臺構(gòu)建研究

          發(fā)布人:數(shù)據(jù)派THU 時間:2023-07-09 來源:工程師 發(fā)布文章
          以下內(nèi)容整理自大數(shù)據(jù)能力提升項目必修課《大數(shù)據(jù)系統(tǒng)基礎(chǔ)》同學們的期末答辯匯報。


          圖片


          各位老師大家上午好,我們組的題目是智能網(wǎng)聯(lián)汽車大數(shù)據(jù)基礎(chǔ)平臺的構(gòu)建。我們的指導企業(yè)是西部智聯(lián)。我們的匯報將從這五個方面進行展開,第一個方面是項目背景與需求分析。

          圖片


          智能網(wǎng)聯(lián)汽車是推進智慧交通發(fā)展,實現(xiàn)智慧城市建設(shè)的重要一環(huán),也是國際公認的未來發(fā)展方向,也是我們中國能夠?qū)崿F(xiàn)汽車工業(yè)轉(zhuǎn)型、形成國際競爭力的一個重要機遇。因此,重慶市政府西部科學城、重慶高新區(qū)管委會和我們學校的李克強教授團隊共同策劃成立了智能網(wǎng)聯(lián)汽車領(lǐng)域的研發(fā)機構(gòu)——西部科學城智能網(wǎng)聯(lián)汽車創(chuàng)新中心。西部智聯(lián)也是廣泛開展業(yè)務(wù),推進產(chǎn)業(yè)協(xié)同發(fā)展,促進智能網(wǎng)聯(lián)汽車產(chǎn)業(yè)的規(guī)?;涞?。

          圖片


          智能網(wǎng)聯(lián)汽車云控平臺的用戶主要是普通車主、政府以及企業(yè)用戶三個部分。普通車主的需求主要是解決應(yīng)用協(xié)同的問題,保證體驗感。對于政府的話,主要是要統(tǒng)籌整個交通的管理與控制,對于企業(yè)用戶的話是利用數(shù)據(jù)賦能推進產(chǎn)業(yè)研發(fā)的瓶頸。因此我們就需要不斷建立健全車端云、邊緣云、區(qū)域云、全國云四級的支撐體系。

          圖片


          對于市場前景的話,智能交通市場未來的發(fā)展也在持續(xù)增長,整個市場規(guī)模也是非常巨大的,車路云一體化是實現(xiàn)整個智慧交通商業(yè)化落地的一個最可行的方案。因此我國也正在大力推動智能網(wǎng)聯(lián)汽車示范區(qū)的建設(shè)。提出到2025年,智能網(wǎng)聯(lián)汽車將會覆蓋全國的所有城市。

          圖片


          小米還有集度汽車也采用Flink和Kafka進行了一些數(shù)據(jù)集成的實踐,我們也建立了北京亦莊自動駕駛示范區(qū)以及國家智能網(wǎng)聯(lián)汽車長沙測試區(qū),實現(xiàn)了智慧公交、自動駕駛出租車等應(yīng)用。

          圖片


          接下來我來介紹一下整個系統(tǒng)的設(shè)計架構(gòu)。首先,在數(shù)據(jù)傳輸階段,我們采用了MQTT協(xié)議進行消息的發(fā)布,還有訂閱提供一對多的消息發(fā)布。在數(shù)據(jù)處理分發(fā)的方面,我們首先采用了Apache Nifi用于可視化的實時整理數(shù)據(jù)流動,整合數(shù)據(jù)的總線,接著運用了Kafka對數(shù)據(jù)進行分發(fā),分發(fā)給不同的消費者。在數(shù)據(jù)分析方面,我們采用了Apache Flink進行有狀態(tài)的計算,接著把數(shù)據(jù)分析后的數(shù)據(jù)傳入一個TimescaleDB里面。TimescaleDB是基于postgreSQL數(shù)據(jù)庫打造的一個時序數(shù)據(jù)庫。數(shù)據(jù)可以自動按照時間和空間進行一個分區(qū)。在數(shù)據(jù)應(yīng)用方面,我們運用了Apache的Superset進行可視化,因為它可以支持多種的數(shù)據(jù)庫,包括連接我們之前用到的TimescaleDB數(shù)據(jù)庫。

          圖片


          我們整體的系統(tǒng)的架構(gòu)如上圖所示。除了上述講到的一些技術(shù)以外,在第一部分的數(shù)據(jù)接入,我們采用的數(shù)據(jù)是企業(yè)提供的一個RCU路端數(shù)據(jù),還有一個OBU的云車端的數(shù)據(jù),然后采用了TCP協(xié)議進行通信,然后運用EMQX的引擎進行數(shù)據(jù)的接入?;谶@個系統(tǒng)框架,我們進行后續(xù)的開發(fā)實踐。

          圖片


          下面我來介紹一下技術(shù)實現(xiàn)的部分。首先是我們開發(fā)工作的基礎(chǔ),我們開發(fā)工作是基于三臺華為云的Linux機器,這里非常感謝企業(yè)導師的支持。然后初始機的環(huán)境的配置、開發(fā)用的數(shù)據(jù)主要是導師提供的靜態(tài)數(shù)據(jù),一共是40萬條,還有數(shù)據(jù)源的模擬程序,所以最終的動態(tài)數(shù)據(jù)的量級可以達到千萬的量級。導師也提供了一個數(shù)據(jù)交互規(guī)范,供我們進行參考。

          圖片


          數(shù)據(jù)源程序是使用GO語言進行開發(fā)的,我們是使用的MQTT的TCP協(xié)議進行傳輸,模擬實際的數(shù)據(jù)。單個程序的數(shù)據(jù)源是10赫茲,我們發(fā)送的是一個序列化的Json數(shù)據(jù),但這個程序可以啟動多個進程,可以模擬多車多路側(cè)單元。我們設(shè)計的QoS是0,最多分發(fā)一次,這樣網(wǎng)絡(luò)負載比較低,雖然數(shù)據(jù)有可能會丟失,但是對我們整個實驗沒有什么太大的影響,下面是一個這個數(shù)據(jù)的示例。

          圖片


          然后是EMQX的部署,這個部署就比較簡單。需要說明的是EMQX安裝在服務(wù)器上,所以需要考慮到網(wǎng)絡(luò)安全的問題,所以我們最終還是沒有對公網(wǎng)進行開放,我們把端口轉(zhuǎn)發(fā)到本地進行調(diào)試。右上角就是我們安裝完之后的dashboard,我們可以在里面很輕松地看到每秒傳入和傳出的信息量。
          接下來是NiFi和Kafka兩個部分,Kafka需要特別注意一下,因為我們后續(xù)是在不同的機器上進行流式計算,所以我們需要在局域網(wǎng)內(nèi)其他機器去訪問Kafka,所以我們還需要修改一下相關(guān)的監(jiān)聽地址。然后就是NiFi的配置,這個配置主要是兩個方面,一個是連接EMQX,是一個MQTT的消費者,然后是連接Kafka,它是一個Kafka brokers,是一個生產(chǎn)者。我們通過同樣的方式訂閱了OBU所有的信息,把數(shù)據(jù)直接傳輸?shù)終afka中。

          圖片


          關(guān)于Flink的部署,我們在服務(wù)器端主要也是考慮到負載平衡和數(shù)據(jù)吞吐的一些原因,把之前網(wǎng)絡(luò)密集型的放在了服務(wù)器一上,現(xiàn)在這個計算密集型的我們就安裝在了服務(wù)器二。導師推薦的java環(huán)境是JDK1.8,所以我們就用了之前的Flink 1.14.6版本。在本地也需要同樣配置一個java開發(fā)環(huán)境,maven的一個倉庫,添加一個相關(guān)的價包,然后就可以用這個Flink的流處理模板去進行開發(fā)了。右下角是我們做的Kafka source示例,主要是添加一下相關(guān)的地址信息和訂閱的主題,就可以獲得相關(guān)的一些offset,配置一下反序列化的方法就可以了。

          圖片


          之后是TimescaleDB的連接,主要是我們需要設(shè)計一個存儲表,我們是用的JDBC Sink,然后把Flink的計算結(jié)果直接存到TimescaleDB中。后面我們驗證了一下這個數(shù)據(jù)庫連接是否成功,我們在postgres admin中直接查看數(shù)據(jù)的結(jié)果,可以看到它已經(jīng)成功存入到數(shù)據(jù)中了。

          圖片


          然后是Superset和它的連接,我們是用的這種容器化的部署方式,就是用docker去部署,但是這個其實有一些問題,因為容易出現(xiàn)網(wǎng)絡(luò)訪問的問題,它需要訪問速手機局域網(wǎng)內(nèi)的一個其他的服務(wù)器,所以還是要去加一些網(wǎng)關(guān)方面的操作。在這個配置完成之后,可以看到這個最大的這張圖,實現(xiàn)了數(shù)據(jù)的可視化。

          圖片


          接下來我們簡單看一些成果展示。首先,最大的成果就是我們實現(xiàn)了從原始數(shù)據(jù),也就是從最開始的RCU、OBU的數(shù)據(jù)到最后呈現(xiàn)到用戶手里的Superset,我們可以用可視化的方法實際看到或者探索數(shù)據(jù)。下面是服務(wù)器的部署,為了平和三臺服務(wù)器上的工作,讓負載相對均衡一點,我們把三臺服務(wù)器上安裝的分別的東西都列舉在這兒了。第二個部分就是我們的創(chuàng)新點,能夠處理實時流數(shù)據(jù)。從一開始RCU、OBU到EMQX,我們對于流數(shù)據(jù)的支持進行了一定的考慮,一直到最后,整個過程都是支持完全支持流數(shù)據(jù)處理的。第三就是整個數(shù)據(jù)和架構(gòu)都具備橫向拓展的空間,我們現(xiàn)在測試用的原始數(shù)據(jù)是40萬條,但是一方面這個數(shù)據(jù)庫我們可以拓展,比如說sink到timescaleDB甚至更多的數(shù)據(jù)庫。最后的可視化也不是只有在Superset,可以在從數(shù)據(jù)庫中取數(shù)據(jù)到任何其他你想要的地方,包括從前面我們NiFi、Kafka對于這個topic的管理都是非常完善的,我們有更多的topic,可以有更多的生產(chǎn)者,消費者。最后就是我們在做的這個過程中間也把這些軟件程序的應(yīng)用給服務(wù)化了,服務(wù)化的好處就是能夠保證這些服務(wù)都能在后臺去運行。我們借助在這個特點,再借助我們用的圖形界面,我們不需要在登錄服務(wù)器做什么操作了,只需要在本地端在命令行里邊輸入一段命令,就可以直接在本地的localhost中看到每一個部分的可視化界面,方便我們后續(xù)的操作和測試。

          圖片


          之后就是Flink的計算。Flink除了對消息的轉(zhuǎn)發(fā)之外,也包括計算能力。我們這里通過一個簡單的例子去測試一下Flink的計算。這里我們對于輸入進來的數(shù)據(jù)分類統(tǒng)計每一個時間段的數(shù)量,我們在Flink里添加了一些相應(yīng)的計算代碼之后,把數(shù)據(jù)也sink到了Times DB的數(shù)據(jù)庫當中。在這個TimesscaleDB數(shù)據(jù)當中,我們就可以看到由Flink計算得到的數(shù)據(jù)。它在TimesscaleDB中呈現(xiàn)出一個數(shù)據(jù)積累的效果,那么就驗證了在Flink有狀態(tài)計算的功能。

          圖片


          另外就是Superset的數(shù)據(jù)可視化,我們做了一個初步的示例dashboard??梢钥闯鰜?,右上角的兩個圖對于來源數(shù)據(jù)進行分類統(tǒng)計,然后左邊這個圖是對于所有車的數(shù)據(jù)——速度進行了實時的分布統(tǒng)計圖。右下角是其中一輛車,比如說是它的代號是mk007,這輛車它的軌跡樣式,以及所有車的所有數(shù)據(jù)點的heat map。這里heat map我們可以看出就是在哪些地方,它明顯是一個路口。這里數(shù)據(jù)點是比較多的,有可能是因為車在這速度比較慢,或者說車在這甚至停掉了。那么在這個heat map可以看到所有數(shù)據(jù)點的分布情況。
          最后簡單總結(jié)和反思一下,我們在整個項目過程中間定期的組成例會,每次例會都留有議題文件以及文件內(nèi)的詳情,每次會議我們都有企業(yè)導師去參與進行指導。最后我們整個團隊的合作就依照著技術(shù)路線來展開,一步一步來做,步步為營,統(tǒng)籌技術(shù),文字等等去發(fā)揮每一位同學的長處優(yōu)勢。
          關(guān)于收獲,整個過程大家都收獲了很多,更多的是從技術(shù)層面對于大數(shù)據(jù)相關(guān)的技術(shù)以及一些更具體的技術(shù)都有了更深的了解,當然這個過程中間還有一些存在的問題。最后感謝所有人的努力。


          *博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。



          關(guān)鍵詞: 汽車電子

          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉