Google 工程師:為什麼 CDN 對移動客戶端加速“沒有”效果

又拍雲發表於2019-01-11

王者榮耀是近兩年來比較火的手遊,不少小夥伴都有玩過。玩這個遊戲最怕的不是遇到豬一般的隊友,也不是怕遇到神一樣的對手。最讓我們感到害怕和絕望的是,團戰爆發時,而你 460 了。460 是一個玩家常用的詞,其實它完整表達的是,你的網路延遲達到了 460ms。像王者榮耀這樣的遊戲,CDN 加速是必須有的。而常常出現 460,難道 CDN 對移動端加速無效嗎?

Google Web 效能優化工程師和開發大使、《High-Performance Browser Networking》作者 Ilya Grigorik 近日釋出了一篇名為《為什麼 CDN 對移動客戶端加速“沒有”效果》的部落格,讓我們來看看他在文中講了什麼。

原文連結:

以下是譯文:

 

“我們正在使用 CDN,但是當檢視效能數字時,它似乎對移動客戶端的效果要差得多。我們正在考慮禁用它,因為不確定它是否對移動端加速有效。有人需要為移動裝置建立一個特殊的 CDN,我們肯定會用它來改善延遲!”

隨著越來越多的團隊專注於提高移動網站的效能,我聽到類似論點的頻率正在迅速增加。問題是,雖然宣告通常基於實際資料,但結論是錯誤。傳統 CDN 對移動客戶端和對寬頻網路的絕對優化效果差不多;這不是“無線 CDN”的問題,而是運營商網路的問題。

網路延遲的組成

在討論 CDN 對移動端加速是否有效之前,我們首先要了解延遲是怎麼來的。舉一個具體的例子,就能非常清晰的瞭解延遲。讓我們假設如下:

  • 客戶位於西海岸; 伺服器位於東海岸。
  • 美國西海岸和東海岸之間的傳播延遲為 50 毫秒。
  • 伺服器響應時間為 50 毫秒。
  • “有線”客戶端的最後一英里延遲:光纖約為 18 毫秒,電纜約為 26 毫秒,DSL 約為 44 毫秒。
  • “無線”客戶端的最後一英里延遲:4G 約為 50 毫秒,3G 約為 200 毫秒。

CDN 加速效果

CDN 加速是儘可能地將位元組移動到使用者附近,在全球各個資料中心和對等點內部署快取伺服器。換句話說,在最佳情況下,CDN 伺服器位於 ISP /運營商網路之外:客戶端發出請求,導致退出 ISP /運營商網路的最後一英里延遲的成本,並立即命中返回的 CDN 伺服器一個迴應。因此,CDN 最大限度地減少了傳播延遲,還可以通過返回快取的靜態資源來縮短伺服器響應時間。

繼續之前的示例,假設我們的 CDN 伺服器是最佳放置的(東海岸到西海岸的延遲時間不是 50ms 而是 5ms),而且請求 CDN 未命中源站的情況下客戶端到 CDN 節點的延遲是 5ms。對於我們的光纖客戶端,新的總時間是最後一英里往返加上 CDN 響應時間的總和:18 + 5 + 5 + 5 + 18,總共 51 毫秒。因此,增加 CDN 的好處就是將我們總請求時間由 186ms 降低到了 51ms:在總延遲上有 365% 的改善!

採用同樣的方法重複計算每個連線的基本資訊,就可以得到一個不幸的趨勢:

  • 隨著最後一英里延遲的增加,CDN 的相對有效性“下降”。
  • 考慮CDN伺服器位於 ISP 網路之外,這就意味著節點的選擇非常有意義
  • 無論最後一英里的延遲如何,絕對延遲的改善仍然是有效的。

CDN 有助於減少傳播和伺服器響應時間。如果你衡量優化前後的對比,就會發現 CDN 幾乎沒有做移動客戶端的優化:例如,3G 使用者普遍獲得 33% 的優化效果,而 4G 使用者普遍獲得了 117% 的優化效果

在邊緣節點上的運營和維護成本

改善端到端延遲的明顯策略是將快取伺服器更加靠近客戶端,而不是將它們放在 ISP 網路之外。我們可以將它們移到內部嗎?原則上,答案是肯定的,許多 ISP 已經部署了自己的快取伺服器。但是,在實踐中,這是一個棘手的問題。

首先,對等點的數量相對較少,這允許 CDN 部署在全球數十個眾所周知的位置以提供其服務。此外,為此,他們不必與各個 ISP 進行任何特殊交易:通常,伺服器部署在共享資料中心(對等點)中。

我們假設 CDN 和某個 ISP 達成協議,理想情況下儘可能將伺服器部署靠近客戶(靠近無線電塔和其他聚合點)。這樣做需要大量硬體,使維護和升級成為運維的噩夢,並且會導致許多安全問題。例如,您是否會在無法直接訪問的第三方運營網路中部署 TLS 終端節點?總之,這是成本,安全和物流的噩夢。

許多網際網路服務提供商長期以來一直試圖推動“高階市場”並提供 CDN 功能。然而,ISP 有一個不同的問題:他們很難簽署客戶,因為大多數網站對於和每個運營商單獨簽署協議絲毫不感興趣。

除了業務和運營成本之外,為移動客戶優化 CDN 沒有什麼特別之處。根本問題是移動運營商的最後一英里延遲是殘酷的,這就是我們需要解決的問題。我們需要透明地瞭解這些網路的效能,而不是將快取伺服器推向更接近邊緣的地方,我們需要運營商之間更多的競爭來解決潛在的最後一英里效能問題。

簡而言之,沒有理由為什麼 CDN 本身對移動客戶來說“慢”:不要將相對收益與絕對節省混為一談。也就是說,每個 CDN 提供商的實際效能顯然會根據其伺服器的位置和與各種移動運營商的連線而變化,測量,收集實際資料,進行優化。CDN 對移動裝置來說並不慢,使用它們!

又拍雲 CDN 結合高效鏈路優化,智慧網路排程以及強大的內容匹配等技術,讓移動應用在公網擁堵、弱網、不同終端等應用場景中,依舊能夠快速獲取到動態、靜態內容,輕鬆提升 30% 訪問速度。

 

推薦閱讀:

又拍雲 OpenResty / Nginx 服務優化實踐

瞭解 HTTPS,讀這篇文章就夠了

相關文章