當前位置:
首頁 > 科技 > 秒殺Redis的KVS上雲了!伯克利重磅開源Anna 1.0

秒殺Redis的KVS上雲了!伯克利重磅開源Anna 1.0

策劃編輯 | Natalie

作者 | Anna 研究團隊

譯者 | 無明

編輯 | Natalie

今年 3 月份,伯克利 RISE 實驗室推出了最新的鍵值存儲資料庫 Anna,提供了驚人的存取速度、超強的伸縮性和史無前例的一致性保證。Anna 一經推出即在業界引發熱烈討論,不少讀者關心它何時開源、後續有什麼新的進展。過去這半年裡,伯克利 RISE 實驗室對 Anna 的設計進行了重大變更,新版本的 Anna 能夠更好地在雲端擴展。實驗表明,無論是在性能還是成本效益方面,Anna 都表現突出,明顯優於 AWS ElastiCache 的 memcached 以及較早之前的 Masstree,也比 AWS DynamoDB 更具成本優勢。與此同時,Anna 所有源碼也正式登陸 Github,開放給所有開發者。

背 景

在之前的一篇博文中,我們介紹了 Anna 系統,它使用了一個核心對應一個線程的無共享線程架構,通過避免線程間的協調來實現閃電般的速度。Anna 還使用晶格組合來實現多樣的無協調一致性級別。第一個版本的 Anna 吊打現有的內存 KV 存儲系統:它的性能優於 Masstree 700 倍,優於 TBB 800 倍。你可以重溫之前的博文 ,或者閱讀完整的論文。我們將第一個 Anna 版本稱為「Anna v0」。在這篇文章中,我們介紹如何將這個最快的 KV 存儲系統變得極具成本效益和適應性。

