當前位置:
首頁 > 最新 > 每秒聚合5億個指標 Uber開源大規模指標平台M3

每秒聚合5億個指標 Uber開源大規模指標平台M3

Uber 近日開源了已在內部使用多年的指標平台 —— M3 ,這是一個基於分散式時序資料庫 M3DB 構建的度量平台,可每秒聚合 5 億個指標,並且以每秒 2000 萬筆的速度持續存儲這些結果。Uber 表示,為促進在全球的運營發展,他們需要能夠在任何特定時間快速存儲和訪問後端系統上的數十億個指標。

一直到 2014 年底,Uber 的所有服務、基礎設施和伺服器都是將指標發送到基於 Graphite 的系統中,該系統將這些資料以 Whisper 檔案格式儲存到分片 Carbon 叢集。此外,還將 Grafana 用於儀錶板,Nagios 用於告警,並通過來源控制腳本發出 Graphite 閾值檢查。但由於擴展 Carbon 集群需要手動重新分片的過程,並且由於缺乏副本,任何單一節點的磁碟故障都會導致其相關指標的永久性丟失。簡而言之,隨著公司的不斷發展,這種解決方案無法再滿足其需求。

在評估現有的解決方案後,Uber 沒有找到能夠滿足其資源效率或規模目標,並能夠作為自助服務平台運行的開源替代方案。因此在 2015 年,M3 誕生。起初,M3 幾乎全部採用完全開源的組件來完成基本角色,像是用於聚合的 statsite ,用於時序存儲具備 Date Tiered Compaction Strategy 的Cassandra ,以及用於索引的 ElasticSearch 。基於運營負擔,成本效率和不斷增長的功能集考慮,M3 逐漸形成自己的組件,功能也超越原本使用的方案。

M3 目前擁有超過 66 億條時序數據,每秒聚合5億個指標,並在全球範圍內每秒持續存儲 2000 萬個指標(使用 M3DB),批量寫入將每個指標持久保存到不同區域的三個副本中。它還允許工程師編寫度量策略,以不同的時間長度和不同粒度對資料進行保存。這使得工程師和數據科學家能以不同的留存規則,精細和智能地存儲有不同保留需求的時序數據。

在 Uber,由於很多團隊在廣泛使用 Prometheus ,如何很好地搭配使用是很重要的事。通過一個 sidecar 組件 M3 Coordinator ,M3 集成了 Prometheus 。該組件會向本地區域的 M3DB 實例寫入數據,並將查詢擴展至「區域間協調器」(inter-regional coordinator)。

基於 Uber 日益增長的度量存儲工作負載的經驗,M3 具備以下特性:

優化指標管道的每個部分,為工程師提供儘可能多的存儲空間,以實現最少的硬體支出成本。

通過自定義壓縮演算法 M3TSZ 確保數據儘可能高度壓縮以減少硬體佔用空間。

由於多數數據資料為「一次寫入,永不讀取」,盡量保持精簡的內存佔用空間以避免內存成為瓶頸。

儘可能避免壓縮整理,通過縮小採樣,以增加主機資源的利用率,從而實現更多並發寫入,並提供穩定的寫入/讀取延遲。

時序數據採用本地存儲,無需時刻警惕高寫入量操作。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 三體科技 的精彩文章:

六問全球智能機行業:為何增長停滯 還能復甦嗎?

TAG:三體科技 |