如何走出海量數據及訪問量壓力困境

作者: 朱先忠  發布時間: 2010-09-09 21:43  閱讀: 8238 次  推薦: 2   原文鏈接   [收藏]  
 
摘要:本文通過幾個國外IT企業網站的成功案例,從技術人員的角度探討如何緩解網站性能和高數據訪問量的壓力。
[1] 如何走出海量數據及訪問量壓力困境
[2] 如何走出海量數據及訪問量壓力困境
[3] 如何走出海量數據及訪問量壓力困境
[4] 如何走出海量數據及訪問量壓力困境

    隨著中國大型IT企業信息化速度的加快,大部分應用的數據量和訪問量都急劇增加,大型企業網站正面臨性能和高數據訪問量的壓力,而且對存儲、安全以及信息檢索等等方面都提出了更高的要求……
    本文中,我想通過幾個國外大型IT企業及網站的成功案例,從Web技術人員角度探討如何積極地應對國內大型網站即將面臨的擴展(主要是技術方面,而較少涉及管理及營銷等方面)矛盾。
  一、 國外大型IT網站的成功之道

  (一) MySpace
  今天,MySpace已經成為全球眾口皆碑的社區網站之王。盡管一流和營銷和管理經驗自然是每個IT企業取得成功的首要因素,但是本節中我們卻拋棄這一點,而主要著眼于探討在數次面臨系統擴張的緊急關頭MySpace是如何從技術方面采取應對策略的。
  第一代架構—添置更多的Web服務器
  MySpace最初的系統很小,只有兩臺Web服務器(分擔處理用戶請求的工作量)和一個數據庫服務器(所有數據都存儲在這一個地方)。那時使用的是Dell雙CPU、4G內存的系統。在早期階段,MySpace基本是通過添置更多Web服務器來對付用戶暴增問題的。但到在2004年早期,在MySpace用戶數增長到五十萬后,其數據庫服務器已經開始疲于奔命了。
  第二代架構—增加數據庫服務器
  與增加Web服務器不同,增加數據庫并沒那么簡單。如果一個站點由多個數據庫支持,設計者必須考慮的是,如何在保證數據一致性的前提下讓多個數據庫分擔壓力。
  MySpace運行在三個SQL Server數據庫服務器上—一個為主,所有的新數據都向它提交,然后由它復制到其它兩個;另兩個數據庫服務器全力向用戶供給數據,用以在博客和個人資料欄顯示。這種方式在一段時間內效果很好——只要增加數據庫服務器,加大硬盤,就可以應對用戶數和訪問量的增加。
  這一次的數據庫架構按照垂直分割模式設計,不同的數據庫服務于站點的不同功能,如登錄、用戶資料和博客。垂直分割策略利于多個數據庫分擔訪問壓力,當用戶要求增加新功能時,MySpace只需要投入新的數據庫加以支持。在賬戶到達二百萬后,MySpace還從存儲設備與數據庫服務器直接交互的方式切換到SAN(存儲區域網絡)—用高帶寬、專門設計的網絡將大量磁盤存儲設備連接在一起,而數據庫連接到SAN。這項措施極大提升了系統性能、正常運行時間和可靠性。然而,當用戶繼續增加到三百萬后,垂直分割策略也變得難以維持下去。
  第三代架構—轉到分布式計算架構
  幾經折騰,最終,MySpace將目光移到分布式計算架構——它在物理上分布的眾多服務器,整體必須邏輯上等同于單臺機器。拿數據庫來說,就不能再像過去那樣將應用拆分,再以不同數據庫分別支持,而必須將整個站點看作一個應用。現在,數據庫模型里只有一個用戶表,支持博客、個人資料和其他核心功能的數據都存儲在相同數據庫。
  既然所有的核心數據邏輯上都組織到一個數據庫,那么MySpace必須找到新的辦法以分擔負荷——顯然,運行在普通硬件上的單個數據庫服務器是無能為力的。這次,不再按站點功能和應用分割數據庫,MySpace開始將它的用戶按每百萬一組分割,然后將各組的全部數據分別存入獨立的SQL Server實例。目前,MySpace的每臺數據庫服務器實際運行兩個SQL Server實例,也就是說每臺服務器服務大約二百萬用戶。據MySpace的技術人員說,以后還可以按照這種模式以更小粒度劃分架構,從而優化負荷分擔。
  第四代架構—求助于微軟方案
  2005年早期,賬戶達到九百萬,MySpace開始用微軟的C#編寫ASP.NET程序。在收到一定成效后,MySpace開始大規模遷移到ASP.NET。
  賬戶達到一千萬時,MySpace再次遭遇存儲瓶頸問題。SAN的引入解決了早期一些性能問題,但站點目前的要求已經開始周期性超越SAN的I/O容量——即它從磁盤存儲系統讀寫數據的極限速度。
  第五代架構—增加數據緩存層并轉到支持64位處理器的SQL Server 2005
  2005年春天,MySpace賬戶達到一千七百萬,MySpace又啟用了新的策略以減輕存儲系統壓力,即增加數據緩存層——位于Web服務器和數據庫服務器之間,其唯一職能是在內存中建立被頻繁請求數據對象的副本,如此一來,不訪問數據庫也可以向Web應用供給數據。
  2005年中期,服務賬戶數達到兩千六百萬時,MySpace因為我們對內存的渴求而切換到了還處于beta測試的支持64位處理器的SQL Server 2005。升級到SQL Server 2005和64位Windows Server 2003后,MySpace每臺服務器配備了32G內存,后于2006年再次將配置標準提升到64G。
  事實上,MySpace的Web服務器和數據庫仍然經常發生超負荷,其用戶頻繁遭遇“意外錯誤”和“站點離線維護”等告示,他們不得不在論壇抱怨不停……
  MySpace正是在這樣不斷重構站點軟件、數據庫和存儲系統中,才一步步走到今天。事實上,MySpace已經成功解決了很多系統擴展性問題,其中存在相當的經驗值得我們借鑒。MySpace系統架構到目前為止保持了相對穩定,但其技術人員仍然在為SQL Server支持的同時連接數等方面繼續攻堅,盡可能把事情做到最好。

2
0
 
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()