網路應用優化——時延與頻寬

發表於2018-11-22

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

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

5.參考連結

相關文章