大型網站技術架構——核心原理與案例分析(二)
網站高效能架構
一、效能測試指標
1.1、響應時間
1.2、併發數 指系統能夠同時處理請求的數目,反映了系統的負載特性
1.3、吞吐量 TPS(每秒事務數) HPS(每秒HTTP請求數) QPS(每秒查詢數)等
1.4、效能計數 包括System Load、物件與執行緒數、記憶體使用、CPU使用、磁碟與網路I/O等指標
二、效能測試方法
2.1、效能測試 與初期規劃的效能指標為預期目標,不斷施加壓力,驗證是否在可接受範圍,效能是否能達到效能預期
2.2、負載測試 不斷地增加併發請求以增加系統壓力,直到系統的某項或是多項效能指標大致安全臨界值
2.3、壓力測試 超過安全負載的情況下,對系統繼續施加壓力,直到系統崩潰或不能再處理任何請求,以此獲得系統最大壓力承受能力。
2.4、穩定性測試
三、效能優化
根據網站分層架構,可分為Web前端效能優化、應用伺服器效能優化、儲存伺服器效能優化。
3.1、Web前端效能優化
3.1.1 瀏覽器訪問優化
A、減少http請求 HTTP每次都要建立通訊鏈路,進行資料傳輸,服務端,會啟動獨立的執行緒去處理,這些開銷都很昂貴,減少HTTP請求的資料目可以有效提高訪問效能。主要手段:合併CSS、合併JavaScript、合併圖片
B、使用瀏覽器快取 對靜態資原始檔可以快取在瀏覽器中,通過設定HTTP頭中的Cache-Control和Expires屬性,可以設定瀏覽器快取,針對JavaScript可以通過改變檔名實現,瀏覽器快取策略在更新靜態資源 時,應採用批量更新的方法,不宜一次全部更新
C、啟用壓縮,在伺服器端對檔案進行壓縮,在瀏覽器端對檔案解壓,一般採用GZip壓縮可達80%的壓縮率
D、CSS檔案放在頁面最上面、JavaScript放在頁面最下面(這一點深有體會)
E、減少Cookie傳輸
3.1.2 CDN加速
3.1.3 反向代理 除了安全功能、代理伺服器也可能通過配置快取功能加速Web請求
3.2 應用伺服器效能優化
3.2.1 分散式快取 快取的本質是一個記憶體Hash表,快取主要存放那些讀寫比很高、很少變化的熱資料。網站資料訪問一般遵循二八定律、即80%的訪問落在20%的資料上,將這20%的資料快取起來,可以很好的地改善系統效能。提高資料讀取速度 、降低儲存訪問壓力
使用快取時要注意快取穿透(惡意的) 目前成熟的快取產品有Memcached、Redis
3.2.2 非同步操作 任何可以晚點做的事情都應該晚點再做
3.2.3 使用叢集
3.2.4 程式碼優化
A、使用多執行緒
B、資源複用 單例 物件池
C、資料結構 如Time33可以很好的解決hash衝突
D、垃圾回收 垃圾回收可能會對系統的效能特性產生巨大影響,理解垃圾回收機制有助於程式優化和引數調優。
3.3 儲存效能優化
3.3.1 機械硬碟 VS 固態硬碟
3.3.2 B+樹 VS LSM樹
傳統機械磁碟具有快速順序讀寫、慢速隨機讀寫的訪問特性,這個特性對磁碟儲存結構和演算法的選擇影響很大。
傳統的關係型資料庫使用的是B+樹。
目前許多NoSQL採用的LSM樹
什麼是LSM樹:核心思想的核心就是放棄部分讀能力,換取寫入的最大化能力。LSM Tree ,這個概念就是結構化合並樹的意思,它的核心思路其實非常簡單,就是假定記憶體足夠大,因此不需要每次有資料更新就必須將資料寫入到磁碟中,而可以先將最新的資料駐留在磁碟中,等到積累到最後多之後,再使用歸併排序的方式將記憶體內的資料合併追加到磁碟隊尾(因為所有待排序的樹都是有序的,可以通過合併排序的方式快速合併到一起)。
3.3.3 RAID(廉價磁碟冗餘陣列) VS HDFS
RAID的技術有(以下假設有N塊磁碟)
RAID0、將資料分成N份,同時併發寫N塊磁碟,是一塊磁碟的N倍,缺點,不做備份,一塊磁碟出損壞,資料完整性被破壞
RAID1 寫入時將資料同時寫入兩塊磁碟,
RAID10 結合RAID0 RAID1 缺點 對磁碟的利用率不高
RAID3 將資料分成N-1份,併發寫入N-1塊磁碟,在第N塊磁碟記錄校驗資料,作何一塊磁碟損壞,可以利用其他N-1塊磁碟的資料修復。缺點,任何修改都會導致第N塊磁碟重寫校驗資料,N磁碟容易損壞。RAID3很少在實踐中使用
RAID5 與RAID3原理類似,但被更多使用,原因校驗資料不是寫入第N塊磁碟,而是螺旋式地寫入到所有的磁碟中,這樣校驗資料的修改被平均到所有磁碟上。
RAID6 與 RAID5類似,但是資料只寫入N-2塊磁碟,並螺旋式地在兩塊磁碟中寫入校驗資訊
HDFS,以塊為單位管理檔案,當應用程式寫檔案時,每寫完一個Block,HDFS就將其自動複製到另外兩臺機器上,保證每個Block有三個副本。
HDFS兩個重要的伺服器角色NameNode(只部署一個)、DataNode
效能優化的最終目的是改善使用者體驗,讓他們感覺網站很高。
相關文章
- 大型網站技術架構——核心原理與案例分析(一)網站架構
- 大型網站技術架構:核心原理與案例分析筆記網站架構筆記
- 《大型網站技術架構核心原理與案例分析》讀書筆記(二)網站架構筆記
- 《大型網站技術架構:核心原理與案例分析》讀書筆記網站架構筆記
- 《大型網站技術架構:核心原理與案例分析》讀書筆記系列網站架構筆記
- 《大型網站技術架構:核心原理與案例分析》讀書筆記 - 第4篇 架構師(附 大型網站架構技術一覽)網站架構筆記
- 《大型網站技術架構:核心原理與案例分析》讀書筆記 - 第2篇 架構網站架構筆記
- 《大型網站技術架構:核心原理與案例分析》讀書筆記 - 第3篇 案例網站架構筆記
- 大型網站技術架構核心原理(1)網站架構
- 《大型網站技術架構:核心原理與案例分析》讀書筆記 - 第1篇 概述網站架構筆記
- 大型網站技術架構(二)--大型網站架構演化網站架構
- 大型網站技術架構(四)--核心架構要素網站架構
- 大型網站技術架構(二)--架構模式網站架構模式
- 大型網站技術架構(三)--架構核心要素網站架構
- 大型網站技術架構(一)--大型網站架構演化網站架構
- 大型網站技術架構(三)--架構模式網站架構模式
- 大型網站技術架構——2. 網站架構模式網站架構模式
- 大型網站技術架構(五)--網站高可用架構網站架構
- 大型網站架構利器-CDN技術網站架構
- 大型網站架構技術一覽網站架構
- 大型網站技術架構(八)--網站的安全架構網站架構
- 大型網站架構系列:電商網站架構案例(1)網站架構
- 大型網站架構系列:電商網站架構案例(2)網站架構
- 大型網站架構系列:電商網站架構案例(3)網站架構
- 大型網站技術架構(四)--網站的高效能架構網站架構
- 大型網站技術架構(六)--網站的伸縮性架構網站架構
- 一張圖看懂大型網站技術架構網站架構
- 大型網站技術架構-入門梳理網站架構
- 大型網站技術架構的演進網站架構
- 讀書筆記-大型網站技術架構筆記網站架構
- 《大型網站技術架構》讀書筆記網站架構筆記
- 大型分散式網站架構技術總結分散式網站架構
- 大型網站技術架構(七)--網站的可擴充套件性架構網站架構套件
- 大型網站的技術架構演進過程網站架構
- 乾貨 | 大型網站專案架構技術一覽網站架構
- 大型WEB網站架構深入分析Web網站架構
- 大型網站架構網站架構
- 網站技術架構網站架構