隨著移動網際網路、物聯網、大資料等行業的高速發展,資料在持續的以指數級的速度增長,比如我們使用手機訪問互網路時的行為資料,各種可穿戴裝置上報的狀態資料,工廠中裝置感測器採集的指標資料,傳統網際網路公司的監控資料等。實際上,這些按照時間順序記錄系統、裝置狀態變化的資料都是時序資料(time series),它普遍存在於網際網路、物聯網、it基礎設施中。
得益於軟硬體技術的快速發展,處理如此龐大的時序資料集的成本在持續降低,更多公司開始持續收集、分析資料,用於異常處理、趨勢**、精準營銷、風險控制等場景,希望利用資料的潛在價值,提高公司盈利能力和競爭力。這裡舉兩個例子:
1.下圖為某共享單車在舊金山某熱門區域的車輛借還情況。通過分析該區域車輛的歷史借還資料,單車公司可優化熱點時間段的車輛補給。
2. 下圖為某網際網路服務的出入流量歷史記錄。從圖中可以明顯看到入流量(藍色線)在某時間段有毛刺,服務提供商可基於此段時間排查服務有無異常。可以進一步基於流量監控做告警,使運維人員能夠及時處理線上問題。
傳統的時序資料解決方案及問題如下:
在引入時序資料庫之前,先要了解【時序資料】的模型及特點。
1.1 時序資料的數學模型
前面介紹了時序資料的場景,也說明了分析時序資料的意義及傳統方案。那麼時序資料該怎樣儲存呢?資料的儲存要考慮其數學模型和特點,時序資料當然也不例外。這裡以一段時序資料為例,介紹下時序資料的數學模型。
下列資料記錄了一段時間內某集群裡各機器上各埠的出入流量,每半小時記錄乙個觀測值:
point:乙個時序資料點,類似於關係型資料庫中的 row;
timestamp:時間戳,表徵時序資料產生的時間點;
tag:維度列,用於描述裝置/系統的屬性,表明是哪個裝置/模組產生的,一般不隨著時間變化;
field:指標列,用於描述裝置/系統狀態的變化,隨時間平滑波動。
1.2 時序資料特點
2.1 時序資料庫
時序資料庫是管理時序資料的專業化資料庫,並針對時序資料的特點對寫入、儲存、查詢等流程進行了優化,從而解決時序資料處理難題:
o 利用維度重複、時間遞增、指標平滑變化等特性,合理選擇編碼壓縮演算法,提高資料壓縮比;
o 通過預降精度,對歷史資料做聚合,節省儲存空間。
o 資料批量寫入,降低網路開銷;
o 資料先寫入記憶體,再週期性的dump為不可變的檔案儲存,提高寫入速度。
o 優化常見的查詢模式,通過索引等技術降低查詢延時;
o 通過快取、routing等技術提高查詢併發。
2.2 開源時序資料庫對比
目前行業內比較流行的開源時序資料庫產品有 influxdb、opentsdb、prometheus、graphite等,其產品特性對比如下圖所示:
從上表可以看出,開源的時序資料庫存在如下問題:
o 支援批量寫入、高併發查詢,以及強大的分析聚合能力;
o 通過橫向擴充套件,線性提公升系統效能;
o 支援sharding、routing,加速查詢。
o 分布式系統,支援多副本;
o 機架感知,自動錯開機架分配主從副本。
o 豐富的資料型別,rest介面,資料寫入查詢均使用json格式;
o 原生分布式,彈性可伸縮,資料自動均衡;
o 許可權系統:支援使用者名稱密碼、機器白名單的許可權系統。
o 支援列儲存,高壓縮比(0.1左右),降低儲存成本;
o 支援資料預降精度:降低儲存成本的同時,提高查詢效能。
o 副本數可按需調整。
o 相容kibana/logstash/beat等元件,方便資料採集及視覺化分析;
o 支援從mysql、kafka等開源生態同步資料,方便遷移。
這裡選用業界較為流行的influxdb來與ctsdb做效能對比測試。
2.1 寫入效能測試
(1) ctsdb單節點集群與influxdb單機版寫入效能對比
橫座標:併發數(寫入執行緒數) ,縱座標:qps(單位:萬次/s)
結論:ctsdb單節點寫入效能最高在19w,influxdb在15w。
(2) ctsdb單節點集群與ctsdb雙節點集群寫入效能對比
橫座標:併發數(寫入執行緒數) ,縱座標:qps(單位:萬次/s)
結論:ctsdb單節點集群寫入最高可達20w,雙節點集群寫入效能34w。
2.2 查詢效能測試
(1) ctsdb單節點集群與influxdb單機版查詢效能對比
橫座標:併發數(查詢執行緒數) ,縱座標:qps(單位:次/s)
結論:
(2) ctsdb單節點集群與雙節點集群查詢效能對比
橫座標:併發數(查詢執行緒數) ,縱座標:qps(單位:次/s)
結論:在併發數較高的情況下,雙節點集群查詢效能較單節點集群有了大幅度提公升,呈現了查詢效能線性擴充套件的趨勢。
歡迎對時序資料庫和分布式儲存感興趣的同學加入我們!
時序資料庫
看到這類資料處理基本是要對乙個時間範圍的資料,根據時間段,維度進行歸類,做一些聚合運算。時序資料庫要解決的問題就是如何能在海量資料中,快速響應使用者的此類查詢。序資料庫的一些基本概念 不同的時序資料庫稱呼略有不同 metric 度量,相當於關係型資料庫中的table。data point 資料點,相...
時序資料庫介紹
什麼是時序資料庫 先來介紹什麼是時序資料。時序資料是基於時間的一系列的資料。在有時間的座標中將這些資料點連成線,往過去看可以做成多緯度報表,揭示其趨勢性 規律性 異常性 往未來看可以做大資料分析,機器學習,實現 和預警。時序資料庫就是存放時序資料的資料庫,並且需要支援時序資料的快速寫入 持久化 多維...
Influxdb 時序資料庫 windows 安裝
influxdb 是一款比較火爆的時序資料庫,本文介紹如何在 windows 平台下安裝。1.場景 windows 平台的 influxdb 似乎只支援單機非windows 服務的安裝方式 適用於測試環境或者想體驗什麼是時序資料庫。2.準備安裝包 截止到 2018 07 05,最新版本是 1.5.4...