用戶體驗能給網站帶來更多的收益,所以人們也投入了更多精力去研究它。用戶體驗中,除了好的交互,精美的界面,用戶感知的「速度」也是重要的一環。從網絡角度來講,時延(latency)和帶寬(bindwidth)是決定「速度」的重要環節。
不一樣的應用對時延和帶寬需求的側重點每每不一樣:
網絡遊戲須要更低的時延。在一些對抗激烈的FPS、MOBA類的遊戲中,單次數據傳輸的量並不大,所以帶寬要求不高。可是若你頂着延遲和別人進行對抗,那麼這局比賽可能已經輸了一半;
流媒體須要更高的帶寬。高速帶寬能讓你觀看高清電影,而延時就顯得不那麼重要,帶來問題無非是在加載前等待一段時間罷了;
視頻聊天須要更低的時延。更低的時延意味着你能看到更流暢的實時畫面,而不會掉幀。也許只有當你想要切換更高清晰度的時候才須要選擇更高的帶寬。
瀏覽網頁須要更低的時延。由於沒人願意在一個空白頁面上花上幾秒鐘。更高的帶寬經常可有可無,除非你須要流量高分辨率的圖片或者高清的視頻。性能優化
2.1.糖果包裝問題服務器
某廠某天生產了N顆糖果,須要進行包裝和驗收。流水線一端的工人A負責包裝,包裝速度爲N1顆/小時,另外一端B的驗收速度爲N2顆/小時,二者經過協調達成某一相同的速度MIN(N1,N2)顆/小時。經過傳送帶傳送到目的地。傳送帶長L米,速度爲V 米/小時。從A開始計時到B驗收完成,所需時間T爲多少?
答:T = L / V + N / MIN(N1,N2) + 1 / MIN(N1,N2)
時間T反映了完成糖果包裝並驗收完成的總時間。若是糖果想象成能夠須要傳輸的文件,那麼就能夠把糖果包裝問題轉換爲一個簡化的網絡傳輸問題。
假設服務器A向用戶B發送一個大小爲100KB的圖片(假設HTTP鏈接已經創建),服務器上行帶寬爲1Mbps,用戶所在下行帶寬爲100Mbps。已知端對端物理距離爲2000 km,光信號在光纖中的傳播速度是200000 km/s,求圖片從A發出到B完整接收的時間T。代入公式可得: T = 2000/200 + 100 * 8 / 1 = 810 ms(最後一項過小能夠被忽略)
這個時間就是時延,具體的說是單向時延,即一個數據文件從傳輸到完整接收所花費的時間。
2.2.時延是什麼網絡
2.1中圖片傳輸的時間叫作時延。時延並無一個確切的定義。多數狀況下是指單向時延,就是在數據通訊過程當中從A發送數據的第一個比特開始到B接受到數據的最後一個比特爲結束產生的時間消耗,在某些場景下也指雙向時延,即從網絡請求發出到收到完整響應爲結束經歷的時間。時延常以毫秒爲單位來衡量。數據包的大小、鏈路上傳下行速率、通訊距離、通訊介質的種類、路由器的處理能力都會影響時延。常說的時延是下列這些不一樣時延的總和:
傳播時延。信號在信道中傳輸的時間=通訊距離/傳播速度。
處理時延。路由器路由、差錯控制以及數據包頭信息處理的時間。
隊列時延。數據包在隊列中等待路由器處理的時間。
發送時延。將數據包發送到信道中的時間=數據包大小/信道帶寬。
減小時延每每比增長帶寬須要更多的成本。2015年9月,Hibernia網絡公司爲了最大程度上確保紐約和倫敦的通訊延時,部署了一條名爲「Hibernia Express」的海底光纜,總計耗費達3億美圓。採用新光纜以後,紐約倫敦兩地的延時爲58.95ms,比現存的全部大西洋光纜少了5ms。這意味着節約的每1毫秒,價值近6千萬美圓。
2.3.帶寬是什麼性能
帶寬是指數據通訊最大的吞吐量,根據傳輸方向的不一樣能夠分爲上行帶寬和下行帶寬,經常使用Mbps來進行衡量。對於互聯網上的用戶,運營商(ISP)提供的帶寬就是數據通訊的最大吞吐量,而且上下行帶寬每每不對稱。如中國電信百兆寬帶最大下行速度爲100Mbps,而最大上行速度只有20Mbps。
通常來講,核心網絡(如海底光纜)的帶寬每每能夠達到幾百Tbps。而終端用戶實際可用的帶寬,每每是網絡服務所在服務器的上行帶寬與用戶下行帶寬的最小值。
若某一網站部署在上行帶寬爲1Mbps服務器上,那麼即便訪問者擁有100Mbps的下行帶寬,用戶仍然只能以1Mbps的速度下載網頁上的內容。
2.4.聯繫與區別優化
對終端用戶而言,延時能夠理解爲某一網絡服務的響應速度,而帶寬能夠理解爲上傳下載文件的最大速度,而實際可用的帶寬,每每又是由網絡服務所在服務器的上行帶寬與用戶下行帶寬的最小值所決定。
以瀏覽網頁爲例子,若響應速度快,用戶實際可用的帶寬(見2.3節的定義)小,就可能致使頁面上的圖片以肉眼可見的速度一點點顯示出來;若響應速度慢,用戶實際可用的帶寬大,就可能致使頁面上的內容須要等待好久纔能有顯示,在此以前都是空白。可是當響應完成,會當即顯示網頁內容。
有人說帶寬和時延沒有關係,這句話是有問題的。由於在2.2節中介紹了發送延時,它一般由服務器的上行帶寬與用戶下行帶寬的最小值所決定。準確的說是,目前現實場景中大部分的時延不是由帶寬決定,而每每是由傳播距離、網絡情況等所決定。
3.性能優化網站
瞭解了帶寬和時延,那麼就能夠更好地理解網站性能優化背後的本質——減小延時,增長帶寬。常見的性能優化的方式有合併請求和創建內容分發網絡(CDN):
合併請求。從優化角度來講,合併請求就是在減小總時延。一個100KB的文件和 10個10KB大小的文件大小相同。若D爲傳播時延,T爲發送10KB文件的發送時延,那麼一次發送100KB文件的時延爲 D + 10T,而發送10次單個10KB文件的延時爲 10D+10T。相同狀況下,請求次數越少,總時延就越少。
創建內容分發網絡。內容分發網絡經過將網站內容服務器分佈在靠近用戶的位置,從而使用戶就近獲取所需內容,減小傳播延時,進而顯著提高網站的響應速度。
舉例來講,高質量的視頻網站必須租用高速的上行帶寬,確保可以承擔大規模的視頻流量,由於沒人願意等待幾分鐘緩衝一個流媒體視頻。同時它也要在各地創建大規模的內容分發網絡(CDN)來下降視頻內容的傳播延遲,這樣纔不會讓用戶等待好久才能得到網站的響應。
4.總結視頻
本文網絡應用優化中最重要的兩個目標:時延與帶寬。經過定義並區分二者的關係,並引伸出網絡服務優化的幾種基本方法。和全部的教程同樣,本文不可能涵蓋到網絡優化的全部細節,可是若能對你有所啓發,那就是再好不過了。教程