網站高性能架構設計

包含兩部分:

1.前端性能
其本質就是通過各種技術手段去優化用戶實際感受到的前端頁面展現時間。

前端性能優化的方法是相對標準的,工具如PageSpeed、Yslow等,都能系統性地分析前端的性能問題,並給出對應的解決方案建議。

2.後端性能
01:後端服務器的高性能架構,業內採用的最主要的技術手段是緩存。
02:集羣,也可以從計算能力的角度,提升後端的處理性能。

緩存:
凡是想要提高性能的場合都會使用到緩存的思想。
如果緩存中的數據是經過複雜計算得到的,那麼再次使用被緩存的數據時,就無需再重複計算即可直接使用。從這個意義上講,緩存還具有降低後端運算負載的作用。

啓用了緩存後,當應用程序需要讀取數據時,會先試圖從緩存中讀取:
如果讀取成功,即緩存命中,可以在很大程度上降低訪問數據庫的時間開銷。
如果沒有讀取到數據或者緩存中的數據已經過期失效,那麼應用程序就會訪問數據庫去獲取相應的數據。獲取到數據後,在把數據返回給應用程序的同時,還會把該數據寫入到緩存中,以備下次使用。

緩存主要用來存儲那些相對變化較少,並且遵從“二八原則”的數據。
這裏的“二八原則”指的是 80% 的數據訪問會集中在 20%的數據上。
緩存技術並不適用於那些需要頻繁修改的數據

緩存的作用是輔助提升數據的讀取性能,即便緩存丟失或者過期失效,不影響系統的可用,但可能會因爲在短時間內帶來很大的訪問壓力使數據庫宕機,如果出現這種情況,可以使用緩存熱備技術,把緩存切換到熱備的緩存服務器上。
另外,如果採用的是分佈式緩存服務器集羣,那麼緩存被分佈到不同的服務器上,即便一臺宕機,也只會丟失一部分緩存數據,通過數據庫來重建這些緩存的開銷也不至於太大。

分佈式緩存架構的主流技術方案:
JBoss Cache
Memcached ------主流

-------有關緩存的測試設計
001:對於前端,需要考慮緩存命中、不命中的的頁面加載時間
002:緩存過期,會重新從數據庫獲取數據,並重建緩存
003:由於重啓,導致緩存丟失的場景,會重新讀取數據庫的數據,重建緩存
004:經常會遇到緩存髒數據,即數據庫的數據已更新,但緩存還沒更新
005:緩存穿透,訪問的數據並不存在,所以這些數據永遠不會被緩存,所以會一直訪問數據庫
006:系統冷啓動後,在系統預熱階段,數據庫的訪問壓力是否會超過數據庫的實際承受能力
007:對於分佈式緩存集羣,如果要增加更多節點進行擴容,是否會對原有的緩存數據產生影響?
008:針對架構中不同的位置使用的緩存,做不同的測試設計。

集羣:
----------牲口模式
負載均衡器接收外部請求,根據算法,把請求分配到集羣中的某臺
其中一臺宕機也沒關係
可以隨時撤掉某臺機器
如果不夠的話可以再進行擴容

----------寵物模式
不通過集羣,而是性能強勁的服務器

-------有關集羣的測試設計
001:如果擴容,是否會對原有的session產生影響
002:當其中一個機器或者多個宕機時,對用戶的影響
003:對於無狀態的應用,系統的吞吐量,是否會隨着集羣中節點的數量呈線性增長
004:負載均衡的算法是否符合預期
005:集羣中的機器宕機後再恢復,是否產生負面影響
006:高併發時,集羣能夠承載的最大容量

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章