SmugMug 的架構介紹

本文介紹的  SmugMug   是一家提供付費圖片託管服務的站點,在 2002 年由 Chris MacAskill 與 Don MacAskill 父子二人創建,最初提供面向遊戲的視頻服務,隨後轉型爲現在的模式。網站流量現在是全球 1800 多,盈利能力自稱良好。

在 MySQL Conf 2009 上,SmugMug 的  Don MacAskill   做了一次關於SmugMug 網站架構 的分享。

SmugMug 整個網站採用 LAMP 架構(其實也有 OpenSolaris),300 多臺 4 核(或更多)的服務器(大多是 AMD 的 CPU) ,分散在四個機房,兩個運營的人員。SmugMug 充分運用了雲計算服務,是 Amazon 的一個大客戶,圖片和視頻總計達到了 PB 級,託管在  Amazon S3   上,圖片和視頻的處理也在 Amazon EC2 上。使用了  Akamai   的服務做前端的  CDN   加速,主要是 JavaScript/CSS   等文件的加速,此外,DNS 加速也帶來了很好的收益。

結構化數據放在 MySQL 中,存儲引擎多數用的 InnoDB,數據超過 2TB 的空間,數據庫服務器爲 4 核或更高配置,內存多達 64GB。緩存方面,用了 Memcached 做加速,有 1TB 的數據在這裏面,平均命中率達到 96%。Memcached 裏面儘量存放 MySQL 行數據,減小對  DB   的衝擊。數據庫設計思路是儘量做垂直分區,沒有 Sharding。不過在反範式(denormalized)方面做得比較徹底,不用表連接(JOIN)方法者複雜的查詢。多數查詢依賴主鍵,更新或者刪除數據也是單行,依賴主鍵。InnoDB 引擎打了  Percona   的 Patch,併發能力也有了很大增強。

  DB   的數據完整性與寫能力的要求高,而對於讀的擴展性還是相對比較好解決。Linux 上的文件系統是 SmugMug 不太滿意的地方,備份也成問題。ZFS   倒是能滿足相關的需求,可惜不支持 Linux(媽的,早該支持 Linux了)。所以他們遷移到了 OpenSolaris   上。另外,對於複製中可能出現的風險,嘗試了第三方提供的一些 Patch (參考  Google 發佈的 MySQL Patch )。

採用 OpenSolaris 後,MySQL 放在 Sun Sushi Toro(Storage 7410 ,這個東西也支持  SSD   ) 上,走 NFSv3 協議。寫到這裏,發現 SmugMug 的解決方案非常不具有通用行,看起來 Sun 是給了他們不小的硬件優惠,否則一般情況下不會有人這麼搞的,用  NFS   協議走數據庫,除非是測試環境或者是複製(我懷疑只是 Slave 端通過  NFS   走),產品上真的有人跑麼?

網站架構的進化,其實也是選定一個方向(比如用開源工具解決),然後一直試錯的過程。

--EOF --

 

原文:http://www.dbanotes.net/arch/smugmug_arch.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章