37signals經驗談:堆內存和SSD做向上擴展也很不錯
譯文【51CTO精選譯文】本文是High Scalability作者Todd Hoff的一篇分享文章,對37signals最近分享的兩篇文章進行了摘要說明。37signals應該很多人都知道了,它是Ruby on Rails的發源地,Campfire等產品背后的公司。全文如下:
這年頭,IT業界出現了形形色色的架構概念,其中的兩大爭論是云計算與裸機之爭,以及內存、磁盤與SSD之爭。37signals發表了兩篇頗有見地的文章,逆炒作周期(hype cycle)而行之,中心思想分別如下:
- 那些在每MB內存賣1000美元的年代長大的技術人員很難適應將內存幾乎視作免費的時代;
- 技術的進步正在促使人們將大量的優化扔進被標注為“過早XX”的垃圾桶。
37signals在Basecamp的緩存層上僅僅花了1.2萬美元就買到了864GB內存,這引起了一陣轟動。花的錢不多,但內存容量很大,這是不是使基于內存的架構更吸引人了?
隨后,37signals緊接著發表了另一篇發人深省的文章:《三年后,摩爾先生仍在讓我們寄希望于數據庫分片》。簡單來講就是說,向上擴展對他們是適用的。內存變得越來越便宜,FusionIO變得越來越快,所以他們得以避免數據庫分片這樣的復雜架構問題。這是不是使基于SSD的架構更吸引人了?
StackExchange的情況也一樣,雖然使用不同的堆棧,但是核心概念和結果是大同小異的。你要明白,在面向事務的功能中,如果你的要求不像Google那么高,那么使用裸機、內存和SSD實現向上擴展不失為一條出路。你覺得云計算和橫向擴展很牛,但這可能不過是一種思維反射而已。
幾點心得:
•SSD正在加快發展,也就是說Basecamp未來可能一直都不會需要進行分片。
•內存在云端和VPS上仍然很貴。所以若想改用內存架構,就要走裸機道路。一位好心的讀者留言分享了幾個數據:彈性緩存差不多是每月2萬美元購買800GB內存(12 X Quadruple Extra Large節點/68GB)。
•37signals將FusionIO用于其數據庫,但由于要將內存安裝到三臺服務器上,所以使用內存是成本更低的出路。
•BaseCamp的容量規劃問題相對容易預測,所以裸機的成本效率要比云計算高得多。如果你的服務跟Netflix一樣不好預測,那么相對應的取舍可能會不一樣。
•SSD的密度比內存高,成本比內存低,但是速度比內存慢得多。內存加快了讀寫速度,而SSD加快讀操作的效果勝過加快寫操作的效果。
•37signals通過在所有系統中添加冗余機制來處理故障。所有數據庫都有復制的副本。與備用服務器一樣,額外容量也得到了保留。到目前為止還沒有做跨地域冗余。
•數據結構更改是大多數關系數據庫存在的一個臭名昭著的瓶頸,它在SSD上倒是問題不大。用戶仍可以將大量的表緩存到內存中。
相關鏈接:
- Google Groups討論帖:運行在內存上的數據庫
- 三年后,摩爾先生仍讓我們寄希望于數據庫分片
原文: 37signals Still Happily Scaling on Moore RAM and SSDs
【編輯推薦】