當前位置:
首頁 > 知識 > 資料庫新兵:分散式實時分析內存資料庫eSight

資料庫新兵:分散式實時分析內存資料庫eSight

近幾年,中國資料庫的發展迎來了一波小高潮,不僅傳統資料庫廠商在投入力量,以技術為驅動的互聯網企業也在積極投入。在第七屆TOP100全球軟體案例研究峰會上,筆者發現了一個新面孔——來自餓了么的分散式實時分析內存資料庫eSight。

資料庫新兵:分散式實時分析內存資料庫eSight

打開今日頭條,查看更多圖片

陳永庭 ,餓了么高級架構師。10+年軟體研發經驗,曾先後就職於WebEx、Cisco、騰訊公司,現就職於餓了么,先後負責餓了么多活架構方案設計、DRC中間件研發、eSight分散式資料庫研發、IDC容量評估和服務容量彈性伸縮工作。在高吞吐、高可靠性服務架構、海量數據存儲等方面具備豐富的經驗。

項目背景

一般來說,一個新產品的誕生必定伴隨著業務或技術的瓶頸,eSight的誕生也不例外。以一個很小的場景為例,假設一個外賣平台在通常情況下日訂單是超過一千萬,但是某一天突然訂單數量下降了。那麼,老闆就一定會去問產品人員、運營人員或者是數據分析師,「為什麼會訂單下降了?」但是在這樣的數據級別下,員工很難快速實時的對數據做出診斷,並定位到出現問題的原因。

面對這樣的場景,餓了么也很困惑。之前,餓了么內部有一個專門的大數據部門負責這一場景,但是實時性遠遠達不到要求,很多數據需要T+1的時間或者幾個小時的延遲時間才能看到結果,往往會失去最佳的處理時間。

為了彌補當前大數據平台不能滿足實時數據分析的場景,陳永庭及其團隊在2017年8月份開始調研新技術,調研過程中發現Facebook有三大典型的大數據存儲分析場景,分別為ODS、Scuba和Hive,其中Scuba paper很具有參考意義,eSight也正是站在Scuba paper的肩膀上誕生的。

據陳永庭介紹,eSight的研發團隊大概是三到四個人,從調研到Beta版本上線只花了5個月時間。

架構設計與功能特點

資料庫新兵:分散式實時分析內存資料庫eSight

eSight的架構設計如上圖所示, 支持MySQL command和HTTP query,其中所有計算節點都聚合成aggregator tree並行計算,存儲節點可在單個伺服器或並行計算中同時啟動N個節點,且存儲節點也可以支持少量的計算,單機支持超過百萬的TPS。

eSight的關鍵設計和亮點功能主要集中在以下幾個方面:面向列的設計、極致的查詢響應、並行計算、矢量化查詢處理、數據編碼與數據壓縮、cross IDC、數據持久化、數據恢復與數據副本以及SQL查詢。除此之外,eSight還弱化了以下功能,limited update、limited data availability和limited data replicas,完全摒棄了transaction、able join、delete和advanced standard SQL query功能。

性能測試

立項之初,餓了么在國內並沒有找到非常匹配自己使用場景的、已公開的技術產品,但是產品上線之後,餓了么發現了俄羅斯最大的搜索公司發布過一款類似產品——ClickHouse。

ClickHouse和eSight雖然功能類似,但是在架構設計和部署方式等方面有所不同,所以為了更詳細的對比兩款產品,餓了么做了性能測試。其中,ClickHouse的性能數據來自官方公開的數據,所以測試結果只做參考。

資料庫新兵:分散式實時分析內存資料庫eSight

與其它PB級產品不同,eSight和ClickHouse適用的場景不需要存儲這麼多的數據,但是性能要求很高,可能要是類似於Hive這樣產品的好幾個數量級。從上圖來看,我們可以發現eSight和ClickHouse的性能總體是在一個數量級上的,但是各自都有擅長的領域。

在首次查詢,eSight的性能明顯要更好,因為eSight是純內存的,而ClickHouse首次查詢會涉及到磁碟數據的讀寫;在某些特殊場景下,尤其是數據量級別特別小(百萬級別)的時候,ClickHouse因為做了極致的內存優化,性能表現極其突出,而eSight因為是分散式的設計,測試環境又是多機房,所以百萬級數據量和億級數據量,性能差距不大。

何時eSight的性能表現最為突出呢?陳永庭表示當數據容量在100G到500G的範圍內,數據量不低於10億條記錄時,整個eSight集群的查詢性能和低延時都表現得很好,99%的查詢請求會在10秒之內返回結果。

未來計劃

任何產品都不是一蹴而就的,而是不斷經過演進的,陳永庭也透露了一些eSight未來的計劃。

目前,eSight服務於餓了么整個機房,所以計算節點未來要適配於容器化部署,存儲節點也要考慮使用用分散式的存儲文件系統來做整個存儲的載體。在性能方面也會做相應的優化,例如有些集群比較小,可能只有10台機器,如果用戶查詢的數據量非常大,那麼就極有可能導致節點負載很高,出現內存被打滿或者導致整個進程退出等情況。造成這種情況的原因有很多,一方面是查詢的數據量確實很大導致整個節點無法滿足查詢要求,針對此餓了么會做了一些保護。另一方面,eSight的技術設計方面可能還不夠細膩,類似於對象在內存中的分配、對象的大小等等都還需要做一個非常極致的精簡化設計。

對於未來的發展推廣規劃,陳永庭也有自己的看法,首先eSight是一個分散式資料庫產品,資料庫產品最有價值的地方就是裡面存放的數據,其次就是作為工具產品的穩定性,各個技術指標要達到可靠性的預期。所以,接下來eSight團隊的重點會落在接入更多核心業務數據,並且在數據積累的基礎上,建立各種數據應用場景的玩法。

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

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


請您繼續閱讀更多來自 IT168企業級 的精彩文章:

Gartner發布:2019年十大戰略技術發展趨勢
關於SQL開發規範中的那些誤區!

TAG:IT168企業級 |