好吧,Uber 不使用 Elasticsearch,自己用 Go 造了個輪子
之前推薦了一個 Uber 的開源項目 Kraken,今天推薦它的另一個開源項目,也是 Go 語言實現(xiàn)的。
項目名稱:AresDB,地址:https://github.com/uber/aresdb,Star 數(shù):2.5k+。
這是一個由 GPU 驅(qū)動的實時分析存儲和查詢引擎。為什么開發(fā) AresDB?Uber 在官方博客上給出了解答:https://eng.uber.com/aresdb/
官方的說法
在 Uber,實時分析使我們能夠獲得業(yè)務(wù)情況和運(yùn)營效率,使我們能夠做出以數(shù)據(jù)為依據(jù)的決策,以改善在 Uber 平臺上的體驗。例如,我們的運(yùn)營團(tuán)隊依靠數(shù)據(jù)來監(jiān)控市場健康狀況并在我們的平臺上發(fā)現(xiàn)潛在問題;由機(jī)器學(xué)習(xí)模型提供支持的軟件利用數(shù)據(jù)來預(yù)測騎手供應(yīng)和司機(jī)需求;數(shù)據(jù)科學(xué)家使用數(shù)據(jù)來改進(jìn)機(jī)器學(xué)習(xí)模型,以更好地進(jìn)行預(yù)測。
過去,我們利用許多第三方數(shù)據(jù)庫解決方案進(jìn)行實時分析,但沒有一個能夠同時滿足我們所有的功能,可伸縮性,性能,成本和運(yùn)營要求。
AresDB 于 2018 年 11 月發(fā)布,是一個開源的實時分析引擎,它利用非常規(guī)電源,圖形處理單元(GPU)來使我們的分析規(guī)?;鲩L。GPU 技術(shù)是實時分析的新興工具,多年來發(fā)展顯著,使其非常適合并行進(jìn)行實時計算和數(shù)據(jù)處理。
Uber 實時分析解決的最常見問題是如何計算時間序列匯總,這些計算使我們能夠洞悉用戶體驗,從而可以相應(yīng)地改善服務(wù)。通過這些計算,我們可以在任意過濾(或有時加入)的數(shù)據(jù)范圍內(nèi),按特定維度(例如,日期,小時,城市 ID 和旅行狀態(tài))請求度量。多年來,Uber 部署了多種解決方案以不同方式解決此問題。
我們用于解決此類問題的第三方解決方案包括:Apache Pinot 和 Elasticsearch。
盡管這些技術(shù)各有千秋,但它們對于我們的用例卻缺乏關(guān)鍵的功能。我們需要一個統(tǒng)一,簡化和優(yōu)化的解決方案,并且要開箱即用(或者更確切地說是在 GPU 內(nèi))。
(哈哈哈,是不是再次證明,自己的輪子又大又圓?)
要求
該項目使用了如下技術(shù):
golang 1.11+ C++ compiler that support c++14 cmake 3.12+ nvcc version 9.1
該項目的查詢引擎使用 C++ 實現(xiàn)的,而內(nèi)存存儲,磁盤存儲和其他查詢組件使用 Go 實現(xiàn)的。因此這是一個多語言項目。同時因為涉及到 GPU 等技術(shù),因此搞定這個項目需要一定的實力。
最后放一張架構(gòu)圖:

文末「閱讀原文」可直達(dá)項目首頁。
今天的項目大家覺得怎么樣嗎?如果你喜歡,請在文章底部留言、點(diǎn)贊或關(guān)注轉(zhuǎn)發(fā),你的支持就是我持續(xù)更新的最大動力!
推薦閱讀
