Uber 不使用 Elasticsearch,自己造了個輪子

大家好,我是歐盆索思(opensource),每天為你帶來優秀的開源項目!

昨天推薦了一個 Uber 的開源項目 Kraken,今天推薦它的另一個開源項目,也是 Go 語言實現的。

項目名稱:AresDB,地址:https://github.com/uber/aresdb,Star 數:2.5k+。

這是一個由 GPU 驅動的實時分析存儲和查詢引擎。為什麼開發 AresDB?Uber 在官方博客上給出瞭解答:https://eng.uber.com/aresdb/

官方的說法

在 Uber,實時分析使我們能夠獲得業務情況和運營效率,使我們能夠做出以數據為依據的決策,以改善在 Uber 平臺上的體驗。例如,我們的運營團隊依靠數據來監控市場健康狀況並在我們的平臺上發現潛在問題;由機器學習模型提供支持的軟件利用數據來預測騎手供應和司機需求;數據科學家使用數據來改進機器學習模型,以更好地進行預測。

過去,我們利用許多第三方數據庫解決方案進行實時分析,但沒有一個能夠同時滿足我們所有的功能,可伸縮性,性能,成本和運營要求。

AresDB 於 2018 年 11 月發佈,是一個開源的實時分析引擎,它利用非常規電源,圖形處理單元(GPU)來使我們的分析規模化增長。GPU 技術是實時分析的新興工具,多年來發展顯著,使其非常適合並行進行實時計算和數據處理。

Uber 實時分析解決的最常見問題是如何計算時間序列彙總,這些計算使我們能夠洞悉用戶體驗,從而可以相應地改善服務。通過這些計算,我們可以在任意過濾(或有時加入)的數據範圍內,按特定維度(例如,日期,小時,城市 ID 和旅行狀態)請求度量。多年來,Uber 部署了多種解決方案以不同方式解決此問題。

我們用於解決此類問題的第三方解決方案包括:Apache Pinot 和 Elasticsearch。

儘管這些技術各有千秋,但它們對於我們的用例卻缺乏關鍵的功能。我們需要一個統一,簡化和優化的解決方案,並且要開箱即用(或者更確切地說是在 GPU 內)。

(哈哈哈,是不是再次證明,自己的輪子又大又圓?)

要求

該項目使用瞭如下技術:

  • golang 1.11+
  • C++ compiler that support c++14
  • cmake 3.12+
  • nvcc version 9.1

該項目的查詢引擎使用 C++ 實現的,而內存存儲,磁盤存儲和其他查詢組件使用 Go 實現的。因此這是一個多語言項目。同時因為涉及到 GPU 等技術,因此搞定這個項目需要一定的實力。

最後放一張架構圖:

Uber 不使用 Elasticsearch,自己造了個輪子


分享到:


相關文章: