導讀:隨著消費者更安全、更舒適、更便捷的駕駛體驗需求不斷增長,汽車智能化已成必然趨勢。長安汽車智能化研究院作為長安汽車集團有限責任公司旗下的研發機構,專注于汽車智能化技術的創新與研究。為滿足各業務部門的數據分析需求,長安汽車基于 Apache Doris 升級了車聯網數據分析平臺,支撐單日百億級別數據實時處理,并實現十億級別數據查詢秒級響應,為長安汽車在提升用戶用車體驗、實時預警車輛故障、保證車輛安全駕駛等方面帶來顯著成果,為其在智能化方向的技術創新提供了有力支持。
智能化是汽車工業進程中的一場革命,它旨在利用大數據、人工智能、云計算、物聯網等前沿數字技術,對汽車設備和系統的運行狀態進行全方位的感知、分析、決策和控制,從而提高汽車的安全性、舒適性、便捷性和節能性。
長安汽車智能化研究院作為長安汽車集團有限責任公司旗下的研發機構,專注于汽車智能化技術的創新與研究,其愿景是通過持續創新和技術突破,實現汽車智能駕駛、智能網聯和智能交通的全面發展,為消費者提供更安全、更便捷、更智能的出行體驗,并致力于成為中國汽車智能化領域的領軍企業。
實現汽車智能化的關鍵之一,是需要建立穩定、高效的數據平臺,以承載和利用海量的車聯網數據。作為智能化發展的重要支撐,長安汽車智能化研究院肩負著整個長安汽車集團車聯網數據的匯聚、處理和應用工作。為滿足各業務部門提出的數據支持需求,目前已經構建了車聯網數據分析平臺,并在業務指標分析、質量管理系統、智慧能耗、智能診斷、智慧運營等多個重點領域實現數據應用。
本文將詳細介紹長安汽車車聯網數據分析平臺的演進歷程及實踐經驗,分享長安汽車基于 Apache Doris 支撐單日百億級別數據實時處理、實現十億級別數據查詢秒級響應的實踐經驗。此外,Apache Doris 的引入還為長安汽車在用戶用車體驗提升、駕駛安全保障等方面帶來顯著收益,為長安汽車從機電化到智能化轉型發展提供有力支持。
汽車智能化所面臨的挑戰
近些年來,長安汽車取得了令人矚目的銷量增長成績。1-8 月,長安汽車自主乘用車累計銷量超百萬輛、保持持續上升的發展勢頭,以深藍、阿維塔、啟源為代表的新能源系列品牌力和產品競爭力不斷提升,自主新能源車累計銷量約為 25.6 萬輛、同比增長 102.44%,成為銷量增長新動能。
在汽車銷量快速攀升的背后,車聯網數據更是呈現爆發式增長的態勢,其中最為核心的即車輛 CAN 總線數據。CAN 即 Controller Area Network,通過 CAN 總線可以對車輛上的各類電子控制系統進行統一通信,在實際車輛運行過程中 ,CAN 總線數據是車輛安全性、可靠性和高性能的重要保證:
- 車輛系統監測和控制:CAN 總線數據可用于監測和控制系統中的各種設備和組件。傳感器通過 CAN 總線發送其測量值,如溫度、壓力、位置等,以便其他設備或控制器實時監測和采取相應的措施。同時,控制器可以通過 CAN 總線向執行器發送控制指令,如調節閥門、驅動電機等,以實現對系統的控制。
- 車輛信息實時反饋:CAN 總線數據可用于提供實時反饋信息。例如在車輛控制系統中,傳感器通過 CAN 總線傳輸車速、轉向角度、制動狀態等數據,控制器可以根據這些數據進行實時決策和調整,以確保車輛的安全性和性能。
- 數據共享和協調:CAN 總線數據允許不同設備之間進行數據共享和協調。通過 CAN 總線,不同的控制器和設備可以交換信息,共享狀態和控制命令,有利于提高系統的整體性能和效率。
- 網絡管理和故障診斷:CAN 總線數據用于網絡管理和故障診斷。通過 CAN 總線,可以進行設備的自動識別、配置和監控,以便進行網絡管理和故障排查,提高系統的可靠性和可維護性。
隨著網聯車銷量不斷增長,車輛每天將產生千億級別的 CAN 數據,清洗處理后的數據也在 50 億級別,面對如此龐大且持續膨脹的數據規模,如何從海量數據中快速提取挖掘有價值的信息,為研發、生產、銷售等部門提供數據支持,成為當前亟需解決的問題。
而想要提供良好的數據支持及服務,首先需要應對以下幾大挑戰:
- 大規模數據實時寫入及處理:為實現智能化,汽車的車門、座椅、剎車燈設備被設置了大量的傳感器,每個傳感器收集一種或者多種信號數據,數據被匯聚后進一步加工處理。目前長安汽車需要支持至少 400 萬輛車的鏈接,車聯網數據每秒吞吐量已達百萬級 TPS ,每日新增數據規模高達數十 TB ,且還在持續增長中。如何對數據進行實時寫入成為了長安汽車首要面臨的挑戰。
- 準確及時的實時數據分析需求:車聯網場景下數據分析通常要求實時性,快速獲取分析結果是實時監控、故障診斷、預警和實時決策等服務的重要保障。例如在智能診斷中,車企需要近實時地收集相關信號數據,并快速定位故障原因。通過分析車輛傳感器數據、行駛記錄等,可以提前發現潛在故障,進行預防性維護,提高車輛的可靠性和安全性。
- 更加低廉的數據存儲和計算成本:面對快速增長的的數據以及日益強烈的全量寫入和計算需求,導致數據存儲和計算成本不斷攀升。這就要求數據平臺具備低成本存儲和計算的能力,以降低使用成本;同時需具備彈性伸縮能力,以便用戶在業務高峰期快速擴容,提升海量數據計算場景的分析效率。
為給用戶提供更優質的駕車體驗、為業務部門提供更準確高效的數據支持,長安汽車開始對大數據平臺的建設進行探索和實踐。
Hive 離線數據倉庫難以支撐超大規模實時數據服務

