衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

可觀測平臺如何存儲時序曲線?滴滴實踐全歷程分享

Linux閱碼場 ? 來源:Linux閱碼場 ? 2023-10-13 16:04 ? 次閱讀

滴滴的時序曲線量從 2017 年 到 2023 年增長了幾十倍。整個過程中我們不斷地調整和改進以應對這樣的增長。例如時序數據庫的選型從最初的 InfluxDB,到 RRDtool,又開發了內存 TSDB 分擔查詢壓力,再到 2020 年開始使用 VictoriaMetrics。載體也從全公司最高配的物理機型到現在的全容器部署。其中經歷了很多的思考和取舍,下文將按時間順序,為大家講述這一系列的故事。

2017年 InfluxDB 時代

時序數據庫的一哥 InfluxDB,是我們最初選擇的時序數據庫。但隨著時序曲線的規模變大,InfluxDB 的局限性也開始暴露了出來。同時社區中關于 InfluxDB OOM 的討論也日益增多,其根本原因就在于熱點寫入和查詢,想象一個命中幾百萬曲線的查詢落在了一個 InfluxDB 實例上,OOM 幾乎是必然的。大家也可以在 InfluxDB 社區中搜索 OOM,有 400 多個結果“InfluxDB OOM”。

由于這些問題日益突出,我們不得不重新思考時序數據庫的選型。下圖為當時的可觀測系統在 Influxdb 掛掉后,看圖功能的表現:

9462bef8-699d-11ee-939d-92fbcf53809c.png

InfluxDBOOM,看圖功能的表現

2017~2018 Open-Falcon 時代

InfluxDB 單機性能有限,集群方案又不開放。盡管我們對 InfluxDB 按照業務線做了拆分,但仍面臨著單個服務節點曲線量巨大的情況,對于 InfluxDB 來說難以處理。

在經過深入探索和多次試驗后,我們決定采用 Open-Falcon 使用的 RRDtool 存儲方案,在存儲和查詢鏈路,使用相同的一致性哈希算法,將曲線打散到不同的實例中,從而解決了在 InfluxDB 時代因為熱點過高而導致 OOM 的難題。

2018~2020 后 Open-Falcon 時代

直至 2018 年 4月,RRDtool 方案都一直在滴滴運行著。但隨著曲線量的迅速增長,我們又面臨新的問題——成本問題。成本幾乎是每家互聯網公司在發展到一定階段都難以回避的問題。特別是作為非贏利產品的可觀測平臺,成本問題尤為突出。甚至自 2017 年之后的三年里,盡管我們的存儲集群內存使用率曾高達 90% 以上,仍無法獲取新機器的支援。其中一個原因是,我們需要的機器配置過高,甚至連當時配備的 NVMe 磁盤這種頂配機型的 IO 使用率也超過了 90%。預算委員會完全不相信會有一種服務同時對 CPU、內存和 IO 都有如此高的需求。

面對這種困境,我們陷入了兩難境地。一方面是用戶源源不斷的壓力,另一方面是無法滿足存儲所需求機型的要求。

在經過一段時間的思考與調研,我們發現 80% 以上的查詢請求都集中在最新的 2 個小時內。因此,我們嘗試將存儲進行冷熱分層,建設一個新服務來分擔存儲的壓力,正好在這個時候,我們了解到了 Facebook Gorilla 的論文,于是一個名為 Cacheserver 服務應運而生。

Cacheserver 的設計靈感來源于 Facebook Gorilla 論文,旨在與原有存儲服務共同承擔請求,只針對最新 2 小時數據的查詢請求,大大減輕了 RRDtool 服務集群的壓力。這種冷熱分層的架構不僅緩解了存儲成本問題,還提升了整體性能和查詢效率。

9467ca92-699d-11ee-939d-92fbcf53809c.png

Cacheserver 架構

2020 ~ 今 VictoriaMetrics 時代

隨著滴滴容器時代的到來,我們面臨著更加艱巨的情況。

首先,隨著容器覆蓋率的不斷提高,時序曲線量瘋狂增長。而 2020 年隨著容器覆蓋率繼續提升,曲線增長預計會超過 100%。

