Tcl/Tk的創始人、美國工程院院士、ACM Fellow John Ousterhout目前在斯坦福大學任教,他近年來的主要研究專案是RAMCloud——記憶體雲。 顧名思義,RAMCloud就是這樣一種新型資料中心存儲系統,它是由成千上萬台普通伺服器的主存所組成的大規模系統,任何時候,所有資訊都存儲在這些快速的DRAM(動態隨機訪問儲存體,即俗稱的記憶體)中, 記憶體取代了傳統系統中的硬碟,硬碟只作為備份使用。
記憶體雲由此能同時實現大規模 (100~1000 TB) 和低延遲(同一資料中心應用程式訪問少量記憶體雲資料只需5~10ms,比目前系統快100~1000倍)。 記憶體雲不僅會簡化大型Web應用的開發,而且,將催生新的資料密集型應用。
最新出版的《ACM通信》(Communications of ACM)2011年8月刊發表了Ousterhout與他的團隊合作撰寫的論文「The Case for RAMCloud」
在過去四十年,磁片已經成為電腦系統網上資訊的主要存儲位置。
在此期間,磁片技術已經發生了顯著改善,由更高級別的存儲系統(如檔案系統和關係資料庫)利用。 但是磁片性能卻並沒有像磁片容量那樣有所改變。 一個不容忽視的現實擺在了面前——技術人員發現基於磁片的系統越來越難以形成規模以滿足大型Web應用程式的需要。
許多電腦科學家們提出了新的基於磁片存儲的解決方案,以及其他建議更換磁碟與快閃記憶體裝置。 相比之下,我們說的解決方案是基本想法就是將線上資料從磁片遷移到DRAM上,從而在磁片之上創建一種新式存儲。
這時,一個被稱為「RAMCloud」新的存儲方式將為未來許多應用提供新的存儲架構。
什麼是RAMCloud?
RAMCloud架構的原理在於將存儲所有商務服務器的資訊在主儲存體上,並使用數百上千的伺服器創建大型存儲系統。 據稱,存儲在RAMCloud上的資料的延遲要比存儲在基於硬碟的系統上低100-1000倍,而輸送量則會高100-1000倍。
雖然個體存儲容易改變,但RAMCloud可以利用複製和備份技術以保障資料的耐久性和可用性,就像傳統基於磁片的系統那樣。
RAMCloud可提供低延遲和大規模,並將從以下三點改變存儲行業的現狀。 首先,RAMCloud會消除開發大規模Web應用所面臨的可擴充性問題。 其次將啟用新的應用類,比當今深入100-1000倍運算元據將成為可能;RAMCloud集群可以支援單個的代謝那個程式或許多較小的應用程式,並可在小型應用轉變為大型應用的開發時保證沒有額外的複雜性。
RAMCloud的架構原理
1、在RAMCloud架構中,大量伺服器組成的資料中心可分為兩類:應用伺服器,實現應用程式的邏輯(如生成Web網頁和執行商務規則)和存儲伺服器,提供較長的共用應用伺服器存儲。
2、RAMCloud代表系統存儲組織伺服器的一種新方式,有兩個關鍵的區別區分RAMCloud和傳統存儲系統。 首先,所有資訊在任何時候都保存在RAMCloud;其次,RAMCloud必須建立在一定規模(數以千計)存儲伺服器上。 對於應用程式,獨立于存儲伺服器的單一存儲系統的實際數量是可見的。
3、RAMCloud存儲的資訊必須為持久的,就像存儲在磁片上那樣。 一個單一的存儲伺服器出現故障後絕不會造成資料丟失或哪怕幾秒的資料不可用的狀況。 實現耐用久性和可用性的技術的將會在本文後邊討論。
4、保存在DRAM上的所有資料都允許保存在RAMCloud,並且比當今給予高性能磁片存儲系統的實際性能要高100到1000倍。
5、在同一個資料中心中通過在應用伺服器上運行的一個進程通過網路讀取幾百位元組的資料的訪問延遲有可能降低到5μs–10μs。 相比之下,今天的系統通常需要0.5ms到10ms,這取決於資料是否存在於伺服器記憶體的緩存上,或必須從磁片中讀取。
6、一台多核的存儲伺服器應該至少能在每秒相應100萬的網路請求。 根據配置和緩存的內容,一個基於磁片的系統的類似機器(運行多個磁片和一個存儲緩存的主記憶體)每秒可相應1000至10000的網路請求。
案例分享
目前一個可行的RAMCloud配置,每台伺服器配置24GB的DRAM,這是高性價比的配置。 擴充記憶體會導致成本的急劇增加。 2000伺服器會配備48TB的存儲空間,平均每GB成本65美元。 據預測,到2020年,隨著DRAM技術的不斷完善,激勵1PB-10PB配置的RAMCloud時每GB成本僅需6美元。
RAMCloud已經在實際中有所應用。 例如一個大型的網路零售商或航空公司使用RAMCloud的花費在幾十萬美元。 截止2009年8月Facebook所有非圖像資料大約有260TB。 這可能接近了當今RAMCloud實用的上限。
像電視頻、照片、歌曲等資料還沒有大規模應用RAMCloud,然而RAMCloud實際已經可以用在所有線上的資料。 隨著DRAM技術的不斷改進,RAMCloud在未來會更具吸引力。
RAMCloud的存在價值
首先,RAMCloud可以是一個資料密集型應用的新架構,傳統的架構是應用程式連同代碼和資料被載入到一台伺服器的主存儲中,瓶頸也是顯而易見的,各種複雜的資料操作,應用程式的大小,機器的處理能力都是瓶頸。
而在過去的10年中,一種服務于數百萬使用者的大型WEB應用架構出現了。 其主要將應用程式代碼和資料存放于同一個資料中心中的不同伺服器中。 應用伺服器只存儲當前請求和處理瀏覽器的需求,而這種架構允許應用程式擴展到成千上萬的應用伺服器和存儲。
但是不幸的是,在大型架構圖中,當伺服器增加了4-5個數量級後,應用程式的複雜性,資料的訪問延遲都成了問題。 比如當Facebook收到一個HTTP請求訪問網頁時,應用伺服器必須發出130個以上的資料以生成HTML頁面,這當中有指令請求的順序,而這些請求指令的累積是造成給使用者整體回應時間延遲的因素之一,所以需要相當大的開發量, 以儘量減少對伺服器請求的代碼大小和數量。
Mapreduce是最近幾年興起的一個新的技術,目的在於提高資料接入速度,消除了延遲問題,現在它解決了大規模的問題,但是如果是連續的資料訪問,將使得Mapreduce僅僅限於在隨機訪問資料的應用中使用。
RAMCloud則充分結合了兩者的優勢——規模化和低延遲:保留了Web應用程式的可擴充性,同時降低了資料訪問延遲以接近傳統的應用程式。
對現有應用程式的擴展存儲
對於新的應用,RAMCloud將使其更容易建立。 因為缺乏一個可擴展的存儲系統,現在開發大型的Web應用程式是困難的。
過去所有的Web應用程式都使用關聯式資料庫存儲,但隨著資料規模的擴大,一個單一的關聯式資料庫已經不能滿足他們的I/O需求。 因此大家開始做系統升級,引進新的技術來擴展自己的存儲系統(比如多個資料庫間的資料分區)。
比如,儘管Facebook在2009年的時候就有4000個MySQL伺服器,但由於大量互動式資料的調用,現有的存儲系統依舊不能滿足它的I/O需求, 所以Facebook用了2000個Memcached用作分散式記憶體物件快取服務器——將一些鍵值存儲于主記憶體中,但其瓶頸在於,需要處理Memcached和MySQL伺服器之間的一致性, 需要對應用軟體進行管理(比如刷新緩存值以更新資料庫),這無疑增加了應用的複雜性。
因此,NoSQL開始出現,用非關聯式資料庫以鍵值對存儲,它的結構不固定,每一個元組可以有不一樣的欄位,每個元組可以根據需要增加一些自己的鍵值對,這樣就不會局限于固定的結構,可以減少一些時間和空間的開銷, 但是他們瓶頸依然是磁片速度。
RAMCloud的原理之一是提供一個通用的存儲系統,其規模遠遠超出現有的系統,應用程式開發人員不需要採取特殊的方式(如NoSQL系統)。 理想的狀態是,RAMCloud提供一個簡單的模型,易用、並且有擴充性,並對應用程式的城戰不需要做架構上的改變。
技術的發展趨勢
RAMCloud的發展動力是來自磁片技術的演進。 磁片容量從80年代以來增長了超過10000倍,未來還將繼續增加(表3),不幸的是,磁片上的資訊存取速度卻停止不前,顯著的提高方式是通過減少搜尋時間和旋轉延遲,但僅僅提高了50倍,和容量的增加實在無法成正比。
硬碟技術不平衡發展的結構,導致了資料必須保存在記憶體中不停訪問。 如果按照容量/頻寬的比例來計算,如果磁片是用作填補特定大小的塊,那麼每塊多久可以訪問? 隨機訪問又如何呢? 一個可行的辦法是降低磁片的利用率,如果只有一半的磁片能夠使用,那麼存取速度理論上可以提高一倍。 有資料顯示,到2009年末時,Facebook真正可以利用的磁片容量只有10%,顯然,這個成本有點太高,從經濟性和節能性來說,絕對不是一個好的架構。
緩存
對軟體工程師而言,如果大多數訪問只是磁片一個小塊,可以實現高性能保持在DRAM訪問最頻繁的塊之上,在理想的狀態下,使用緩存系統能夠提供類似DRAM的性能+磁片的成本。 但是DRAM和磁片之間的存取時間存在著1000倍的差距,這也意味著快取記憶體必須要有非常低的損失率,以避免性能上的損失。
SSD
目前來看,可選擇的SSD有兩種:基於DRAM的設備和基於快閃記憶體的設備。
基於DRAM存放裝置比基於快閃記憶體的存放裝置速度更快,但成本也要高得多。
比如,2TB大小基於快閃記憶體的存放裝置成本大約為18萬美元;相比之下,存儲容量相同但基於DRAM的存放裝置成本高達約100萬美元。 基於DRAM的磁碟機讀取或寫入資料的時間只要0.015毫秒,工作狀態下隨機速度達到了每秒可以處理40萬次I/O。 這種磁碟機最適合以寫操作為主的軟體以及使用高效能資料庫應用系統的公司。
基於快閃記憶體的存儲磁碟機讀取或寫入資料的時間為0.2毫秒,工作狀態下最高讀取速度為每秒10萬次I/O,最高寫入速度為每秒2.5萬次I/O。 這項技術也更適合以讀操作為主的應用。
(責任編輯:admin)