大規模存儲的未來——記憶體雲

來源:互聯網
上載者:User
電腦系統中最快的存儲方式是傳統上主要用作記憶體的RAM。 由於硬碟的訪問性能多年來有惡化的趨勢,而RAM的成本不斷降低,近年來,有很多研究者都在探索如何用記憶體取代硬碟。

早在1980年代,David DeWitt等和Garcia-Molina等就發表過主存資料庫方面的論文。 Steven Robbins的文章指出,圖靈獎得主Jim Gray更明確提出了「記憶體將成為硬碟,硬碟將成為磁帶」的說法(出自2006年Tim Bray一篇討論網格計算的博客,2003年的訪談中他已經表達了同樣的意思)。 IMDG(記憶體資料網格)曾經是一種非常流行的概念。 在實踐中,Google和Yahoo等搜尋引擎已經完全將索引放在DRAM中,Google甚至把互聯網中所有網頁的快照都保存在記憶體裡。 memcached和BigTable也是利用記憶體作為重要存儲介質的實際案例。 2008年Dare Obsanjo在分析Twitter的架構時也看到,類似的新型應用的最大負擔是硬碟I/O,因此會傾向于將隨機操作都放到RAM裡,只將順序操作留給硬碟。

Tcl/Tk的創始人、美國工程院院士、ACM Fellow John Ousterhout 2008年離開工業界到斯坦福大學任教,在Facebook、Mellanox、NEC、NetApp、SAP的支援下, 領導一個團隊從事RAMCloud——記憶體雲方面的研究,更是將這一趨勢推到了極致。 顧名思義,RAMCloud就是這樣一種新型資料中心存儲系統,它是由成千上萬台普通伺服器的主存所組成的大規模系統,任何時候、所有資訊都存儲在這些快速的DRAM(動態隨機訪問儲存體,即俗稱的記憶體)中, 記憶體取代了傳統系統中的硬碟,而硬碟只作為備份使用。

2009年底Ousterhout團隊曾經在SIGOPS Operating Systems Review發表了論文「The Case for RAMCloud」,引起了廣泛關注。 最新出版的Communications of ACM 2011年8月刊發表了Ousterhout與他的團隊合作撰寫的同名論文,更加全面和完整地闡述了記憶體雲的理論與實踐。