此外,成本壓力繼續增大。盡管 RRDtool 架構可以橫向擴展,但可觀測自身的成本無法再隨業務增長而線性增長。

當前 RRDtool 架構高需低產,必須使用 SSD/NVMe 機型,使用普通磁盤在落盤時會直接 hang 死。而且功能上也僅支持 sum、avg、max、min 等有限的幾個函數,無法滿足用戶日趨豐富的需求。

為節省存儲空間,當時僅保留 2 小時原始數據。而用戶需要更長時間(例如 15天)的原始數據進行查看和分析,然而,更改降采策略會帶來 2 個問題:一是 RRDtool 的降采修改會導致所有數據丟失。二是存儲 15 天的原始點會使每條曲線存儲空間變為原來的 8.5 倍(120KB → 1MB)。

因此從 2020 年初開始,我們開始著手調研新的方案。需要更高效、靈活的存儲架構以應對以上種種問題。

有哪些備選方案?

在選擇新的存儲方案時,我們考慮了多個備選方案,包括:

Druid

Prometheus

Thanos/Cortex

M3

VictoriaMetrics

Druid?

Druid 是滴滴另一套系統 Woater 的時序存儲方案,由大數據團隊運維。然而,我們最終不考慮 Druid,主要原因如下:

模型不滿足:Woater 的存儲模型是預先定義好的 Schema(Dimensions),而我們需要的是動態 Schema,這是 Druid 原生不支持的,雖然大數據團隊表示可以開發支持,但有著諸多條件限制。

成本問題:將現有數據存儲到 Druid 成本將增長 10 倍。

性能問題:Druid 寫入性能還不如 RRDtool,寫入能力較差,因為 Druid 要做 Rollup,而 RRDtool 是直接 Append 數據。

“無用”的 Rollup:Druid 的亮點功能 Rollup,對于我們的場景并不適用,因為絕大部分查詢都是針對原始值而非 Rollup 結果。

Prometheus?

Prometheus 是可觀測領域的事實標準,其存儲模型、DSL 以及生態都吸引著眾多用戶和企業的關注。但在滴滴的場景下,我們也沒有選擇 Prometheus,主要原因在于:

沒有長期存儲:Prometheus 主要專注于對短期數據的存儲和查詢,而我們需要長期保留。

沒有集群方案:Prometheus 無內置的集群方案,要實現橫向擴展,需要依賴第三方架構如 Thanos、Cortex 等,這無疑增加了復雜性。

沒有高可用能力。

盡管針對這些問題,社區提供了一些解決方案,但在滴滴的體量下,這些解決方案都無法滿足我們的生產化需求。

Thanos、Cortex?

Thanos 和 Cortex 可以說是 Prometheus 當時唯二的,集群化和長期存儲方案。它們的設計目標都是要解決如下問題:

Global View:可以跨多個 Prometheus 實例進行查詢以實現全局視圖。

Long Term Storage:實現長期存儲以滿足長期分析和回溯的需求。

High Availability。

這些特性使得 Thanos 和 Cortex 成為 Prometheus 生態中重要的補充。

946f5d16-699d-11ee-939d-92fbcf53809c.png

Thanos 架構

947afe64-699d-11ee-939d-92fbcf53809c.png

Cortex 架構

但 Thanos/Cortex 也存在一些問題:

Cortex 的存儲結構,其內部仍在探索當中,還不夠穩定,Blocks 在當時還處于 Experimental 狀態。

Thanos 和 Cortex 均需要引入對象存儲,可能帶來一些額外的管理成本,性能上也要畫一個問號。

Thanos Remote Read 內存開銷太多,例如當時有人提出如下圖所示的問題:

9496bf14-699d-11ee-939d-92fbcf53809c.png

Thanos 內存問題

缺乏大規模生產環境的洗禮:Thanos 和 Cortex,這兩個看似美好的解決方案,都有他們的硬傷。也缺乏大規模生產環境的實際驗證,可靠性和穩定性可能還需更多的驗證和優化。

Uber M3?

M3 是 Uber 開源的 TSDB 解決方案,盡管有一些優勢,但也存在一些缺點,包括管理成本高(例如引入 etcd)和機器成本沒有優勢(仍需要高配 SSD)。

