構建高性能Web站點-9.Web組件分離

如下內容爲《構建高性能Web站點》的讀書筆記web

因材施教

根據Web組件的來分析Web組件的差別數據庫

  • 文件大小後端

  • 文件數量api

  • 內容更新的頻率瀏覽器

  • 預計併發的用戶數緩存

  • 是否須要腳本解釋器服務器

  • 是否涉及大量CPU計算cookie

  • 是否訪問數據庫併發

  • 訪問數據庫的主要操做是讀仍是寫負載均衡

  • 是否包含遠程調用(RPC)

對應的優化方法

  • 是否使用epoll模型

  • 是否使用sendfile()系統調用

  • 是否使用異步I/O

  • 是否支持HTTP持久鏈接(HTTP Keep-alive)

  • 是否須要支持opcode緩存

  • 是否使用動態內容緩存以及有效期爲多長

  • 是否使用Web服務器緩存以及有效期爲多長

  • 是否使用瀏覽器緩存以及有效期爲多長

  • 是否使用反向代理緩存以及有效期爲多長

  • 是否使用負載均衡策略

Web組件的分離的目的是便於採起針對性的最佳優化方案,是的Web組件可以充分利用服務器資源,達到符合各自實際狀況的吞吐率最大化(單位時間內的處理請求數,通常指每秒處理的請求權數)

組件擁有本身的域名

分離前
www.demo.com

分離後
images.demo.com
upload.demo.com
static.demo.com
js.demo.com
。。。

小問題

在對分離後的組件進行請求時,會把www.demo.com也帶上,對於這個有兩種解決方法

  • 限制cookies頂級域名只對主機域名服務

  • 使用頂級域名來指向web組件,例如:www.img-demo.com,保存了demo.com的全部圖片資料

同時,使用上面的第二種解決方案,順帶解決了瀏覽器併發請求同一域名站點的請求數限制。參見下表格。

瀏覽器 HTTP /1.1 HTTP /1.0
IE 6,7 2 4
IE 8 6 6
Firefox 2 2 8
Firefox 3 6 6
Chomre 1,2 6 -

動態內容

  • 開啓opcode動態緩存

  • 足夠快的CPU(例如使用多核CPU)

  • 大的內存(內存不大,會使用swap空間,與硬盤之間頻繁複制數據)

  • 多進程(多實例web進程或者fastcgi進程)

  • 與數據庫保持高速鏈接(單機使用unix socket鏈接,多機只能經過TCP進行鏈接,跨機房創建DDN專線)

  • 可靠的數據中心

動態內容放在反向代理的後端,而且對一些動態內容進行了反向代理的緩存。

若是是使用web api的話,則能夠單獨設置域名,例如:api.demo.com,部署在反向代理後端以外,此時的數據不會被反向代理緩存

同時分離代理的好處

  • 域名更具備可讀性,用戶容易記憶

  • 有利於服務獨立統計

  • 有利於服務獨立擴展,該處涉及dns的負載輪詢

同時壓力小的時候,能夠把全部域名指向一臺服務器,靜態內容再分發到其餘服務器上

靜態網頁

  • 支持epoll

  • 非阻塞I/O

  • 異步I/O

  • sendfile()系統調用

  • 單進程

  • 使用Raid分區

  • 足夠大的帶寬

圖片和樣式表和Javascript

開啓Web服務器的keep-alive,設置Expires過時時間,避免重複的請求開銷

相關文章
相關標籤/搜索