設計高可用和高負載的網站系統

來源:互聯網
上載者:User
隨著網站的運營,使用者訪問量和資料存放區量會隨著時間發生幾何級變化,很快整個系統不堪重負,頻繁出現問題。其實要設計一個高可用、高負載的系統還是有一定的規矩可循的,其手段無外乎向上擴充(Sacle Up 硬體擴充)或者向外擴充(Scale Out 軟體擴充),這兩種方案在某一階段時期,會顯著改善網站的效能,但不久之後,問題依舊。本文參考網上相關資料,試圖提供一個可行的 "有限" 解決方案。

早期

1. 對業務應用進行垂直分割,將不同的業務邊界劃分出來。程式員常說的 "多層體系" 只是縱向解決了不同編程層次的劃分,相對於業務而言,並沒有做出什麼處理。現在 SOA 大行其道,除了人們認識到面向服務帶來的互聯、擴充性以外,它也將不同服務的變化區分開來,各自擁有獨立的實現和儲存機制。每個服務使用不同的資料庫或資料表,從一定程度上減輕了以往單個資料庫頻繁造成的 "鎖" 和 I/O 瓶頸問題。

2. 將網站系統中的動態內容和靜態資源分離出來,使用單獨的更加高效的伺服器(諸如 Apache + Linux)提供靜態資訊。多數情況下,流量的極大部分來源於圖片、視頻等,用多台伺服器同時提供頁面顯示除了可以提高頁面響應和現實速度外,同時他將流量分解到多台伺服器上。另外,我們應該避免使用動態解析 (ASPNET_ISAPI.dll / HttpModule / HttpHandler) 來處理待用資料的過濾和路徑重寫。

3. 使用緩衝機制,包括使用諸如 ASP.NET Cache、PageCache、建立靜態頁面等手段。設計良好的緩衝機制能極大提高系統效能和響應速度。

4. 使用 64 位元資料庫系統。SQL Server 2005 在 64 位元系統上可以使用更多的記憶體(最高64GB),而且在多 CPU 下也擁有更好的效能。有了更大的記憶體,我們甚至可以將某些常用且極少變化的表(比如分類目錄表等)設定為記憶體表以提高響應速度。

5. 關閉作業系統的某些安全設定,比如 Windows 2003 預防 DDOS 攻擊的一些設定,也可以避免一些意外的訪問瓶頸。

運行期

6. 建立多資料庫體系。使用單個或多個用於資料更新的資料庫伺服器,然後利用資料庫的複製和訂閱功能同步到其他多台專門用於顯示的資料庫伺服器上,這樣可以有效減少因為更新帶來的資料庫訪問等待。當然,這種體系並不適用所有的業務。

7. 對大資料表進行分區。現在的主流資料庫基本都支援資料表資料分割函數,我們可以橫向分區,將不同時期的資料存放到多個分區表中;也可以縱向分區,將不常用的欄位放到其他分區表中。分區表並不會影響到我們的開發模式,無須對代碼進行調整,但資料表尺寸從 TB 減小到 GB 所帶來的好處是無法忽略的。

8. 使用負載平衡等手段提升效能。包括DNS負載平衡、Proxy 伺服器負載平衡、地址轉換網關負載平衡、協議內部支援負載平衡、NAT負載平衡、反向 Proxy負載平衡等,負載平衡作為最常用的上擴手段,其效果也非常明顯。

9. 使用 SAN 等專用的儲存系統來提高 I/O 效能。SAN 使用光纖通道串連多個存放裝置,可以改善多個伺服器硬碟之間使用網線傳輸資料的效能問題。此外,SAN 還可以動態調整儲存容量,更加有利於系統備份和恢複。

10. 電力備份。如果是自主機房,除了配置 UPS 電源外,最好擁有獨立的發電裝置。當然,對中小型網站而言,這過於奢侈了些。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.