天天看點

大型網站技術架構——核心原理與案例分析(二)網站高性能架構性能優化的最終目的是改善使用者體驗,讓他們感覺網站很高。

<b>一、性能測試名額 </b>

1.1、響應時間

1.2、并發數   指系統能夠同時處理請求的數目,反映了系統的負載特性

1.3、吞吐量  TPS(每秒事務數) HPS(每秒HTTP請求數) QPS(每秒查詢數)等

1.4、性能計數  包括System Load、對象與線程數、記憶體使用、CPU使用、磁盤與網絡I/O等名額

<b>二、性能測試方法</b>

2.1、性能測試 與初期規劃的性能名額為預期目标,不斷施加壓力,驗證是否在可接受範圍,性能是否能達到性能預期

2.2、負載測試  不斷地增加并發請求以增加系統壓力,直到系統的某項或是多項性能名額大緻安全臨界值

2.3、壓力測試   超過安全負載的情況下,對系統繼續施加壓力,直到系統崩潰或不能再處理任何請求,以此獲得系統最大壓力承受能力。

2.4、穩定性測試

<b>三、性能優化</b>

  根據網站分層架構,可分為Web前端性能優化、應用伺服器性能優化、存儲伺服器性能優化。

<b>3.1、Web前端性能優化</b>

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請求

<b>3.2 應用伺服器性能優化</b>

3.2.1 分布式緩存  緩存的本質是一個記憶體Hash表,緩存主要存放那些讀寫比很高、很少變化的熱資料。網站資料通路一般遵循二八定律、即80%的通路落在20%的資料上,将這20%的資料緩存起來,可以很好的地改善系統性能。提高資料讀取速度 、降低存儲通路壓力

使用緩存時要注意緩存穿透(惡意的) 目前成熟的緩存産品有Memcached、Redis

3.2.2 異步操作   任何可以晚點做的事情都應該晚點再做

3.2.3 使用叢集

3.2.4 代碼優化 

    A、使用多線程

    B、資源複用 單例  對象池

   C、資料結構  如Time33可以很好的解決hash沖突

   D、垃圾回收  垃圾回收可能會對系統的性能特性産生巨大影響,了解垃圾回收機制有助于程式優化和參數調優。

<b>3.3 存儲性能優化  </b>

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

繼續閱讀