資料庫新兵:分散式實時分析記憶體資料庫eSight

資料庫頻道發表於2018-12-17

近幾年,中國資料庫的發展迎來了一波小高潮,不僅傳統資料庫廠商在投入力量,以技術為驅動的網際網路企業也在積極投入。在第七屆TOP100全球軟體案例研究峰會上,筆者發現了一個新面孔——來自餓了麼的分散式實時分析記憶體資料庫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的架構設計如上圖所示, 支援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的效能資料來自官方公開的資料,所以測試結果只做參考。

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

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

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

未來計劃

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

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

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

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31545814/viewspace-2285405/,如需轉載,請註明出處,否則將追究法律責任。

相關文章