天天看點

大中型web項目高負載的優化方案

伴随着Web技術迅猛發展以及應用領域範圍的不斷擴大,使得web項目深入到人們生活的方方面面,但随着網站規模的日益發展,資料量的日益龐大,最終将出現海量資料的存儲和高并發的局面,此時網站的性能和使用者體驗又将面臨嚴峻的形勢和新一輪的挑戰。

性能是提升使用者體驗的基礎和先決條件,也是一個網站是否有長足發展的必要條件,是以架構一個高性能,高負載的web系統是網站技術的核心。

一個高性能,高負載的系統架構要從軟體(包括部署和優化),硬體兩方面來考慮:硬體方面這裡不必冗言,高性能的伺服器,高速的網絡帶寬,多線接入等,這些硬體設施都是必不可少的。在同樣硬體裝置資源的預算下,系統的高負載,高性能就完全展現在軟體方面。

部署專職伺服器:

對于特定的檔案要部署專職的伺服器來進行存儲和處理,比如,對于Web 伺服器來說,不管是Apache、IIS還是其他容器,圖檔是最消耗資源的,于是我們有必要将圖檔與頁面進行分離,這是基本上大型網站都會采用的政策,他們都有獨立的圖檔伺服器,甚至很多台圖檔伺服器。這樣的架構可以降低提供頁面通路請求的伺服器系統壓力,并且可以保證系統不會因為圖檔問題而崩潰,在應用伺服器和圖檔伺服器上,可以進行不同的配置優化,比如apache在配置ContentType的時候可以盡量少支援,盡可能少的LoadModule, 保證更高的系統消耗和執行效率。

資料庫:

對于目前web2.0站點來說,性能的最大瓶頸主要是在資料庫上,站點與使用者的頻繁互動,海量資料的存儲等,都要依靠資料庫來完成,是以很大程度上對資料庫的優化和部署方案可直接關系影響到整個系統架構的好壞。MYSQL資料庫是比較常用的db軟體,其本身具有高負載,高性能的特點,但是當資料增加到100萬以上時,那麼MySQL的效能将急劇下降。對于存在海量資料的網站來說,這種性能的損耗是緻命的。是以這裡就需要部署資料庫叢集來存儲海量的網站資料,運用庫表散列,把海量資料分區,分表來進行存儲。利用讀寫分離技術,把對資料庫的操作進行分流,讓讀和寫在不同的伺服器上進行等等。

緩存:

網站架構和網站開發中的緩存也是非常重要的,它可以大量的減少對db的讀取次數,進而減輕伺服器的壓力,Linux上提供的Memory Cache是常用的緩存接口,它是基于Linux記憶體的,可以在web開發中使用。

目前國内産品考慮到上述高負載,高并發的成熟架構還是比較少的,近日和朋友聊天時得知國内目前有一款針對海量資料和高并發處理的系統架構,叫做iweb,是由jooyea實驗室開發研制的。他們的幾個主要産品都有高負載的能力,這也正是目前市場所最需要的,看了一下iweb的架構圖。感覺十分專業,真的希望他們能夠為大中型網站提供最優秀的解決方案,也希望國産的軟體越來越好。

繼續閱讀