日吞吐萬億,騰訊雲時序資料庫CTSDB解密

2021-09-11 11:03:23 字數 2475 閱讀 8819

隨著移動網際網路、物聯網、大資料等行業的高速發展,資料在持續的以指數級的速度增長,比如我們使用手機訪問互網路時的行為資料,各種可穿戴裝置上報的狀態資料,工廠中裝置感測器採集的指標資料,傳統網際網路公司的監控資料等。實際上,這些按照時間順序記錄系統、裝置狀態變化的資料都是時序資料(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...