大型網(wǎng)站技術架構——核心原理與案例分析(二)

網(wǎng)站高性能架構

一、性能測試指標?

1.1、響應時間

1.2、并發(fā)數(shù) ? 指系統(tǒng)能夠同時處理請求的數(shù)目,反映了系統(tǒng)的負載特性

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

1.4、性能計數(shù) ?包括System Load、對象與線程數(shù)、內(nèi)存使用、CPU使用、磁盤與網(wǎng)絡I/O等指標

二、性能測試方法

2.1、性能測試 與初期規(guī)劃的性能指標為預期目標,不斷施加壓力,驗證是否在可接受范圍,性能是否能達到性能預期

2.2、負載測試 ?不斷地增加并發(fā)請求以增加系統(tǒng)壓力,直到系統(tǒng)的某項或是多項性能指標大致安全臨界值

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

2.4、穩(wěn)定性測試

三、性能優(yōu)化

? 根據(jù)網(wǎng)站分層架構,可分為Web前端性能優(yōu)化、應用服務器性能優(yōu)化、存儲服務器性能優(yōu)化。

3.1、Web前端性能優(yōu)化

3.1.1 瀏覽器訪問優(yōu)化

A、減少http請求 ?HTTP每次都要建立通信鏈路,進行數(shù)據(jù)傳輸,服務端,會啟動獨立的線程去處理,這些開銷都很昂貴,減少HTTP請求的數(shù)據(jù)目可以有效提高訪問性能。主要手段:合并CSS、合并JavaScript、合并圖片

B、使用瀏覽器緩存 對靜態(tài)資源文件可以緩存在瀏覽器中,通過設置HTTP頭中的Cache-Control和Expires屬性,可以設置瀏覽器緩存,針對JavaScript可以通過改變文件名實現(xiàn),瀏覽器緩存策略在更新靜態(tài)資源 時,應采用批量更新的方法,不宜一次全部更新

C、啟用壓縮,在服務器端對文件進行壓縮,在瀏覽器端對文件解壓,一般采用GZip壓縮可達80%的壓縮率

D、CSS文件放在頁面最上面、JavaScript放在頁面最下面(這一點深有體會)

E、減少Cookie傳輸

3.1.2 CDN加速

3.1.3 反向代理 除了安全功能、代理服務器也可能通過配置緩存功能加速Web請求

3.2 應用服務器性能優(yōu)化

3.2.1 分布式緩存 ?緩存的本質是一個內(nèi)存Hash表,緩存主要存放那些讀寫比很高、很少變化的熱數(shù)據(jù)。網(wǎng)站數(shù)據(jù)訪問一般遵循二八定律、即80%的訪問落在20%的數(shù)據(jù)上,將這20%的數(shù)據(jù)緩存起來,可以很好的地改善系統(tǒng)性能。提高數(shù)據(jù)讀取速度 、降低存儲訪問壓力

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

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

3.2.3 使用集群

3.2.4 代碼優(yōu)化?

? ? A、使用多線程

? ? B、資源復用 單例 ?對象池

? ?C、數(shù)據(jù)結構 ?如Time33可以很好的解決hash沖突

? ?D、垃圾回收 ?垃圾回收可能會對系統(tǒng)的性能特性產(chǎn)生巨大影響,理解垃圾回收機制有助于程序優(yōu)化和參數(shù)調(diào)優(yōu)。

3.3 存儲性能優(yōu)化 ?

3.3.1 機械硬盤 VS 固態(tài)硬盤?

3.3.2 B+樹 VS LSM樹

? ? ? ?傳統(tǒng)機械磁盤具有快速順序讀寫、慢速隨機讀寫的訪問特性,這個特性對磁盤存儲結構和算法的選擇影響很大。

? ? ? ?傳統(tǒng)的關系型數(shù)據(jù)庫使用的是B+樹。

? ? ? ?目前許多NoSQL采用的LSM樹

什么是LSM樹:核心思想的核心就是放棄部分讀能力,換取寫入的最大化能力。LSM Tree ,這個概念就是結構化合并樹的意思,它的核心思路其實非常簡單,就是假定內(nèi)存足夠大,因此不需要每次有數(shù)據(jù)更新就必須將數(shù)據(jù)寫入到磁盤中,而可以先將最新的數(shù)據(jù)駐留在磁盤中,等到積累到最后多之后,再使用歸并排序的方式將內(nèi)存內(nèi)的數(shù)據(jù)合并追加到磁盤隊尾(因為所有待排序的樹都是有序的,可以通過合并排序的方式快速合并到一起)。

3.3.3 RAID(廉價磁盤冗余陣列) VS HDFS

RAID的技術有(以下假設有N塊磁盤)

RAID0、將數(shù)據(jù)分成N份,同時并發(fā)寫N塊磁盤,是一塊磁盤的N倍,缺點,不做備份,一塊磁盤出損壞,數(shù)據(jù)完整性被破壞

RAID1 寫入時將數(shù)據(jù)同時寫入兩塊磁盤,

RAID10 結合RAID0 RAID1 缺點 對磁盤的利用率不高

RAID3 將數(shù)據(jù)分成N-1份,并發(fā)寫入N-1塊磁盤,在第N塊磁盤記錄校驗數(shù)據(jù),作何一塊磁盤損壞,可以利用其他N-1塊磁盤的數(shù)據(jù)修復。缺點,任何修改都會導致第N塊磁盤重寫校驗數(shù)據(jù),N磁盤容易損壞。RAID3很少在實踐中使用

RAID5 與RAID3原理類似,但被更多使用,原因校驗數(shù)據(jù)不是寫入第N塊磁盤,而是螺旋式地寫入到所有的磁盤中,這樣校驗數(shù)據(jù)的修改被平均到所有磁盤上。

RAID6 與 RAID5類似,但是數(shù)據(jù)只寫入N-2塊磁盤,并螺旋式地在兩塊磁盤中寫入校驗信息


HDFS,以塊為單位管理文件,當應用程序寫文件時,每寫完一個Block,HDFS就將其自動復制到另外兩臺機器上,保證每個Block有三個副本。

HDFS兩個重要的服務器角色NameNode(只部署一個)、DataNode


性能優(yōu)化的最終目的是改善用戶體驗,讓他們感覺網(wǎng)站很高。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容