長安汽車最早以 Hive 為核心構建了數據平臺架構,所處理數據包括車輛 CAN 總線數據和埋點數據,這些數據通過 4G 網絡從車端傳送至長安云端網關,然后由網關將數據寫入 Kafka??紤]到數據量級和存儲空間的限制,早期架構中的數據處理流程是將 Kafka 采集到的數據直接通過 Flink 進行處理,并通過 ETL 將結果存儲到 Hive 中。下游應用使用 Spark SQL 進行逐層離線計算,并通過 Sqoop 將匯總數據導出到 MySQL 中。最終由 Hive 和 MySQL 分別為應用層提供數據服務。
盡管該架構在早期基本滿足了數據處理需求,但隨著車輛銷量不斷增長,當需要面對每天千億級別的數據處理分析工作時,架構的問題逐步暴露出來:
- 數據時效性無法保證:Hive 的導入速度較慢,尤其在處理大規模數據時,導入時間明顯增加;同時部分業務依賴 T+1 離線任務,無法滿足實時數據處理需求;此外, Hive 只支持分區覆蓋,不支持主鍵級別的數據更新,無法滿足特殊場景的數據更新需求。
- 數據查詢分析延遲較高:對于 10 億級別以上大規模表查詢,Hive 查詢性能較慢。通過 SparkSQL 進行數倉分層運算時,啟動和任務執行時間較長,對查詢響應也會產生影響。此外,數據看板、BI 展示應用無法直接從 Hive 中查詢,需要將 Hive 中數據導出到 MySQL 中,由 MySQL 提供服務,受限于 Hive 導數性能,當數據量較大時,導出到 MySQL 耗時大幅增加,進而導致查詢響應時間變長。此外,通過 Java 后端查詢 MySQL 時,數據量過大也會影響數據的響應時間。
追根究底,產生這些問題的根本原因在于早期架構無法滿足超大規模實時數據場景下的數據需求,這迫使長安汽車必須進行平臺升級改造。
技術調研與選型
長安汽車經過深入調研,決定引入開源實時數據倉庫 Apache Doris ,在導入性能、實時查詢等方面具有顯著優勢:
- 豐富的數據導入方式:Doris 提供了豐富的內置導入方式,如 Broker Load 和 Stream Load 等,可以滿足實時和離線場景中數據導入需求。
- 支持實時查詢分析:Doris 大表 Join 能力突出,提供了多種分布式 Join 方式,使 Join SQL 編寫具備高度靈活性,極大提升數據分析的效率。此外,Doris 支持單節點上萬 QPS 的超高并發,可解決早期架構由于前端并發量過大導致查詢失敗的問題。
- 較低的使用成本:Doris 兼容 MySQL 協議,開發人員可以更高效便捷的使用 MySQL 編寫和執行查詢語句,有效提高開發效率?;?Doris 極簡的架構,不僅讓部署運維更加簡單,也讓擴縮容操作變的更加方便彈性。同時,Doris 擁有良好的上下游生態,可為用戶提供靈活高效的數據管理和分析體驗。這些優勢和特性都極大的降低了 Doris 的使用成本。
除此以外,開源社區的活躍度也是我們考慮的重要因素之一 。Apache Doris 吸引了大量的開發者及用戶參與社區,共同貢獻代碼和改進 Doris,這對質量和穩定性的提高起關鍵作用。同時,Doris 社區為用戶提供了全面的文檔資料和技術支持,任何問題都可以快速得到解答和幫助。Apache Doris 的活躍程度使我們在使用時更加放心,解決了技術方面的后顧之憂。
基于 Apache Doris 車聯網數據分析平臺

