大型高並發高負載web應用系統架構


在WEB網站的規模從小到大不斷擴展的過程中,用戶訪問量和並發量不斷增加。

構建大型的商業網站絕對不可能像構建普通的小型網站一樣一蹴而就,需要從嚴格的軟件工程管理的角度進行認真規划,有步驟有邏輯地進行開發。

對於大型網站來說,所采用的技術涉及面極其廣泛,從硬件到軟件、編程語言、數據庫、Web服務器、防火牆等各個領域都有了很高的要求,已經不是原來簡單的html靜態網站所能比擬的。

那如何優化程序和網站進行部署呢?

以下是我的幾點個人看法(個人用NHibernater + MySQL或MSSQL)

一:頁面緩存和數據緩存

這絕對不單指低級的緩存技術相關的編程,應從整個架構角度着眼,深入研究Web服務器、數據庫服務器的各層級的緩沖策略,最后才是低級的緩沖技術的編程。

1:為了讓網站支持更好的緩存機制,在開發過程中所有ASPX文件和ASCX文件不能直接訪問Session或Cookie,因為如果直接訪問這些數據,會造成服務器把當前用戶的緩存給到另外一個用戶的情況,任何個人信息都通過客戶端的javascript訪問Cookie或Ajax請求數據取得。

2:Hibernate的緩存包括Session的緩存和SessionFactory的緩存,在系統設計的時候就要設定好數據的變更周期,以更好的設置數據的緩存時間,防止加載數據庫數據;

3:在對外數據的展現,也就是所有非事務的Select語句中一定要用:"SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED" 來聲明事務級別(MSSQL可以用NOLOCK方式,但為程序可以兼容多種數據庫,建議用臟讀方式),提高讀取性能,防止出現讀取到鎖定數據,造成阻塞。

二:Web服務器分布式負載均衡

1:運用LVS+Keepalived進行負載均衡部署(同時防止單點故障,參考:Linux 下 LVS+Keepalived 負載均衡安裝

2:負載均衡后用Memcached 進行集群緩存,並實現Session共享,防止因為負載均衡后Session丟失。

三:數據庫優化

1:優化索引

2:讀寫主從分離:運用MySQL的MHA來保證數據庫系統的高可用.在宕機的時間內(通常10—30秒內),完成故障切換,實現主從分離,再利用Altas進行讀寫分離提高數據庫性能(參考:Mysql MHA 主從配置+Keepalived測試使用說明 、MySQL+Altas 讀寫分離測試(Altas 不能用存儲過程,Update和Delete必須要有參數)

3:分庫:將數據庫按照不同的業務進行分庫

4:分表:將同一個表,按照不同的業務邏輯進行區分,如訂單表可分為1星期內,一個月內,三個月內,一年內,四個不同的表,正常業務邏輯最多的都是查詢今天或這幾天的數據,面其他數據一般都不會查到


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM