天天看點

控制大流量系統穩定高效地運作

項目設計:假設有一個包含Tag功能的部落格系統,資料庫存儲采用mysql,使用者數量為1000萬,預計文章總數為10億,每天有至少10萬的更新量,每天通路量為5000萬,對資料庫的讀寫操作的比例超過10:1。你如何設計該系統,以確定其系統高效,穩定的運作?

提示:可以從資料庫設計,系統架構,及網絡架構方面進行描述,可以寫代碼/僞代碼輔助說明,可以自由發揮.

使用nginx做負載均衡,如果預算允許可以使用F5,使用DNS輪詢的方式,後端使用伺服器叢集的方式,資料庫采用主從分離,分區,分表的方式,在進入資料庫前采用動态資料緩存的方式,memcache讀寫比例可以使用主從分離,文章總數過大,可以采用單獨的表來存儲文章,并且采用分表的方式,将使用者的其他資訊放在另外的一個表中,使用使用者id作為外鍵關聯到文章表中,這樣可以使使用者的其它資訊讀取出來,可以采用memcache緩存資料控制對資料庫的頻繁操作。

負載均衡叢集、雙節點熱備、分布式處理等都可以用來解決單點故障,比如提供相同業務的Web伺服器、MySQL資料庫從庫,都可以建構負載均衡叢集。一旦叢集中的一台伺服器、一個服務出現故障,自動實時摘除,對使用者來說是不可感覺的,不會影響到整個網站的通路,可以為運維工程師留下足夠的時間去排查和解決故障。

可以臨時關閉一些Web中的次要功能,來減少伺服器消耗。