(https://databeta.wordpress.com/2018/03/09/anna-kvs/ )

(http://db.cs.berkeley.edu/jmh/papers/anna_ieee18.pdf )

現如今,公共基礎設施雲用戶可選擇的存儲系統真是太多了。AWS 提供兩種對象存儲服務(S3 和 Glacier)和兩種文件系統服務( EBS 和 EFS),另外還有七種不同的資料庫服務,從關係資料庫到 NoSQL 鍵值存儲。真是花樣繁多,令人眼花繚亂,用戶自然會問,哪個服務才適合他們。最直接(然而並不樂觀)的答案是,把它們全都用起來就對了。

這些存儲服務都提供了非常有限的成本與性能之間的權衡。例如,AWS ElastiCache 速度很快,但很貴,而 AWS Glacier 雖然便宜,但速度較慢。因此,用戶門面對一個窘境:他們必須要麼放棄節約成本的目標,大規模部署高性能存儲集群,要麼放棄性能,利用低成本的系統例如 DynamoDB 或者 S3。

更糟糕的是,大多數實際應用展現出偏斜的數據訪問模式。頻繁被訪問的數據是「熱」數據,其他則為「冷」數據,而這些服務要麼是專門為「熱數據」而設計,要麼專門為「冷數據」而設計。因此,不想在性能或成本上妥協的用戶必須手動將這些解決方案拼湊在一起,跟蹤服務間的數據和請求,以及管理不同的 API,並做出一致性保證。

更糟糕的是,高性能的雲存儲產品不具備彈性:向集群添加資源或從集群中移除資源都需要人工干預。這意味著雲開發者們設計並實現自定義解決方案來監控工作負載變化、修改資源分配以及在存儲引擎之間移動數據。

這是非常糟糕的。應用程序開發人員不斷被迫重新發明輪子,而不是把精力放在他們最關心的指標上:性能和成本。我們想要改變這種現狀。

Anna v1

我們藉助 Anna v0 這個內存存儲引擎來解決上述的雲存儲問題。我們的目標是將最快的 Anna 同時發展成為最具適應性和成本效益的 KV 存儲系統。我們向 Anna 中添加了 3 個關鍵的機制:垂直分層、水平彈性和選擇性複製。

Anna v1 的核心組件是監控系統和策略引擎,可實現工作負載的響應性和適應性。為了滿足用戶定義的性能目標( 請求延遲)和成本,監控服務對工作負載變化進行監控和調整。存儲伺服器會收集請求和數據的統計信息。監視系統定期搜索和處理這些數據,策略引擎基於這些統計信息執行上述的三個操作。操作的觸發規則很簡單:

彈性:為了讓系統適應變化的工作負載,系統需要能夠根據工作量自動擴展和收縮。當一個層達到計算或存儲容量最大值時添加節點,當某個節點明顯得不到未充分利用時將其移除。

選擇性複製:在實際工作環境下,訪問量很大的 key 需要被廣泛的複製到多個節點和 CPU 核從而提高性能。Anna v0 啟用了 key 的多主複製,但在複製所有 key 時提供了一個固定的複製因子。正如讀者們想像的,這是一個成本很大的設計。在 Anna v1 中,監控服務僅選擇性的複製訪問次數高的「熱」key 而不複製「冷」key,從而減小存儲成本。

升級和降級:與傳統的內存層次結構中一樣,熱數據應該保存在更快的存儲介質中提高訪問效率,冷數據應該保存在較慢的存儲介質中節約成本。我們的監測服務會根據數據的熱度變化自動將它們移至合適的存儲介質。

為了實現這些機制,我們不得不對 Anna 的設計做出兩個重大變更。

首先,我們讓存儲引擎支持多種存儲介質——目前是內存和快閃記憶體。與傳統的存儲層次結構類似,這些存儲層的成本與性能權衡是不一樣的。我們還實現了一個路由服務,它將用戶請求發送到目標層的伺服器上。無論數據存儲在什麼地方,都可以為用戶提供統一的 API。這些層都從第一版 Anna 繼承了同等豐富的一致性模型,因此開發者可以靈活挑選並自定義合適的一致性模型。

我們的實驗表明,無論是在性能還是成本效益方面,Anna 都達到了令人印象深刻的水平。在同一成本下,Anna 提供優於 AWS ElastiCache 8 倍的吞吐量和優於 DynamoDB 355 倍的吞吐量。Anna 還能夠通過添加節點和恰到好處的數據複製來應對工作負載的變化:

這篇文章只提供了 Anna 的設計概述,如果你有興趣了解更多,可以在下面的鏈接中找到完整的論文和代碼和這裡找到完整的論文和代碼。這個項目的進展讓我們很滿意,我們也很樂意收到大家的反饋。後續,我們會有更多的計劃,將 Anna 的高性能和靈活性拓展到其他的系統中,敬請關注!

完整論文:

https://arxiv.org/pdf/1809.00089.pdf

開源代碼:

https://github.com/fluent-project/fluent/tree/master/kvs

關於伯克利 RISELab

RISE 實驗室的前身是赫赫有名的伯克利 AMP 實驗室,該實驗室曾開發出了一大批大獲成功的分散式技術,這些技術對高性能計算產生了深遠的影響,包括 Spark、Mesos、Tachyon 等。RISE 實驗室目前主要關注提供實時智能且安全可解釋的決策的系統。實驗室核心教員包括 Ion Stoica、Joe Hellerstein、Michael I. Jordan、Dave Patterson 等多位大牛。

過去幾年,RISE 實驗室把研究重點放在如何設計一個無需協調的分散式系統上。他們提出了 CALM 基礎理論,設計出了新編程語言 Bloom,開發出了跨平台程序分析框架 Blazes,發布了事務協議 HATs,並推出了志在取代 Spark 的新型分散式執行框架 Ray。

https://rise.cs.berkeley.edu/blog/going-fast-and-cheap-how-we-made-anna-autoscale/


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

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


請您繼續閱讀更多來自 InfoQ 的精彩文章:

面對快速迭代的技術變化,開發者要如何才能跟上?
外媒曝光用「人工」達成「智能」:AI才不僅僅是你們想到的那些應用場景

TAG:InfoQ |