RAM是硬盤,硬盤是磁帶
Jim Gray在過去40年中對技術發展有過巨大的貢獻,“內存是新的硬盤,硬盤是新的磁帶”是他的名言。“實時”Web應用不斷湧現,達到海量規模 的係統越來越多,這種後浪推前浪的發展模式對軟硬件又有何影響?
Tim Bray早在網格計算成為熱門話題之前,就討論過以RAM和網絡為中心的硬件結構的優勢,可以用這種硬 件建立比磁盤集群速度更快的RAM集群。
對於數 據的隨機訪問,內存的速度比硬盤高幾個數量級(即使是最高端的磁盤存儲係統也隻是勉強達到1,000次尋道/秒)。其次, 隨著數據中心的網絡速度提高,訪問內存的成本更進一步降低。通過網絡訪問另一台機器的內存比訪問磁盤成本更低。就在我寫下這段話的時候,Sun的 Infiniband產品線中有一款具備9個全互聯非阻塞端口交換機,每個端口的速度可以達到30Gbit/sec!Voltaire產品的端口甚至更 多;簡直不敢想象。(如果你想了解這類超高性能網絡的最新進展,請關注Andreas Bechtolsheim在Standford開設的課程。)
各種操作的時間,以2001年夏季,典型配置的 1GHz 個人計算機為標準:
執行單一指令 |
1 納秒 |
從L1 高速緩存取一個字 |
2 納秒 |
從 內存取一個字 |
10 納秒 |
從 磁盤取連續存放的一個字 |
200 納秒 |
磁 盤尋址並取字 |
8 毫秒 |
以太 網 |
2GB/s |
Tim還指出Jim Gray的
名言中後半句所闡述的真理:“對於隨機訪問,硬盤慢得不可忍受;但如果你把硬盤當成磁帶來用,它吞吐連續數據的速率令人震驚;它天生適合用來給以RAM為 主的應用做日誌(logging and journaling)。”
時間閃到幾年之後的今天,我們發現硬件的發展趨勢在RAM和網絡領域勢頭不減,而在硬盤領域則止步不前。Bill McColl提到用於並行計算的海量內存係統已經出現:
內存是新的硬盤!硬盤速度提高緩慢,內存芯片容量指數上升,in- memory軟件架構有望給各類數據密集的應用帶來數量級的性能提升。小型機架服務器(1U、2U)很快就會具備T字節、甚至更大量的內存,這將會改變服 務器架構中內存和硬盤之間的平衡。硬盤將成為新的磁帶,像磁帶一樣作為順序存儲介質使用(硬盤的順序訪問相當快速),而不再是隨機存儲介質(非常慢)。這 裡麵有著大量的機會,新產品的性能有望提高10倍、100倍。
Dare Obsanjo指出如果不把這句真言當回事,會帶來什麼樣的惡劣後果—— 也就是Twitter正麵臨的麻煩。論及Twitter的內容管理,Obsanjo說,“如果一個設計隻是簡單地反映了問題描述,你去實現它就會落入磁盤 I/O的地獄。不管你用Ruby on Rails、Cobol on Cogs、C++還是手寫彙編都一樣,讀寫負載照樣會害死你。”換言之,應該把隨機操作推給RAM,隻給硬盤留下順序操作。
Tom White是Hadoop Core項目的提交者,也是Hadoop項目管理委員會的成員。他對Gray的真言中“硬盤是新的磁帶”部分作了更深入地探討。 White在討論MapReduce編程模型的時候指出,為何對於Hadloop這類工具來說,硬盤仍然是可行的應用程序數據存儲介質:
本質上,在MapReduce的工作方式中,數據流式地讀出和寫入硬 盤,MapReduce是以硬盤的傳輸速率不斷地對這些數據進行排序和合並。 與之相比,訪問關係數據庫中的數據,其速率則是硬盤的尋道速率(尋道指移動磁頭到盤麵上的指定位置讀取或寫入數據的過程)。為什麼要強調這一點?請看看尋 道時間和磁盤傳輸率的發展曲線。尋道時間每年大約提高5%,而數據傳輸率每年大約提高20%。尋道時間的進步比數據傳輸率慢——因此采用由數據傳輸率決定 性能的模型是有利的。MapReduce正是如此。
雖然固態硬盤(SSD)能否改變尋道時間/傳輸率的對比還有待觀察,White文章的跟貼中,很多人都認為SSD會成為RAM/硬盤之爭中的平衡因素。
Nati Shalom對內存和硬盤在數據庫部署和使用中的角色作了一番有理有據的評述。 Shalom著重指出用數據庫集群和分區來解決性能和可伸縮性的局限。他說,“數據庫複製和數據庫分區都存在相同的基本問題,它們都依賴於文件係統/硬盤 的性能,建立數據庫集群也非常複雜”。他提議的方案是轉向In-Memory Data Grid(IMDG),用Hibernate二級緩存或者GigaSpaces Spring DAO之類的技術作支撐,將持久化作為服務(Persistence as a Service)提供給應用程序。Shalom解釋說,IMDG
提供在內存中的基於對象的數據庫能力,支持核心的數據庫功能,諸如高級 索引和查詢、事務語義和鎖。IMDG還從應用程序的代碼中抽象出了數據的拓撲。通過這樣的方式,數據庫不會完全消失,隻是挪到了“正確的”位置。
IMDG相比直接RDBMS訪問的優勢列舉如下:
· 位於內存中,速度和並發能力都比文件係統優越得多
· 數據可通過引用 訪問
· 直接對內存中的對象執行數據操作
· 減少數據的爭用
· 並行的聚合查詢
· 進程內 (In-process)的局部緩存
· 免除了對象-關係映射(ORM)
你是否需要改變對應用和硬件的思維方 式,最終取決於你要用它們完成的工作。但似乎公論認為,開發者解決性能和可伸縮性的思路已經到了該變一變的時候。