網絡應用優化——時延與帶寬

1. 用戶感知的“速度”

用戶體驗能給網站帶來更多的收益,因此人們也投入了更多精力去研究它。用戶體驗中,除了好的交互,精美的界面,用戶感知的“速度”也是重要的一環。從網絡角度來說,時延(latency)和帶寬(bindwidth)是決定“速度”的重要環節。

不同的應用對時延和帶寬需求的側重點往往不同:

  • 網絡遊戲需要更低的時延。在一些對抗激烈的FPS、MOBA類的遊戲中,單次數據傳輸的量並不大,因此帶寬要求不高。但是若你頂着延遲和別人進行對抗,那麼這局比賽可能已經輸了一半;

  • 流媒體需要更高的帶寬。高速帶寬能讓你觀看高清電影,而延時就顯得不那麼重要,帶來問題無非是在加載前等待一段時間罷了;

  • 視頻聊天需要更低的時延。更低的時延意味着你能看到更流暢的實時畫面,而不會掉幀。也許只有當你想要切換更高清晰度的時候才需要選擇更高的帶寬。

  • 瀏覽網頁需要更低的時延。因爲沒人願意在一個空白頁面上花上幾秒鐘。更高的帶寬常常無關緊要,除非你需要流量高分辨率的圖片或者高清的視頻。

2. 時延與帶寬

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.總結

本文網絡應用優化中最重要的兩個目標:時延與帶寬。通過定義並區分兩者的關係,並引申出網絡服務優化的幾種基本方法。和所有的教程一樣,本文不可能涵蓋到網絡優化的所有細節,但是若能對你有所啓發,那就是再好不過了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章