94a7fcf2-699d-11ee-939d-92fbcf53809c.png

M3 架構

VictoriaMetrics?

94b0e574-699d-11ee-939d-92fbcf53809c.png

Victoriametrics 架構

VictoriaMetrics 是一個性能高、資源要求和運維成本都比較時序數據庫,其主要特色和原理包括:

要求資源低:VictoriaMetrics 可以在普通機型上運行,不需要使用 SSD/NVMe 等高性能硬件。

核心存儲模型:基于 LSM,類似 Clickhouse。它將數據緩沖在內存中,并每秒鐘將其刷寫到磁盤上的分區目錄中。較小的分區會在后臺逐漸合并成更大的分區。

列式存儲:VictoriaMetrics 采用列式存儲,使得讀寫性能非常高,1個CPU核心可以掃描 30M points/s。

寫入速度強:單實例 760K point/s 的寫能力(vs RRDtool 210~260K point/s)。

壓縮:采用改進版 Gorilla 結合通用壓縮算法(Facebook zstd),平均僅需 1.2~1.5 bytes/point,壓縮比達 13%。

集群容易擴展:采用 Share Nothing 設計。擴縮容機器方便。機器損壞時還可以自動 Rerouting。

無降采樣:不降采的設計,使得原始數據得以保留。

兼容 Prometheus:在寫入、寫入方式等都兼容 Prometheues。并針對 PromQL 做了增強(MetricsQL)

亂序時間戳的弱支持。

容量可計算:VictoriaMetrics 的容量是可計算的,我們可以更直觀和方便的預估存儲需求。

94bdc2e4-699d-11ee-939d-92fbcf53809c.png

VictoriaMetrics Capacity Planning

如上所述,因為 VictoriaMetrics 在性能、壓縮率、查詢速度和擴展性等方面表現出色。在綜合考慮了各個方面的需求和考慮后,我們認為 VictoriaMetrics 是適合我們的時序數據存儲方案,能夠滿足我們的需求。

VictoriaMetrics 的問題及解決方案

盡管 VictoriaMetrics 作為時序數據庫解決方案有許多優勢,但也存在一些潛在問題,這里列舉幾點并簡要地給出了我們的解決方案:

資源占用問題:磁盤空間占用量與存儲點數成正比,存儲越多越長的數據,磁盤空間需求越多。為解決這個問題,我們針對不同的業務線,設置了不同的保留時長。

無降采樣:VictoriaMetrics 不支持數據降采樣,即不會自動對數據進行聚合或丟棄,而是保留原始數據。這在某些場景下可能會導致數據存儲需求較高,特別是在存儲長期數據時。不過,由于 VictoriaMetrics 查詢速度快且壓縮率較高,這個問題并沒有對成本和系統性能造成顯著影響。

活躍度有限、不夠主流:相對于其他一些主流的時序存儲方案,當時 VictoriaMetrics 的活躍度可能還不夠高。然而,通過對代碼的深入了解和與作者的多次交流,我們對VictoriaMetrics 的質量和性能表現逐漸建立信心。

多集群 VictoriaMetrics 設計

我們基于 VictoriaMetrics 設計并實現了一個多集群方案,旨在提高系統的可擴展性和可用性。例如下圖我們在 region 1 搭建了多套集群,分別處理不同業務線的數據,隔離了各業務線的資源競爭和影響,也縮小了故障域。多個 region 之間也可以選擇 mixer 來實現跨區域的數據讀取和合并。

94d0376c-699d-11ee-939d-92fbcf53809c.png

VictoriaMetrics 多集群設計

結尾

以上介紹了滴滴可觀測的時序存儲解決方案的發展歷程。希望通過這個分享,能夠為其他團隊和開發者提供一些有益的經驗和啟示,也歡迎一起交流和探討。

限于文章篇幅,無法在這里展開更多。例如 VictoriaMetrics 的容器化部署,故障管理,復制,數據遷移等。這些內容將在后續的文章中為大家介紹,敬請期待!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據庫
    +關注

    關注

    7

    文章

    3848

    瀏覽量

    64687
  • 架構
    +關注

    關注

    1

    文章

    519

    瀏覽量

    25554

