網站大流量解決

基本思路是: 
1.儘量減少無所謂得頁面刷新。比如採用xmlhttp或者ajax等技術實現頁面局部刷新。 
2.大量使用緩存,其中緩存又可以分爲三種,。Application   Cache   。Pre   Request   Cache   。Page   Cache,通過緩存可以大幅度得減少流量,增加web服務器得承載量。必要得時候,可以建立專門得緩存代理。 
3.避免過多使用Session,使用Session通常不能很好得分佈,儘管它可運行在Sql方式,但性能肯定有所下降。 
4.儘量考慮系統易於分佈,不要片面得追求某個部分得高性能,而使系統難於分佈,因爲易於分佈得系統,大不了加服務器而已。
 

此內容涉及到開發工具, 開發方法, 開發過程, 體系結構, 應用分層, 常用web功能舉例和注意事項, 性能瓶頸, 擴展並提出一些解決方法, 最後還涉及到性能的監控方法。

擴展Web應用程序

一、概念

簡單的來說,如果一個系統可擴展,那麼你可以通過擴展來提供系統的性能。這代表着系統能夠容納更高的負載、更大的數據集,並且系統是可維護的。擴展和語言、某項具體的技術都是無關的。擴展可以分爲兩種:

1. 垂直擴展(stade up),通俗的說就是將某臺單一的機器的性能提升的更高,如添加內存、更換更強的處理器等等。

2. 水平擴展(out),通俗的說就是添加新的機器。

對比可以發現,水平擴展比垂直擴展有更強大的擴展性,可以說是“無限”擴展,畢竟單臺的機器的性能總是有限的,硬件的技術發展還趕不上web的發展。但同時,水平擴展也來了更高的維護成本。實際中,需要根據具體情況來尋求一個平衡點。

二、冗餘

機器總可能會發生故障,而唯一的保證故障狀況下服務依然可用的辦法就是由多個硬件備份。備份可以分爲熱備份和冷備份,注意的區別在於數據服務是否在線,數據在線服務的同時進行的備份成爲熱備份。例如將mysql服務器關閉,然後拷貝數據文件到備份位置,則是典型的冷備份行爲。

三、負載均衡

當我們使用了水平擴展之後,我們開始考慮新的問題了,如何將大量的請求“均衡”到我們的擴展機器上呢?

兩種負載均衡模式:有狀態(如有攜帶session)和無狀態

兩種負載均衡方式:硬件均衡和軟件均衡

硬件均衡比較簡單,通常接入一個設備即可,之後的均衡和故障檢測等等都由硬件自動完成。成本較高。

軟件均衡則是通過軟件來轉發各種請求,更加容易的定義轉發規則,有較多的開源產品選擇。

第四層和第七層

經常在負載均衡中看到第四層和第七層這兩個名詞。它們實際上是指它們各自工作時所處理的網絡協議的層數(使用ISO模型)。

第四層是數據傳輸層,包括TCP和UDP,第七層則是應用層,通常web中爲HTTP應用。如Apache、nginx等支持第七層的均衡,而且可配置性都相當強大,能夠適應較複雜的應用。例如可以簡單的將流量分擔到各個負載機上,也可以定義一套業務規則,將應用劃分爲不同的池,每個池處理某些固定規則的URL。

對比軟件均衡與硬件均衡,可以發現它們各自的優缺點:

1. 硬件均衡成本比較高,軟件均衡多數可以使用免費的開源軟件來實現。

2. 硬件均衡對於故障檢測比軟件均衡更加強大、快速。在採用硬件均衡時,一旦某臺機器出現故障,馬上就可以檢測出來並立即屏蔽。

3. 硬件均衡可以快速的添加機器(接入硬件接口即可),而軟件均衡除了添加機器外還要添加一些配置信息,以將某些流量導入到新的機器。

4. 軟件均衡可以定義非常複雜的業務規則,而硬件均衡在這方面相對較弱。

5. 多數的硬件均衡方案都有捆綁附加的一些服務如HTTPS加速、DOS防火牆等等。

還有一種比較流行的方案:DNS解析。這種方式對解決用戶分佈在不同地理位置、不同網絡的情況有着相當好的效果,每個用戶都可以根據自己的網絡得到一個較快速的訪問IP。缺點也比較明顯:DNS更新緩慢,對於實時性的均衡幾乎沒有什麼作用,因爲DNS的更新往往需要一兩個小時,甚至一兩天。

四、使用緩存

使用緩存將某些實時性要求不高的服務結果緩存起來是大型應用解決方案的一個共識,合理的使用緩存將極大的改善應用體驗和性能。

常用的幾類緩存:

緩存數據:memcached memcachedb

緩存HTTP請求: squid反向代理服務器(緩存http靜態內容),varnish

發佈了29 篇原創文章 · 獲贊 19 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章