在新的車聯網數據分析平臺中,通過 Flink 結合 Doris 的 Stream Load 功能,可直接將 Kafka 數據實時寫入 Doris,同時,利用 Doris Broker Load 功能可以將 Hive 中數據導入到 Doris 中進行分析計算。在這個架構中,Apache Doris 承擔了實時數據部分的計算和處理,還作為結果端直接輸出數據給上游業務平臺調用。
這一升級在系統上縮短了數據處理的路徑,保證了大規模數據導入的時效性。此外,Apache Doris 的引入為上游應用層提供統一數據服務支持,這對于查詢分析效率的提升至關重要。具體收益如下:
- 便捷進行數據寫入和遷移:Doris 支持豐富的數據導入形式,可輕松從不同的數據源中導入數據。其次,Doris 支持通過 insert into select 快速導入數據,無需進行繁重的數據遷移配置以及引入外部同步組件。
- 統一數據服務,秒級查詢響應:通過 Doris Multi-Catalog 功能,數據分析師可直接從 Doris 上查詢數據,實現秒級別查詢響應。其次,Doris Join 能力優異,對于超過 1000 萬的結果表查詢也可實現秒級返回結果。
- 降低存儲和計算成本:在早期架構中,使用 Flink 實時寫入數據并進行壓縮時需要消耗大量的計算資源。而引入 Apache Doris 后,借助 Doris ZSTD 壓縮算法(3-5 倍壓縮率提升),可有效降低計算和存儲所需的資源,還可以將壓縮處理流程放到 Doris 內部進行,無需消耗 Flink 計算資源。
從 T+1 到 T+0,實時數據提升智能駕駛體驗
CAN 總線數據在車輛分析中扮演著關鍵的角色,通過 CAN 總線可以讀取車輛的各種狀態信息,例如車速、轉速、水溫等。這些數據對于分析車輛的行駛數據具有重要的價值,為整車研發單位提供寶貴的參考信息。
在早期架構中,車輛 CAN 數據是按照 CAN ID 作為維度進行上傳的,而在實際使用中,通常需要將不同 CAN ID 的信號按照時間對齊形成一個寬表。過去的數倉架構解決方案會先將 Kafka 中的數據寫入到 Hive,此時不同 CAN ID 的數據被存儲在不同的行中,需要使用 SparkSQL T+1 將數據轉換為幾個不同業務域的寬表。然而,這種計算方式耗時較長,SQL 語句難以維護,且數據的實時性較差。
在引入 Apache Doris 之后,我們在 Doris 中基于 Aggregate 聚合模型建立了業務域的寬表,將車輛和時間等作為主鍵,其他的信號字段都用REPLACE_IF_NOT_NULL定義。具體如下:

