殷 翔
(中國電信武漢分公司,湖北 武漢430070)
Web協(xié)議屬于Chatty(繁瑣)協(xié)議,一個簡單的用戶請求可能需要多次信息的往返傳遞并且Web應用承載的內容越來越豐富,不但包括文本、圖像甚至包括了語音和視頻內容,與此同時用戶群體擴大,使用訪問量不斷增長,后臺server的訪問壓力也越來越大。
越來越多的Web應用的訪問是通過廣域網(wǎng)而非最初的局域網(wǎng),這樣更豐富的內容需求和用戶業(yè)務訪問的遠程化產(chǎn)生了越來越激烈的矛盾,造成用戶訪問的緩慢,延時過大,嚴重影響了用戶的訪問體驗。
綜上所述,基于 Web的應用加速需求越來越強烈,傳統(tǒng)的提升訪問速度的技術,如帶寬管理、擴充帶寬等手段無法真正解決用戶端所處訪問環(huán)境的問題。用戶急需一種真正有效的Web應用加速技術。
1.2.1 訪問時間都花在哪兒了
在試圖進行Web加速之前,有必要先了解在一個完整的Web瀏覽過程中,影響訪問速度的關鍵因素在哪里?用戶瀏覽的等待時間都花在哪里了?
讀取html代碼只占了整個響應時間中的5%,剩下的95%的時間都用于網(wǎng)頁的object(頁面元素)內容的下載。因此如何解決這些占用時間超過80%的頁面元素的快速下載問題是實現(xiàn)Web加速的關鍵所在。
1.2.2 Web加速關鍵技術介紹
(1)減少HTTP請求次數(shù)
80%的最終用戶響應時間花在前端程序上,而其大部分時間則花在各種頁面元素,如圖像、樣式表、腳本和Flash等的下載上。減少頁面元素將會減少HTTP請求次數(shù)。這是快速顯示頁面的關鍵所在。通過使用Expires header,您可以在客戶端緩存這些元素。這在后續(xù)訪問中避免了不必要的HTTP請求。
(2)壓縮頁面元素,減少帶寬占用
通過壓縮HTTP響應內容可減少頁面響應時間。Web客戶端在HTTP請求中通過Accept-Encoding頭來表明支持的壓縮類型,如:Accept-Encoding:gzip,deflate。如果 Web server檢查到 Accept-Encoding頭,它會使用客戶端支持的方法來壓縮HTTP響應,會 設 置 Content-Encoding 頭,如:Content-Encoding:gzip。通過Gzip,內容一般可減少70%。Web server根據(jù)文件類型來決定是否壓縮。因此,對盡量多的文件類型進行壓縮是一種減少頁面大小和提高用戶體驗的簡便方法。
(3)使用 CDN(Content Delivery Network,內容分發(fā)網(wǎng)絡)技術
用戶離 Web server的遠近對響應時間也有很大影響。從用戶角度看,把內容部署到多個地理位置分散的服務器上將有效提高頁面裝載速度。但是該從哪里開始呢?
作為實現(xiàn)內容地理分布的第一步,不要試圖重構Web應用以適應分布架構。改變架構將導致多個周期性任務,如同步session狀態(tài),在多個server之間復制數(shù)據(jù)庫交易。這樣縮短用戶與內容距離的嘗試可能被應用架構改版所延遲,或阻止。我們還記得80%~90%的最終用戶響應時間花在下載頁面中的各種元素上,如圖像文件、樣式表、腳本和Flash等。與其花在重構系統(tǒng)這個困難的任務上,還不如先分布靜態(tài)內容。這不僅能大大減少響應時間,而且由于CDN的存在,分布靜態(tài)內容非常容易實現(xiàn)。CDN是地理上分布的Web server的集合,用于更高效地發(fā)布內容。通?;诰W(wǎng)絡遠近來選擇給具體用戶服務的Web server。
根據(jù)一些大型網(wǎng)站采用CDN技術的實際經(jīng)驗,把靜態(tài)內容分布到CDN減少了20%用戶影響時間或更多,可以有效地提高網(wǎng)站的速度。
F5 Web應用加速控制器(簡稱 WA,即:Web Accelerator)可以無需改變現(xiàn)有網(wǎng)絡結構,無需改變服務器及應用配置,即可靈活的添加到現(xiàn)有網(wǎng)絡中,如圖1所示。F5可以從三個方面提供加速,分別是網(wǎng)絡加速、服務器加速、應用加速。
圖1 F5 Web應用加速控制器
2.1.1 TCP連接優(yōu)化
BIG-IP可提供廣泛的TCP連接優(yōu)化功能,如:擁塞通知、有選擇的ACK回應、增強TCP丟包的恢復能力等,減少TCP連接過程中無用的消耗,提升網(wǎng)絡傳輸?shù)男阅堋?/p>
2.1.2 智能客戶端緩存
WA最為突出的功能是客戶端緩存的功能。WA的工作機制主要是通過控制客戶端的瀏覽器行為來達到加速的目的,也就是說通過控制瀏覽器將服務器返回的靜態(tài)內容緩存在客戶端本地,減少通過網(wǎng)絡傳輸?shù)牧髁啃枨髲亩_到提高應用響應速度的目的。
2.1.3 動態(tài)內容緩存
WA可以將看似動態(tài)的不變數(shù)據(jù)(包括查詢參數(shù),etag,會話ID),而實則是靜態(tài)的,或者是可識別的數(shù)據(jù)進行緩存。Web Accelerator可以從動態(tài)網(wǎng)絡應用中高速緩存更高比例的數(shù)據(jù),并保持真正的動態(tài)應用行為不受干擾。實現(xiàn)這些功能主要通過全面檢查HTTP請求、控制高速緩存狀態(tài)以及動態(tài)調整高速緩存的數(shù)據(jù)。
2.2.1 服務器負載均衡
WA可以提供服務器負載均衡功能,實現(xiàn)多臺后臺服務器并行工作,提升處理速度。且當其中一臺服務器出現(xiàn)故障時,自動將請求導向其它服務器,確保業(yè)務隨時可以訪問。
2.2.2 連接優(yōu)化
F5的one connect連接復用功能,可減少一個單一客戶所產(chǎn)生的數(shù)十個甚至數(shù)百個TCP session,同時在一個單一的session中進行Web瀏覽,這就極大限度地減少了網(wǎng)絡流量。根據(jù)測試的流量類型和客戶數(shù),在Web服務器上所產(chǎn)生的改進可達2~50倍。
2.3.1 SSL加速
加密套接(SecureSocket)層交易的廣泛采用和總體網(wǎng)絡負載減緩了服務器的執(zhí)行速度,要求SSL交易加速。電子商務業(yè)務是基于互聯(lián)網(wǎng)進行的。每筆進入數(shù)據(jù)中心的交易均進行了SSL加密處理。F5 WA內置的SSL加速芯片,可把服務器的CPU從繁重的加密與解密處理負荷中解放出來,從而將寶貴的資源歸還給服務器群。
2.3.2 多線程連接
在正常情況下,瀏覽器對于每一個域名或者IP的訪問,只能打開兩個連接并行處理所有的HTTP請求。在一個界面友好的Web頁面上,通常包含有幾十個Object,這些Object的請求都需要在這兩個連接中進行,并且由于HTTP的Request-Response機制,導致了用戶必須在兩個連接中等待所有的Object請求結束。F5可以通過自動添加子域名的方式,將用戶的并發(fā)連接數(shù)量提升,加快內容的訪問。
通過WA的Express Connects技術,可以將這些Object進行分組,使瀏覽器發(fā)起多個并行的連接進行請求,就像是通過FlashGet等并行下載軟件,可以完全的使用網(wǎng)絡帶寬來進行內容下載。
2.3.3 HTTP壓縮
針對一些無法緩存在客戶端本地,而需要通過網(wǎng)絡到后臺服務器讀取的內容,可通過之前介紹的HTTP壓縮的方法對傳輸內容進行壓縮,進一步減少由于內容更新需要而對網(wǎng)絡帶寬的需求。WA可以與瀏覽器協(xié)商采用gzip或deflate兩種壓縮算法,對傳輸?shù)臄?shù)據(jù)進行壓縮,減少數(shù)據(jù)的傳輸量。在文本量較大的網(wǎng)站,HTTP壓縮可以獲得整體50%以上的流量減小量,同時大幅度提高了客戶端的訪問量。
本文從應用、架構、專業(yè)產(chǎn)品三個層面梳理了Web應用性能的解決之道,特別是詳細介紹了F5 Web應用加速控制器,供Web開發(fā)人員、系統(tǒng)架構人員參考。
[1] Ilya Grigorik(加).Web性能權威指南[M].北京:人民郵電出版社,2002.
[2] 梁 潔,陳 戈,莊一嶸.內容分發(fā)網(wǎng)絡(cdn)關鍵技術、架構與應用[M].北京:人民郵電出版社,2013.
[3] Peter Membrey(英),David Hows(澳),Eelco Plugge(荷).實用負載均衡技術:網(wǎng)站性能優(yōu)化攻略 [M].北京:人民郵電出版社,2013.