郝建明, 袁逸濤
(中遠海運科技股份有限公司,上海 200135)
時間序列數(shù)據(jù)(以下簡稱“時序數(shù)據(jù)”)是按數(shù)據(jù)屬性中的時間戳大小排列的一系列記錄值的數(shù)據(jù)。近年來,隨著物聯(lián)網和5G技術的不斷發(fā)展,時序數(shù)據(jù)在交通、工業(yè)和金融等領域得到了廣泛應用。特別是在高速公路領域,由交通運輸部主導實施的“取消高速公路省界收費站項目”和“高速公路視頻云聯(lián)網項目”等重大工程,極大地提升了高速公路上電子不停車收費系統(tǒng)(Electronic Toll Collection,ETC)門架、智能攝像機等感知設備的建設規(guī)模。這些感知設備會持續(xù)產生海量的時序數(shù)據(jù),利用好這些時序數(shù)據(jù),可為智慧高速運營管理提供更可靠的數(shù)據(jù)分析服務。
據(jù)調查,對于ETC門架而言,單一設備采集的單日數(shù)據(jù)量峰值能達到上萬條;同時,對于高速公路整體數(shù)據(jù)容量而言,單個省份每年的高速公路時序數(shù)據(jù)存儲容量需求能達到PB級別。以MySQL和Oracle為代表的傳統(tǒng)關系型數(shù)據(jù)庫受存儲結構的限制,在數(shù)據(jù)庫設計層面無法完成對海量時序數(shù)據(jù)的快速連續(xù)存儲,而關系型數(shù)據(jù)庫的多路搜索樹(B-Tree)結構在處理時序數(shù)據(jù)的檢索查詢問題時,速度較慢,導致數(shù)據(jù)的實時分析和展示效果都很差。
時間序列數(shù)據(jù)庫(以下簡稱“時序數(shù)據(jù)庫”)基于時序數(shù)據(jù)的結構特點,在數(shù)據(jù)寫入性能、數(shù)據(jù)查詢性能和數(shù)據(jù)存儲壓縮率等3項指標上做了針對性優(yōu)化,相比關系型數(shù)據(jù)庫在性能上有了很大提升。本文對主流的時序數(shù)據(jù)庫進行研究,并基于TDengine時序數(shù)據(jù)庫設計實現(xiàn)一套高速公路數(shù)據(jù)集成平臺,解決高速公路海量時序數(shù)據(jù)高效壓縮存儲和快速實時分析方面的難題,并在寧夏高速公路落地應用。
時序數(shù)據(jù)的最大特點是存在唯一的時間戳,在存儲過程中需以時間戳的大小排序,并以時間戳作為同一設備數(shù)據(jù)的唯一標識進行區(qū)分。由于物聯(lián)網設備在某個時刻產生的數(shù)據(jù)基本上不會再發(fā)生變化,因此幾乎不需要對時序數(shù)據(jù)進行更新。對于關系型數(shù)據(jù)而言,經常需對已存在的數(shù)據(jù)進行更新操作[1]。
此外,時序數(shù)據(jù)的數(shù)據(jù)量會隨著時間的推移持續(xù)呈線性增長。例如,高速公路養(yǎng)護車輛安裝的定位終端每隔幾秒就會產生新的數(shù)據(jù),在車輛行駛過程中產生的時序數(shù)據(jù)數(shù)量會不斷增加。關系型數(shù)據(jù)通常不隨著時間的推移持續(xù)增加,在一段時間內是相對穩(wěn)定的。
時序數(shù)據(jù)庫針對上述數(shù)據(jù)的特性,通過對時序數(shù)據(jù)的存儲和查詢場景進行優(yōu)化,滿足對海量時序數(shù)據(jù)的高效存儲和快速處理的需求。與關系型數(shù)據(jù)庫相比,時序數(shù)據(jù)庫主要通過優(yōu)化存儲機制大幅降低存儲空間的開銷,優(yōu)化查詢速率。在時序數(shù)據(jù)分析方面,采用靈活的時間聚合功能、數(shù)據(jù)保留策略和多維度時間范圍查詢等機制提高數(shù)據(jù)分析速率。
時序數(shù)據(jù)庫的特點[2]一般體現(xiàn)在以下幾個方面。
1) 高吞吐量數(shù)據(jù)高速寫入能力。由于時序數(shù)據(jù)庫的應用場景通常持續(xù)產生海量數(shù)據(jù),對寫入速度的要求很高,寫入并發(fā)量很大,這就要求時序數(shù)據(jù)庫能實現(xiàn)高吞吐量的數(shù)據(jù)高速寫入功能。
2) 高壓縮率。時序數(shù)據(jù)庫需存儲大量數(shù)據(jù),數(shù)據(jù)存儲需求通常是TB級別,甚至達到PB級別,因此需根據(jù)時序數(shù)據(jù)的特征對數(shù)據(jù)進行壓縮存儲,提高數(shù)據(jù)存儲空間的利用率。
3) 高效時間窗口查詢能力。時序業(yè)務的查詢需求分為2類:一是實時數(shù)據(jù)查詢,反映當前監(jiān)控對象的狀態(tài);二是主要查詢某個時間段的歷史數(shù)據(jù)。歷史數(shù)據(jù)的數(shù)據(jù)量很大,此時需對時間窗口大量數(shù)據(jù)查詢進行優(yōu)化。
4) 高效聚合能力。由于時序數(shù)據(jù)使用時間戳作為唯一標識,因此在對時序數(shù)據(jù)進行分析時會將數(shù)據(jù)的匯聚值作為重要的分析指標,反映應用場景下某個時間段內的數(shù)據(jù)整體情況,這意味著時序數(shù)據(jù)庫需提供高效的聚合函數(shù)。
5) 批量刪除能力。時序數(shù)據(jù)通常以時間為數(shù)據(jù)有效性指標,因此需對過期的數(shù)據(jù)進行批量刪除操作。
6) 通常無需具備事務的能力。時序數(shù)據(jù)庫主要的應用場景是數(shù)據(jù)分析和挖掘,很少用于實現(xiàn)業(yè)務流程的數(shù)據(jù)流轉,因此無需具備事務功能。
由于時序數(shù)據(jù)庫在設計之初就與關系型數(shù)據(jù)庫有明顯區(qū)別,因此其基本屬性也與關系型數(shù)據(jù)庫不同。時序數(shù)據(jù)庫的基本屬性概念見表1[3]。
表1 時序數(shù)據(jù)庫的基本屬性概念
本文設計的高速公路數(shù)據(jù)集成平臺主要用于對各省的高速公路運營體系產生的所有數(shù)據(jù)進行統(tǒng)一采集、匯聚、存儲、治理、分析、共享和展示,為高速公路運營公司搭建數(shù)據(jù)中臺,增強其路網運行態(tài)勢感知能力,提高其高速公路運營管理水平,提升其高速收費效率和服務能力,保障高速公路的安全性和暢通性。
作為新基建的重要組成部分,智慧高速上安裝有大量物聯(lián)網感知設備,這些設備采集的數(shù)據(jù)絕大部分都是時序數(shù)據(jù),因此如何對時序數(shù)據(jù)進行存儲、治理、分析、展示和挖掘,已成為高速公路數(shù)據(jù)集成平臺需解決的核心問題之一。
通過對各省的高速公路運營公司進行調研發(fā)現(xiàn),在具體的應用場景下,對高速公路時序數(shù)據(jù)的本質要求是不變性、唯一性和可分析性。因此,高速公路時序數(shù)據(jù)的應用需求主要有以下3點。
1) 數(shù)據(jù)高并發(fā)寫入。目前,在各類高速公路物聯(lián)網設備采集的時序數(shù)據(jù)中,每日入庫的數(shù)據(jù)量已突破億級大關,高效地將如此大批量的時序數(shù)據(jù)入庫已成為高速公路數(shù)據(jù)集成平臺的一個核心需求。
2) 數(shù)據(jù)高效分析。各省高速公路運營公司的一個重要職責是對高速公路路況進行實時監(jiān)測。路況分析的實時性要求較高,需根據(jù)采集到的時序數(shù)據(jù)快速、可靠地分析出路網的運行態(tài)勢,此類數(shù)據(jù)分析的速度需達到秒級水平。隨著業(yè)務應用場景的不斷拓展,數(shù)據(jù)的復雜性和分析頻次都會呈指數(shù)級增長,如何快速、高效和準確地進行時序數(shù)據(jù)分析也是高速公路數(shù)據(jù)集成平臺面臨的一大難題。
3) 數(shù)據(jù)的可靠性和安全性。高速公路運營體系內的部分數(shù)據(jù)(例如車輛精細化收費金額)屬于敏感性數(shù)據(jù),因此保障數(shù)據(jù)存儲的可靠性和安全性也是高速公路數(shù)據(jù)集成平臺的核心需求之一。
本文對高速公路運營體系內的時序數(shù)據(jù)的各類數(shù)據(jù)源進行調研,分析其時序數(shù)據(jù)的特點,結果見表2。
表2 高速公路時序數(shù)據(jù)分析結果
針對高速公路數(shù)據(jù)集成平臺的時序數(shù)據(jù)的特點,對目前主流的InfluxDB、OpenTSDB和TDengine等3款時序數(shù)據(jù)庫產品進行選型研究。
根據(jù)前期調研情況,準備由ETC門架采集的4 000萬條車牌識別數(shù)據(jù)進行選型測試。每條數(shù)據(jù)采集記錄都包含1個時間戳、2個標簽符和4個采集數(shù)據(jù)值,由統(tǒng)一的客戶端對服務端進行數(shù)據(jù)推送,推送頻率為10 000條/s。每條數(shù)據(jù)的每個變量所需存儲空間約為20字節(jié)。研究指標包含占用存儲空間、百萬數(shù)據(jù)遍歷查詢耗時和千萬數(shù)據(jù)聚合查詢耗時,其中聚合查詢涵蓋COUNT、AVG、SUM、MAX和MIN等常見語法。
此次選型研究采用3臺16核64G內存的服務器搭建存儲集群,服務器的操作系統(tǒng)均為CentOS Linux release 7.9.2009。占用磁盤空間分析結果見表3。
表3 占用磁盤空間分析結果
表4為百萬數(shù)據(jù)遍歷查詢分析結果,其中G-x中的x用0~39的數(shù)字標識分組,每組100萬條記錄(總共4 000萬條數(shù)據(jù),共40組),限于篇幅,本文僅展示前8組(G-02~G-08)的測試結果。表5為千萬數(shù)據(jù)聚合查詢。
表4 百萬數(shù)據(jù)遍歷查詢分析結果
表5 千萬數(shù)據(jù)聚合查詢
經研究,在相同條件下:對于占用存儲空間指標,TDengine和InfluxDB的表現(xiàn)較好,3種數(shù)據(jù)庫的各指標的差異較??;對于百萬數(shù)據(jù)遍歷查詢分析指標,TDengine的表現(xiàn)最好,且明顯優(yōu)于OpenTSDB和InfluxDB;對于千萬數(shù)據(jù)聚合查詢耗時指標,TDengine的表現(xiàn)明顯優(yōu)于InfluxDB和OpenTSDB。
從查詢效率的維度看,InfluxDB的查詢效率與TDengine相差不大,但隨著原始數(shù)據(jù)的設計復雜度的提高,遇到了InfluxDB的查詢效率方面的瓶頸問題。因為InfluxDB沒有明確的基于單一數(shù)據(jù)源的建表方式,若用1張表保存所有類似數(shù)據(jù)源的數(shù)據(jù),數(shù)據(jù)量會很大,查詢性能會下降。比較明顯的是,在百萬數(shù)據(jù)量級以內,若采用這種建表方式,查詢數(shù)據(jù)所需時間約為1 s,而當數(shù)據(jù)到達千萬量級時,數(shù)據(jù)查詢效率下降十分明顯,無法滿足高速公路數(shù)據(jù)集成平臺的應用場景需求[4]。
通過選型研究發(fā)現(xiàn),TDengine在查詢性能維度上的表現(xiàn)較好,滿足高速公路數(shù)據(jù)集成平臺的業(yè)務查詢需求,且TDengine的集群功能開源,方便橫向擴展,具備系統(tǒng)彈性,為國產數(shù)據(jù)庫產品,符合高速公路行業(yè)信息技術的國產化發(fā)展趨勢。因此,本文最終確定將TDengine作為高速公路數(shù)據(jù)集成平臺的時序數(shù)據(jù)庫。
高速公路數(shù)據(jù)集成平臺以高速公路運營管理問題和需求為導向,整合高速公路運營體系內的所有數(shù)據(jù),對高速公路數(shù)據(jù)進行采集、加工、存儲、治理、分析和共享,除了滿足高速公路運營公司的使用需求以外,還可滿足不同行業(yè)、不同部門的高速公路交通數(shù)據(jù)應用和挖掘分析需求[5]。
本文設計的高速公路數(shù)據(jù)集成平臺的總體結構見圖1。
圖1 高速公路數(shù)據(jù)集成平臺的總體架構
1) 采集層:主要匯聚外場設備數(shù)據(jù)和第三方系統(tǒng)提供的業(yè)務數(shù)據(jù),其中時序數(shù)據(jù)主要來源于各類外場設備。外場設備通過不同的通信協(xié)議(MQ、MQTT、AMQP、HTTP、TCP、HJT212、ModBus和NB等),經過數(shù)據(jù)傳輸接入平臺中。
2) 硬件層:通過物理服務器集群搭建私有云平臺,建立虛擬資源池,實現(xiàn)對服務器資源的統(tǒng)一規(guī)劃調度,主要分為計算資源池、存儲資源池和網絡資源池。網絡環(huán)境主要由5G物聯(lián)網,以及傳統(tǒng)的收費專網、監(jiān)控專網和互聯(lián)網組成,專有網絡按國家等保二級設計,兼顧網絡的安全性和開放性。
3) 數(shù)據(jù)層:以MySQL和TDengine為核心,MySQL用來存儲常規(guī)的關系型業(yè)務數(shù)據(jù),TDengine用來存儲時序數(shù)據(jù)。所有數(shù)據(jù)經過Kafka消息隊列處理之后進入Redis緩存池,最終存儲到數(shù)據(jù)庫中。所有設備產生的時序數(shù)據(jù)都由Kafka消息對接進行消費,隨后進行噪點清洗,將有用的數(shù)據(jù)及時更新到MySQL和TDengine 中。第三方系統(tǒng)數(shù)據(jù)主要通過中間庫的庫表交換方式與HTTP接口交互。
4) 應用支撐層:基礎支撐平臺是支撐平臺應用的引擎底座,通過對存儲的數(shù)據(jù)進行分析處理,為上層應用提供支撐,主要包括數(shù)據(jù)接口認證、BI(Business Intelligence)分析工具、GIS(Geographic Information System)地圖、ZooKeeper監(jiān)測工具、智慧高速算法引擎和視頻智能分析算法等基礎支撐服務。
5) 應用層:在對數(shù)據(jù)進行處理分析之后,為平臺用戶提供實時路況分析、擁堵治理、交通流量監(jiān)測和匝道智能控流等多個應用場景。
由于高速公路運營體系內的各種設備的協(xié)議和上報的數(shù)據(jù)都是不同的,因此本文將公共屬性(如位置、方向、所屬高速、所屬片區(qū)、所屬廠家和設備類型等)作為超級表標簽,將共有參數(shù)(如車速、車牌號、車型和車種等)作為普通列,將時間戳+設備編號作為超級表主鍵,將其他非共有參數(shù)作為子表字段[6]。
以ETC門架的子表為例,其結構見表6。
表6 ETC門架子表結構
高速公路數(shù)據(jù)集成平臺的數(shù)據(jù)持久化流程見圖2,外場設備和第三方數(shù)據(jù)通過不同的采集方式進入數(shù)據(jù)解析服務中。HTTP服務和MQTT服務適合定時數(shù)據(jù)獲取,數(shù)據(jù)定時抽取的形式通過開發(fā)定時任務定義,數(shù)據(jù)同步策略有全量同步和增量同步2種。
圖2 高速公路數(shù)據(jù)集成平臺的數(shù)據(jù)持久化流程
數(shù)據(jù)解析服務通過建立數(shù)據(jù)過濾規(guī)則引擎,根據(jù)已有的規(guī)則參數(shù)進行數(shù)據(jù)過濾,從完整性、有效性、準確性、及時性和規(guī)范性等方面對數(shù)據(jù)過濾規(guī)則進行處理,確保數(shù)據(jù)的時效性和數(shù)據(jù)質量滿足要求,實現(xiàn)數(shù)據(jù)全壽命周期管理,保證數(shù)據(jù)記錄可追溯。
在過濾數(shù)據(jù)之后,進一步對過濾的數(shù)據(jù)進行結構化解析,由Kafka消息隊列處理之后進入Redis緩存。每個發(fā)送給Kafka的消息都有一個主題,對數(shù)據(jù)進行分類處理。由Redis訂閱Kafka的主題,對數(shù)據(jù)進行區(qū)分,關系型數(shù)據(jù)存入MySQL中,時序數(shù)據(jù)存入TDengine中。
本文設計的高速公路數(shù)據(jù)集成平臺已在寧夏高速公路運營公司落地應用,使用3臺16核64G內存、4T硬盤的服務器搭建了3個節(jié)點3個副本的TDengine集群,為寧夏高速公路運營公司提供了路網運行態(tài)勢感知、路網流量分析監(jiān)測、路網流量預測研判和高速公路出入口智能管控等多種應用場景。
在投入使用2個月之后,高速公路數(shù)據(jù)集成平臺已集成時序數(shù)據(jù)約5億條,峰值數(shù)據(jù)寫入速度達到了1.5萬行/s。原始數(shù)據(jù)容量約為708 GB,經過壓縮之后為67 GB,數(shù)據(jù)壓縮率達到了約9%,疊加使用TDengine數(shù)據(jù)過期刪除機制,大幅節(jié)約了存儲成本。同時,在當前高并發(fā)寫入規(guī)模下(0.5萬~1.5萬行/s),CPU(Central Processing Unit)資源占用率不到1%,內存占用只有2G,節(jié)約了大量服務器計算資源,為數(shù)據(jù)集成平臺的數(shù)據(jù)分析節(jié)約了更多算力資源(見圖3)。
圖3 CPU占用率隨時間的變化曲線
與傳統(tǒng)的MySQL分區(qū)+索引處理各類時序數(shù)據(jù)的模式相比,時序數(shù)據(jù)入庫的性能提升了4倍,各類查詢性能提升了3~10倍。
基于TDengine實現(xiàn)的多個應用場景運行效果良好,以寧夏高速公路路網流量分析監(jiān)測應用為例(見圖4),高速公路數(shù)據(jù)集成平臺對車輛定位數(shù)據(jù)、高德地圖實時路況數(shù)據(jù)和ETC門架數(shù)據(jù)進行匹配分析,對空間和時間進行多角度、多粒度分析,深度挖掘數(shù)據(jù),結合歷史數(shù)據(jù)進行流量態(tài)勢計算,進一步實現(xiàn)了短時流量預測,為高速公路運營公司掌握車流分布、實時監(jiān)測重點管控區(qū)域的車流量提供了直觀可視化展示功能,為人力、物資安排和高速公路出入口管控措施的實施提供了決策支持。
圖4 寧夏高速公路流量分析監(jiān)測應用
本文通過研究時序數(shù)據(jù)庫指標的特性,結合高速公路時序數(shù)據(jù)的特點,基于TDengine時序數(shù)據(jù)庫設計實現(xiàn)了一套高速公路數(shù)據(jù)集成平臺,解決了關系型數(shù)據(jù)庫無法滿足高速公路信息化領域的海量時序數(shù)據(jù)存儲和高效查詢需求的難題。該平臺已在寧夏高速公路落地應用,結果表明其能在智慧高速的路網運行態(tài)勢感知、實時路況分析、擁堵治理、交通流量監(jiān)測和匝道智能控流等多個應用場景下發(fā)揮作用,有效支撐高速公路運營管理決策分析,為高速公路大數(shù)據(jù)的分析和應用提供了一種新的研究思路。