原文標題:可觀測平臺如何存儲時序曲線?滴滴實踐全歷程分享

文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    關于 eBPF 安全可觀測性,你需要知道的那些事兒

    安全方面的一些思考和心得,本次分享將從監控和可觀測性、eBPF 安全可觀測性分析、內核安全可觀測性展望三個方面展開。一、eBPF 安全可觀測性的前景展望從下圖可以看到,監控只是
    發表于 09-08 15:31

    基于拓撲分割的網絡可觀測性分析方法

    針對電力網絡可觀測性分析問題,對量測網絡建模、網絡拓撲可觀測性分析理論、不可觀測節點的影響范圍等方面進行了研究,提出了一種基于拓撲分割的網絡可觀測性分析方法,在某42節點系統上對該方法
    發表于 03-06 18:03 ?0次下載
    基于拓撲分割的網絡<b class='flag-5'>可觀測</b>性分析方法

    如何將可觀測性策略與APM工具結合起來

    獲悉IBM Instana被Gartner評選為2022年度應用性能監控(APM)和可觀測性(Observbility)魔力象限的領導者,我與我身邊同事們都與有榮焉。不僅Instana實現了其領先級企業可觀測平臺的愿景,對我們
    的頭像 發表于 07-27 11:19 ?1294次閱讀

    介紹eBPF針對可觀測場景的應用

    隨著eBPF推出,由于具有高性能、高擴展、安全性等優勢,目前已經在網絡、安全、可觀察等領域廣泛應用,同時也誕生了許多優秀的開源項目,如Cilium、Pixie等,而iLogtail 作為阿里內外千萬實例可觀測數據的采集器,eBPF 網絡
    的頭像 發表于 08-11 09:10 ?1651次閱讀

    eBPF安全可觀測性的前景展望

    本次分享將從監控和可觀測性、eBPF安全可觀測性分析、內核安全可觀測性展望三個方面展開。
    的頭像 發表于 08-17 11:27 ?1612次閱讀

    六大頂級、開源的數據可觀測性工具

    企業有很多商業數據可觀測性工具可供選擇。商業工具在可伸縮性、自動化和支持方面具有一些關鍵優勢。然而,數據可觀測性的開源工具允許團隊在沒有前期購買(獲得使用許可)成本的情況下試驗數據可觀察性功能
    的頭像 發表于 12-16 11:29 ?2138次閱讀

    基調聽云攜手道客打造云原生智能可觀測平臺聯合解決方案

    ,帶來了問題的答案。 近日,上海道客網絡科技有限公司(簡稱:「DaoCloud 道客」)攜手北京基調網絡股份有限公司(簡稱:基調聽云)推出云原生智能可觀測平臺聯合解決方案。雙方基于 DaoCloud Enterprise 云操作系統與基調聽云智能可
    的頭像 發表于 03-23 11:02 ?728次閱讀

    華為云應用運維管理平臺獲評中國信通院可觀測性評估先進級

    近日,華為云應用運維管理平臺參與了中國信息通信研究院(以下簡稱“中國信通院”)主辦的“穩保行動”的可觀測平臺能力評估。經過中國信通院的檢驗,華為云應用運維管理平臺滿足云上軟件系統穩定
    的頭像 發表于 07-01 21:16 ?546次閱讀
    華為云應用運維管理<b class='flag-5'>平臺</b>獲評中國信通院<b class='flag-5'>可觀測</b>性評估先進級

    從技術到商業價值:基調聽云智能可觀測平臺能力升級,持續滿足不斷變化的市場需求

    近日,基調聽云榮獲2023數字化創新突破技術獎項,這是對我們在智能可觀測性領域持續創新和技術提升的認可。自基調聽云智能可觀測平臺發布上線以來,我們一直致力于為廣大用戶提供更加智能、穩定、高效的運維
    的頭像 發表于 08-21 16:56 ?499次閱讀

    使用APM無法實現真正可觀測性的原因

    控制理論中的可觀測性是指:系統可以由其外部輸出確定其內部狀態的程度。在復雜 IT 系統中,具備可觀測性是為了讓系統能達到某個預定的穩定性、錯誤率目標。隨著微服務數量的急速膨脹和云原生基礎設施的快速演進,建設可觀測性已經成為了保障
    的頭像 發表于 09-18 10:23 ?1018次閱讀
    使用APM無法實現真正<b class='flag-5'>可觀測</b>性的原因

    什么是多云? 為什么我們需要多云可觀測性 (Observability)?

    什么是多云? 為什么我們需要多云可觀測性 (Observability)?
    的頭像 發表于 10-12 17:12 ?752次閱讀
    什么是多云? 為什么我們需要多云<b class='flag-5'>可觀測</b>性 (Observability)?

    如何構建APISIX基于DeepFlow的統一可觀測性能力呢?

    隨著應用組件的可觀測性逐漸受到重視,Apache APISIX 引入插件機制豐富了可觀測數據源。
    的頭像 發表于 01-18 10:11 ?1122次閱讀
    如何構建APISIX基于DeepFlow的統一<b class='flag-5'>可觀測</b>性能力呢?

    華為云發布可觀測平臺 AOM,以 AI 賦能應用運維可觀測

    9 月 19 日,華為聯接大會 2024 舉辦期間,在“ AI 賦能應用現代化,加速軟件生產力躍升”為主題的論壇上,華為云發布可觀測平臺AOM ,以 AI 賦能應用運維
    的頭像 發表于 10-15 09:54 ?588次閱讀
    華為云發布<b class='flag-5'>全</b>棧<b class='flag-5'>可觀測</b><b class='flag-5'>平臺</b> AOM,以 AI 賦能應用運維<b class='flag-5'>可觀測</b>

    【質量視角】可觀測性背景下的質量保障思路

    目前質量團隊正在積極建設和完善應用監控能力,旨在能及時發現并解決問題,為線上服務穩定性保駕護航。隨著可觀測性概念的逐漸普及,監控的建設也有了新的挑戰和使命。本文將探討在可觀測性背景下,作為一個測試
    的頭像 發表于 10-25 17:21 ?305次閱讀
    【質量視角】<b class='flag-5'>可觀測</b>性背景下的質量保障思路

    華為云可觀測平臺——9 月 10 月新功能特性

    數據等多維度可觀測性數據源,提供應用資源統一管理、一站式可觀測性分析和自動化運維方案,幫助用戶及時發現故障,全面掌握應用、資源及業務的實時運行狀況,提升企業海量運維的自動化能力和效率。 應用運維管理 (Application?Operations?Management,簡
    的頭像 發表于 12-01 16:12 ?448次閱讀
    華為云<b class='flag-5'>全</b>棧<b class='flag-5'>可觀測</b><b class='flag-5'>平臺</b>——9 月 10 月新功能特性
    澳门1百家乐官网网| 喜力百家乐官网的玩法技巧和规则 | 风水24山子怎么读| 百家乐开户送10彩金| 德州扑克 玩法| 最好的百家乐官网游戏平台1| 诚信百家乐在线平台| 瑞丰| 互博百家乐官网的玩法技巧和规则 | 百家乐视频游戏掉线| 易胜博投注| 博彩百家乐官网后一预测软件| 基础百家乐规则| 百家乐官网玩法和技巧| 百家乐电脑游戏高手| 大发888线上娱乐21点| 百家乐官网千术道具| 澳门百家乐娱乐城网址| 百家乐赌博机| 百家乐技术交流群| 盈丰娱乐| 请问下百家乐官网去哪个娱乐城玩最好呢| 郑州太阳城宾馆| 百家乐官网技巧公司| 威尼斯人娱乐场内幕| 百家乐官网电子路单谁| 大发888娱乐城下载英皇国际| 网络百家乐官网电脑| 大发888站群| 2024年九运| 皇冠网络刷qb软件| 百家乐娱乐天上人间| 颍上县| 电脑百家乐玩| 菲律百家乐官网太阳城| 百家乐官网视频二人麻将| 网络百家乐怎么作弊| 网上百家乐官网洗码技巧| 澳门百家乐游戏官网| 网上赌百家乐官网的玩法技巧和规则 | 洛宁县|