同時線上人數約2000人需要什么等級服務器?
以 MySpace 為例
在網絡上流傳一篇很火紅的文章從 MySpace 數據庫看分散式系統(tǒng)數據結構變遷,內容提到 MySpace 這個大型的社區(qū)網站,使用微軟平臺的 Windows Server、SQL Server、ASP.NET 技術,如今每個月的用戶訪問量高達 500 億,且已有 2 億個以上的用戶注冊。以下僅節(jié)錄該文的重點:
* 第一代架構 - 添置更多的 Web 服務器
在 MySpace 有 50 萬個注冊用戶的時候,網站只用了兩臺 Dell 雙 CPU、4 GB 內存的 Web Server (分散用戶的請求)、一臺 DB Server (所有數據都存儲在這)。
* 第二代架構 - 增加數據庫服務器
運行在三臺數據庫服務器上,一臺用于更新數據 (由它復制到其他兩個)、另兩臺用于讀取數據,因為看網頁的人多,而需 寫入的人少。等到用戶數和訪問量增加了,就再加裝硬盤。
后來數據庫服務器的 I/O 成了瓶頸,就按照垂直分割模式設計,把網站里的不同功能,如:登錄、用戶資料和博客,搬移到不同的數據庫服務器中,以分擔訪問壓力;若 增加新功能,就再投入新的數據庫服務器。
當注冊用戶達到 200 萬后,還從存儲設備與數據庫服務器直接交互的方式,切換到 SAN (存儲區(qū)域網絡),一種高帶寬、專門設計的網絡系統(tǒng),可將大量磁盤存儲設備連接在一起。MySpace 讓數據庫連接到 SAN。但是當用戶增加到 300 萬人后,垂直分割策略也變得難以維持下去,后來架構師后來將主機升級成 34 個 CPU 的昂貴服務器,卻也無法負荷。
* 第三代架構 - 轉到分布式計算架構
架構師將 MySpace 移到分布式計算架構,它在物理上分布的眾多服務器,整體必須邏輯上等同于單臺機器。拿數據庫來說,就不能再像過去那樣將應用拆分,再以不同數據庫分別支持,而必須將整個站點看作一個應用。這次,不再按站點功能和應用分割數據庫,MySpace 開始將它的用戶按每 100 萬一組分割,然后將各組的全部數據分別存入獨立的 SQL Server 實例。后來 MySpace 的每臺數據庫服務器實際運行兩個 SQL Server 實例,也就是說每臺服務器會服務大約 200 萬用戶。
* 第四代架構 - 增加數據緩存層
當用戶達到 900-1000 萬時,MySpace再次遭遇存儲瓶頸問題,后來引用了新的 SAN 產品,但站點目前的 求,已經超越 SAN 的 I/O 磁盤存儲系統(tǒng)、及其讀寫數據的極限速度。
當用戶達到 1700 萬時,增加了一個數據緩存層,其位于 Web 服務器和數據庫服務器之間,其唯一職能是在內存中建立被頻繁請求數據對象的副本。以前每一位用戶查詢一個信息,就請求一次數據庫;現(xiàn)在當任一個用戶請求數據庫后,緩存層就會保留一個副本,當其他用戶再訪問時就不需 再請求數據庫了,如此一來,不訪問數據庫也可以供給數據。
* 第五代架構 - 轉到支持 64 位處理器的操作系統(tǒng)和數據庫軟件
當用戶數達到 2600 萬時,轉到了還處于 Beta 版、但支持 64 位處理器的 SQL Server 2005。在升級到 64 位的 SQL Server 2005 和 Windows Server 2003 后,MySpace 每臺服務器配備了 32 GB 內存,后來又提升到了 64 GB。
從 MySpace 數據庫看分布式系統(tǒng)數據結構變遷:
http://www.cnblogs.com/cxccbv/archive/2009/07/15/1524387.html
http://www.javaeye.com/topic/152766
http://smb.pconline.com.cn/database/0808/1403100.html
http://idai.blogbus.com/logs/14736411.html