首先,可以使用 Flink 來消費 Kafka 中按 CAN ID 維度的數據,在 Flink 中根據業務域寬表的配置對數據進行分流,將同一個 CAN ID 上的信號分配到相應的業務域寬表中。當同一個車輛在同一時間內不同 CAN ID 的數據到達同一個業務域寬表時,可以將這些數據填充到同一行中的不同 CAN ID 的信號數據字段中,實現寬表的構建(如上圖 Doris 的表示例)。
在這種方式中,主要通過 Flink 對數據進行分流,將數據發送到不同的 Doris 業務域寬表中(每個寬表約有 200 個字段)。寬表的生成邏輯被放在了 Doris 中,而不是在 Flink 中進行寬表對齊的操作。這樣設計的原因是不同 CAN ID 的數據上傳存在一定的時間差,時間窗口過大時,使用 Flink 根據車輛和時間進行聚合可能會導致資源開銷過高。
通過以上方案,可以將數據的新鮮度從 T+1 提高到 T+0 。同時,對于包含約 10 億行數據的寬表,可以達到秒級的查詢效率,即在進行單車查詢時,可以快速地獲取查詢結果。
10 億級別 DTC 故障碼實時查詢,保障車輛駕駛安全
DTC 屬于 CAN 數據中的故障報文,因此對其進行單獨的業務數據存儲。每天的 DTC 數據量級可以達到 10 億條,為了讓業務端便捷高效的使用這些數據,快速進行故障診斷,提升車輛安全性,需要將 DTC 故障碼明細數據與一張 MySQL 業務配置表進行關聯。
在早期架構中,開發人員每天都需要將海量 DTC 數據先寫入到 Kafka 中,然后通過 Flink 進行實時處理,并將結果存儲到 Hive 中。而這種處理方式存在一些問題:
- 面對 10 億級數據量的表,難以將其導入 MySQL 進行實時查詢。如果直接查詢 Hive,則查詢反饋時間會非常長,難以滿足業務需求。
- 由于無法直接關聯 MySQL 的配置表,不得不定時將配置表導入 Hive 數倉。這樣做雖然能夠滿足數據處理的需求,但卻丟失了 DTC 配置的實時性。

在引入 Apache Doris 后,采用上圖所示處理方式成功解決了早期架構存在的問題。首先將 Hive 的 DTC 明細數據通過 HDFS 文件導入的方式導入到 Doris 中,然后創建對應的 MySQL Catalog 連接,最后使用后端 Java 通過 MyBatis 連接 Doris 數據庫,并使用 SQL 通過 Catalog 連接 MySQL 的 DTC 配置表進行 Join 操作,可直接實時查詢返回結果。
通過 Apache Doris 成功完成了 10 億級別數據的實時查詢,并且可以對關聯的 MySQL 配置表進行直接關聯查詢,成功實現了配置的實時更新。
總結與規劃
憑借 Apache Doris 卓越的性能,目前在長安汽車已經部署數十臺機器,支撐了近十條業務線,每天處理數據規模達到百億級別。 Apache Doris 的引入為長安汽車在提升用戶用車體驗、實時預警車輛故障、保證車輛安全駕駛等方面帶來顯著成果,為其在智能化方向的技術創新提供了有力支持。
未來,長安汽車將進一步將 Apache Doris 應用在標簽和指標業務,實現以下需求:
- 自動識別冷熱數據:將熱數據存儲在 Apache Doris 中,冷數據存儲在 Hive 中,通過這種方式實現更高效的數據訪問和管理。
- 擴大業務范圍:對現有的 Doris 業務 SQL 代碼進行優化,利用 Doris 的某些特性和功能,將適合這些特性的業務遷移到 Doris 中,從而提高數據處理和查詢的效率。
- 共建社區:積極嘗試使用 Doris 最新版本及新功能,在與社區保持同步的同時,不斷探索和應用新的技術,反哺社區、為社區發展做出貢獻。
最后,衷心感謝 Apache Doris 社區和飛輪科技技術團隊的積極支持,期待未來與大家繼續深入合作,推動長安汽車智能化發展,為用戶提供更好的駕車體驗!


