新浪研發(fā)平臺主管聯(lián)手打造!構(gòu)建高性能Web站點寶典
前言
在本書中我們不僅從其對性能影響的角度來深入探討,同時還會適當(dāng)?shù)厣婕伴_發(fā)、調(diào)試以及可擴展性。對于Web站點的可擴展性討論已經(jīng)屢見不鮮了,不論是代碼層面的擴展,還是架構(gòu)層面的擴展,涉及的內(nèi)容非常多,究竟我們應(yīng)該從何談起呢?這是一個值得深思的問題。缺乏良好的可擴展性設(shè)計就像慢性自殺或者等待死亡,這甚至比Web 站點所能遇到的其他一切困難更讓人頭疼,因為擴展對于我們來說,就像在山窮水盡的時候被指引了一條星光大道,一旦擴展都無法進行,那真是死路一條。
有需要領(lǐng)取資料的可后臺私信扣【666】免費領(lǐng)取
數(shù)據(jù)的網(wǎng)絡(luò)傳輸
關(guān)于網(wǎng)絡(luò)模型的闡述,許多參考書中都有涉及,普遍采用OSI七層網(wǎng)絡(luò)模型或TCP 四層網(wǎng)絡(luò)模型展開介紹,所以在這里我們不打算重復(fù)羅列這些內(nèi)容,而是希望探討網(wǎng)絡(luò)模型中一些細(xì)節(jié)的本質(zhì)和實現(xiàn),尤其是數(shù)據(jù)傳輸比較低層的實現(xiàn),包括分組交換、流量控制、數(shù)據(jù)轉(zhuǎn)發(fā)等,以便對大家理解本書后續(xù)章節(jié)有所幫助。

服務(wù)器并發(fā)處理能力
人們總是希望少花錢多辦事,同樣的,一臺Web服務(wù)器在單位時間內(nèi)能處理的請求越多越好,這也成了Web服務(wù)器的能力高低所在,它體現(xiàn)了我們常說的“服務(wù)器并發(fā)處理能力”。值得一提的是,本章所說的服務(wù)器,主要指用于提供 HTTP 服務(wù)的服務(wù)器,但是本章中所涉及的一些關(guān)于操作系統(tǒng)和內(nèi)核的內(nèi)容,并不局限于Web服務(wù)器。


動態(tài)內(nèi)容緩存
我們的目光曾經(jīng)聚焦在Web服務(wù)器本身,改進I/O模型和并發(fā)策略帶來的性能提升讓我們激動不已,然而,我們的生活變幻萬千,絕不像靜態(tài)文件那樣如此單調(diào),Web站點更多的是提供動態(tài)內(nèi)容,比如動態(tài)網(wǎng)頁、動態(tài)圖片,Web服務(wù)等,它們通常在 Web服務(wù)器端進行計算,生成HTML,并返回給用戶。與此同時,它們在生成HTML的過程中,不可避免涉及了更多的CPU計算和I/O操作,這已經(jīng)超出了Web服務(wù)器本身,比如訪問數(shù)據(jù)庫涉及數(shù)據(jù)庫服務(wù)器的CPU計算和磁盤IO操作,以及與數(shù)據(jù)庫服務(wù)器通信的網(wǎng)絡(luò)LO操作,同樣的情況也發(fā)生在調(diào)用Web API,比如通過 twitter API獲取資料。


動態(tài)腳本加速
通過為動態(tài)內(nèi)容的計算結(jié)果生成緩存,我們達到了一定的目的,那就是最大程度地跳過動態(tài)內(nèi)容計算。然而,除非靜態(tài)化訪問,否則完全跳過動態(tài)內(nèi)容的計算是不可能的,通過前面的介紹,我們知道加載緩存仍然需要動態(tài)腳本的運行,那么,為了提高動態(tài)內(nèi)容的處理速度,我們還能做些什么呢?


瀏覽器緩存


Web 服務(wù)器緩存
前面我們討論過了動態(tài)內(nèi)容緩存和靜態(tài)化,基本上都是通過動態(tài)程序自身來實現(xiàn)緩存機制,包括緩存持久化、過期檢查、緩存更新等。是否可以讓 Web 服務(wù)器自己實現(xiàn)緩存機制呢?的確,Web服務(wù)器是應(yīng)該站出來做點什么了…··…-


反向代理緩存
在前面的章節(jié)中,我們曾經(jīng)多次提到反向代理服務(wù)器,這一章我們就來看個究竟,幸運的是,有了前面對瀏覽器緩存和 Web服務(wù)器緩存的了解后,你將會很容易地熟悉反向代理以及它的緩存機制。


Web組件分離


分布式緩存
說到緩存,你已經(jīng)非常熟悉了,我們前面曾經(jīng)探討了有關(guān)動態(tài)內(nèi)容的各種緩存,但基本上都是基于頁面緩存,或者整體緩存,比如緩存整個動態(tài)圖片。無論如何,它們的目的都在于避免重復(fù)的慢速計算,比如數(shù)據(jù)庫訪問。但是在有些時候,使用頁面緩存顯得尤為笨重,這可能來自于以下幾個原因:
一個網(wǎng)頁中不同區(qū)域的內(nèi)容,自身更新頻率和呈現(xiàn)及時度要求各不相同,如果為了遷就頻繁更新的區(qū)域,而使整個頁面頻繁重建緩存,則影響整體吞吐率。
即便是采用局部動態(tài)緩存,如果局部區(qū)域過多,則會使得頁面結(jié)構(gòu)過于復(fù)雜,而且整合各個局部頁面也存在不小的開銷。
有些計算是無法作為頁面來緩存的,比如有些動態(tài)內(nèi)容中需要獲取用戶的登錄狀態(tài),并根據(jù)不同用戶呈現(xiàn)不同的內(nèi)容。
·這些頁面緩存都只是提高了讀數(shù)據(jù)的速度,并沒有提高寫數(shù)據(jù)的速度。


數(shù)據(jù)庫性能優(yōu)化


Web負(fù)載均衡


共享文件系統(tǒng)


內(nèi)容分發(fā)和同步


分布式文件系統(tǒng)


數(shù)據(jù)庫擴展


分布式計算


性能監(jiān)控


有需要領(lǐng)取資料的可后臺私信666免費領(lǐng)取