文章指出,在過去四十年,電腦系統的主要存儲方式是硬碟,檔案系統和關聯式資料庫都是針對硬碟發展起來的。 但是,雖然硬碟的容量提高很快(自1980年代中期以來提高超過1000倍),但性能相比之下卻一直難如人意,傳輸速率僅提高50倍,延遲更是只提高了2倍。 如果按容量/頻寬(Jim Gray's Rule)來衡量,硬碟的訪問延遲實際上急劇惡化了,如下圖(本文中圖均來自CACM論文)。

與此同時,互聯網的迅猛發展,使軟體的架構也發生了巨大變化。 如下圖所示,與傳統應用資料和計算、應用邏輯都在一台電腦上不同,Web應用架構往往採用計算與存儲分離的方式,在資料中心中有專門負責應用的業務邏輯、前端呈現的應用伺服器,另外還有專門的存儲伺服器。 其中應用伺服器是無狀態的,只存儲當前瀏覽器請求的狀態。 這種分離和無狀態的方式使系統能夠很好地擴展到成百上千台伺服器,滿足動輒數百萬使用者的訪問需求。 但是,這種架構也使資料訪問的延遲問題加劇了——大型網站如Facebook或Amazon為了生成一個HTML頁面,需要發出一兩百次內部請求,訪問多次硬碟。 當伺服器增加了4-5個數量級後,應用程式的複雜性也大大增加,軟體發展難度和工作量都激增。

於是,硬碟存取速度成為目前電腦系統發展的主要瓶頸。

為了解決資料訪問延遲問題,研發人員和研究者們提出了各種解決方案:用memcached等緩存(Cache),資料庫的分區,更多地用快閃記憶體替代硬碟,SSD,採用MapReduce和Hadoop等非同步作業調度,NoSQL, 分散式檔案系統等等。

而Ousterhout團隊則提出了一種新的解決方案——RAMCloud(記憶體雲),通過大規模普通伺服器的記憶體集群,將線上資料的主要存儲中心從硬碟遷移到DRAM上,而硬碟只作為備份/歸檔之用。 這種記憶體雲可以同時實現大規模(100~1000 TB)和低延遲(同一資料中心應用程式訪問少量記憶體雲資料只需5~10ms,比目前系統快100~1000倍)。

RAMCloud概述

論文中指出,RAMCloud最適合的場景是已經將伺服器分為應用伺服器(主要實現生成網頁和執行商務規則等應用邏輯)和存儲伺服器(為應用伺服器提供長期共用存儲)的資料中心。 這些資料中心一般支援許多應用,有的很小,只使用一台伺服器的一部分能力,有的很大,要用到數千台專用應用和存儲伺服器。

RAMCloud與其他存儲系統有兩點不同:

所有資訊任何時候都保存在DRAM中,不是memcached那樣的緩存,也不使用快閃記憶體那樣的I/O設備; 必須能夠自動調整到數千台存儲伺服器,而存儲伺服器的數量對於應用而言是透明的,在開發人員看來,好像就是一個存儲系統。

而且,記憶體雲中保存的資訊必須和硬碟一樣持久,單個存儲伺服器的故障不能造成資料丟失和哪怕幾秒鐘的服務不可用。

RAMCloud將所有資料存放在DRAM中,性能可以達到比目前最高性能的硬碟存儲系統還要高100~1000倍。 在訪問延遲方面,RAMCloud方案中運行在應用伺服器中的一個進程從同一資料中心的存儲伺服器中通過網路讀取數百位元組資料只需5~10μs, 而目前實際系統一般要花費0.5~10ms,具體取決於資料是在伺服器記憶體緩存中,還是硬碟中。 而且,一台多核存儲伺服器每秒可以服務至少100萬次小讀取請求。 而硬碟系統中同樣的機器每秒只能服務1000~10000次請求。

RAMCloud的實用性

全面採用記憶體作為主存儲介質,一個常見的問題當然是成本。 論文中對此作出了說明。 下表中列出了一個RAMCloud配置,2000台伺服器,每台伺服器配置24GB的DRAM,整個記憶體雲的容量可以達到48TB,按2010年的價格計算,平均每GB成本是65美元。 通過增加伺服器數量,總容量可以高達數百TB。 而到2020年,隨著DRAM技術的不斷完善,價格不斷降低,記憶體雲容量可能達到1~10PB,而每GB成本僅需6美元。

RAMCloud已經可以用於許多實際應用。 下表估計了一個大型的網路零售商和大型機票訂票系統如果採用RAMCloud的成本,在幾萬到幾十萬美元之間。 而截止2009年8月,Facebook所有非圖像資料大約有260TB,這可能是目前RAMCloud實際應用的上限。 記憶體雲目前還無法用來存儲視頻、照片、歌曲等資料,但情況在幾年之內有望很快改變。

與其他方案的比較

目前為了解決大規模互聯網應用系統的資料訪問延遲瓶頸,已經提出了很多方案,但這些方案各有各的問題。 論文中對此進行了概述。

1.MapReduce

MapReduce將應用組織成多個並行步驟,資料分成多個大塊順序讀取,有效地解決了許多大規模問題,因此近年來變得非常流行。 但是MapReduce難以應用於必須隨機訪問資料的應用。 事實上,Google除MapReduce之外還有一種專門用於圖處理的架構,稱為Pregel。 另外透露一下,Pregel專案的創始人G.Malewicz將出席今年的Hadoop in China大會。

而RAMCloud由於同時具備可伸縮性和低延遲,基本上沒有這樣的局限。 相反,大規模集體協作型的應用、統計語言翻譯這樣需要遍歷圖模型的應用很可能是記憶體雲的最佳用武之地。

2.NoSQL

NoSQL的興起主要是因為互聯網站達到了前所未有的規模,用常規關聯式資料庫無法應對。 但各種NoSQL方案總體上都無法達到關聯式資料庫的那種通用性,而且,它們仍然受硬碟存儲性能的限制。

RAMCloud的目的是提供可伸縮性遠遠超過已有方案的統一存儲系統,大大簡化開發,不僅適於新應用,也可以為已有應用進行擴展,甚至無需重組應用代碼。

3.Caching

在理想情況下,Caching(緩存)可以為系統帶來DRAM級的讀寫性能。 但是,緩存的問題在於,未命中的資料仍然保存在硬碟上,因此很小的失效率也會帶來很大的性能損失。 而且,越來越多應用生成的資料之間有更複雜的聯繫(比如Facebook、微博中朋友或者關注關係),很難局部化,造成Cache越來越大。 以Facebook為例,2009年8月時近25%的所有線上資料保存在memcached伺服器中,如果加上資料庫伺服器中的緩存,實際上已經有近75%的資料在記憶體中。

顯然,RAMCloud與緩存相比只需要增加少量成本(Facebook的例子裡增加四分之一記憶體),卻能避免訪問模式和局部性問題。

4. 快閃記憶體

RAMCloud其實可以用快閃記憶體搭建,成本和能耗更低。 但延遲和輸送量上與DRAM仍有差距。 即使是成本方面,高查詢率和小資料集的情況下,DRAM是成本最低的;低查詢率和大資料集的情況下,硬碟成本最低;而快閃記憶體處於中間。

未來快閃記憶體在延遲上可能趕上DRAM,相變記憶體等新技術也可能比DRAM更有優勢,但現在基於DRAM研發的好處是沒有不確定性,現有方案(複製機制、群集管理和延遲的系統方法)對未來其他技術仍然可以沿用。

RAMCloud面臨的挑戰

低延遲RPC:大多數目前的網路設計都是犧牲延遲保輸送量。 雖然已經有Infiniband、Myrinet、Arista 7100S等高速網路設備,但普通資料中心還是基於乙太網/TCP/IP的,要達到5~10μs延遲(Ousterhout最初設想RPC能達到1μs,看來有相當難度) ,必須解決軟硬體的諸多問題。

持久性和可用性:DRAM屬於易失性存儲,要達到至少和硬碟相當的持久性和可用性當然至關重要。 一台伺服器的故障、資料中心的系統性斷電等都不能導致資料丟失和服務中斷。 容易想到的解決方法是在不同伺服器的DRAM裡保存多個副本,但成本太高,而且資料中心全部斷電的話,資料仍然會丟失。 備份在伺服器上如何呢? 但是寫操作時如果要同步更新硬碟,延遲就太大,喪失了記憶體雲的優勢。 為此,Ousterhout等提出了「緩衝日誌」(buffered logging)的思路。 其原理如下圖所示。

群集管理:但資料表很大的時候,RAMCloud軟體必須能夠透明地在多個伺服器上進行自動分區,且不影響運行中的應用。 為保證系統的輸送量,儘量減少複製,只在維護資料持久性和可用性必需時才進行複製。

多租戶:為支援雲計算的多租戶模式,記憶體雲需要支援各種規模的應用,並提供相應的計費方式。 而且,需要為不同使用者提供存取控制和安全機制。 另外,高負荷的應用不能影響其他應用的性能。

資料模型:關聯式資料庫與生俱來的開銷較大,與記憶體雲的低延遲不相容。 記憶體雲可能需要具有ACID特性的K-V存儲。

併發、事務與一致性:記憶體雲應該提供何種程度的事務性,這是一個問題。 但記憶體雲的高速更新,可以明顯緩解事務衝突,而且能在較大規模提供原子性和一致性。

RAMCloud的缺點

RAMCloud最明顯的缺陷,是按bit計算成本和能耗都比較高,比硬碟系統要差50~100倍,比快閃記憶體系統要差5~10倍。 而且所占資料中心的面積也更大。 如果你的系統成本要求高,而且對訪問性能要求不高,那麼RAMCloud不是理想方案。 但是,按操作次數計算的話,RAMCloud的成本和能耗卻要遠遠好于其他類型。 對於高輸送量的系統,RAMCloud不僅能提供高性能,還能提供高能效。

RAMCloud的另一個缺點,是只能在一個資料中心中提供高性能。 對於跨多資料中心的應用,更新延遲是由資料中心之間的距離決定的,因此RAMCloud在寫操作上沒有優勢,但對跨資料中心的讀操作仍然能提供更低的延遲。

RAMCloud的潛在影響

顯然,記憶體雲如果能夠得到大量實際運用,將對電腦界產生廣泛影響。

首先,將催生新的資料密集型應用,比如涉及大規模圖演算法的應用。 解決了目前最影響開發人員生產力的許多可伸縮性問題,從而簡化了大型Web應用的開發。 1 000~10 000台存儲伺服器組成的RAMCloud能夠支援成千上萬的應用伺服器以109–1010次請求/秒的總速度訪問1014~1015B (100TB~1PB)的資料集。 而且記憶體雲的存儲模型是平的,任何物件無論放在哪裡都可以高速訪問。 其次,提供雲計算和其他資料中心應用所需的可伸縮存儲基礎,將加速雲計算的採納進程。 第三,記憶體雲要求極低的延遲,將對原來主要考慮頻寬的網路基礎架構包括協定、設備都產生顯著影響。 第四,可能影響資料中心的設計與管理。 運維經理要更多地從低延遲的角度思考問題,記憶體雲將推動新型存放裝置的採用。 最後,會激發伺服器架構新方法湧現,包括新的電源管理技術(電池備份、超級電容),體現速度、記憶體容量、能耗新平衡的伺服器設計,伺服器集群的自動管理等。

對記憶體雲的評論

基於記憶體的各種架構其實很多,Highscability的文章曾經提到思科的UCS、Oracle的Coherence、IBM的WebSphere eXtreme Scale、Terracota、GigaSpace等等, 最近可能還要加上SAP宣傳非常多的記憶體計算。 但是像RAMCloud這樣完全要將硬碟降格為備份裝置的激進專案,是否會得到實際應用乃至成為主流,持懷疑態度的大有人在。

Hacker News上討論中有人直言這是純粹的忽悠。 Infoq今年1月的一篇文章中收集了兩個反對的聲音。 其中,在Red Hat負責雲檔案系統開發的Jeff Darcy寫了一篇批評IMDG的博客,他認為所謂基於記憶體的架構與目前已經成熟的緩存系統本質其實是一回事,前者在容量上肯定還是會遇到限制,這時仍然需要依賴硬碟, 而且採用的是事後補救的方式,那何必不採用已經經過實踐檢驗、演算法非常成熟的緩存系統呢? 紐約大學布法羅分校的副教授Murat Demirbas則指出,論文中對成本的分析過於樂觀。 由於硬碟的價格下降更快,記憶體的成本劣勢長遠看仍然非常明顯——當硬碟每GB成本只需要0.07美元的時候,誰會用60美元/G的記憶體呢?

Amazon的James Hamilton2009年底第二次聽Ousterhout的相關講座,在博客中做了詳細筆記,稱讚講座「發人深省」,值得再聽一遍。 不過信奉「沒有放之四海而皆準」的他也對Ousterhout預言關聯式資料庫將消失、未來資料全部將在記憶體中的說法不敢苟同。

曾經任職Amazon和微軟的資深架構師Greg Linden評論說,記憶體資料庫的概念並不新,但此前他認為僅適合一些特殊場合,沒想到Ousterhout會預言記憶體雲未來成為主流。

事實上,RAMCloud最初的論文版本發表到本月,已有一年多的時間,Ousterhout的主要觀點並無變化,相反,RAMCloud專案的進展很快。 值得注意的是,這篇CACM論文的審稿人裡有Google MapReduce等專案的主要開發者Jeff Dean,有微軟研究院的資深研究院James Larus,Veritas創始人Jeff Rothschild, 電腦體系結構權威David Patterson等。 在RAMCloud專案網站裡還能看到Jeff Dean等人對專案所作的設計評審。

回顧歷史,電力系統在大聯網之後,原來各個工廠和居民區的自備電廠、自有小發電機等漸漸消失,全社會除了緊急備用電源之外,基本全部使用大型電網的供電。 而電網公司也由此發展了之前不可想像的一系列高度專門化的大規模發電和輸電技術。 我們預測,隨著雲計算進入主流,計算、網路和存儲由少數雲計算服務商提供,也會發展出一系列與今天非常不同的高度專門化的技術。 今天Google、Facebook等大型互聯網公司的特殊技術可以說這種趨勢的初露端倪。 所以,一切皆有可能,不能用以前線性的觀點來看,記憶體雲也是如此。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.