跳轉到內容

路由協議和架構/內容交付網路

來自華夏公益教科書
Previous page
組播路由
路由協議和架構 Next page
關於網路裝置架構的提示
內容交付網路

Web 快取是一種儲存最近需要內容(例如 HTTP 資源)的本地副本並充當客戶請求的代理伺服器的裝置

  • Web 快取更靠近使用者,而不是 Web 伺服器
    • 效能:當請求的資源已存在於快取中時,回覆速度更快;
    • 頻寬:不會載入昂貴的長距離鏈路(例如跨洋鏈路);
  • 被動解決方案:如果請求的資源不在快取中,使用者需要等待 Web 快取從 Web 伺服器獲取(拉取)它;
  • 不透明:使用者的 Web 瀏覽器需要手動配置才能聯絡該 Web 快取。

內容交付網路 (CDN) 是一個分佈在世界各地的 Web 快取的疊加網路[1],它們協同工作以向用戶提供更好的體驗[2]

  • 主動解決方案:Web 伺服器在使用者請求之前將內容(通常是最受歡迎的內容)複製(推送)到 Web 快取;
  • 透明:使用者自動連線到 Web 快取,無需在其客戶端手動配置;
  • 效能:即使使用者移動,也始終連線到最近的 Web 快取;
  • 負載均衡:使用者始終連線到負載最輕的 Web 快取;
  • 可擴充套件性:將內容部署到多個副本中允許大量請求,而單個 Web 伺服器無法單獨處理這些請求;
  • 條件訪問:可以根據使用者(例如定向廣告)自定義返回的內容。

CDN 非常適合生成大量流量的內容(例如多媒體資源),但並非所有內容都可以快取

  • 動態網頁(例如股票市場價格);
  • 自定義內容網頁(例如使用者帳戶)。

CDN 可以透過多種方式部署

  • 基於 DNS 的 CDN:根據主機名將流量重定向到最佳副本
  • 基於 URL 的 CDN:根據完整的 URL 將流量重定向到最佳副本

基於 DNS 的 CDN

[編輯 | 編輯原始碼]

基於 DNS 的路由

[編輯 | 編輯原始碼]
傳統瀏覽。
基於 DNS 的 CDN 瀏覽。

當主機名被翻譯成 IP 地址時,選擇最佳副本。DNS 對查詢的回覆不僅取決於主機名,還取決於源:一個特殊的 DNS 伺服器根據儘可能多的指標(RTT、伺服器負載、響應時間等)計算一個副本路由表,其中包含類似的條目

{主機名,客戶端 IP 地址} → 副本 IP 地址

“修改”的 DNS 伺服器中的路由引擎具有標準介面以保證 透明性:使用者認為與主機名相對應的 IP 地址是真實 Web 伺服器的 IP 地址,而實際上是其中一個副本的 IP 地址。

新增一個新的參與者,託管提供商,構成了網路世界中一個新的商業機會

  • 接入提供商:它為使用者提供網路接入;
  • 骨幹提供商:它提供遠端連線;
  • 託管提供商:它為內容提供商提供 CDN 服務;
  • 內容提供商:它提供內容。
問題
  • 指標:指標測量,尤其是動態指標,並不容易,而僅限於第 3 層指標本身並不具有特別重要的意義;
  • DNS 快取:只有權威伺服器知道所有副本,並且可以根據客戶端位置選擇最佳副本 → 層次結構中的中間 DNS 伺服器無法快取 DNS 回覆;
  • 粒度:重定向粒度在主機名級別,而不是單個 URL 級別 → 大型網站的內容不能拆分為多個快取,因此同一個副本將被問及同一個網站中的兩個不同頁面。

Akamai 方法

[編輯 | 編輯原始碼]

Akamai CDN 利用一種專有的自動演算法,在不干預 DNS 伺服器的情況下將流量重定向到其副本

  1. 使用者輸入帶有其正常域名的網頁地址(例如http://cnn.com/index.html);
  2. 內容提供商(例如 CNN)的伺服器返回一個網頁,其中每個多媒體資源(例如影像)的地址都有一個特殊域名,對應於 Akamai 快取中的一個特定副本(例如http://a128.g.akamai.net/7/23/cnn.com/a.gif而不是http://cnn.com/a.gif);
  3. 使用者的 Web 瀏覽器在解析頁面時會對新域名執行 DNS 查詢,並從最近的副本獲取多媒體資源。

基於 URL 的 CDN

[編輯 | 編輯原始碼]

伺服器負載均衡

[編輯 | 編輯原始碼]
內容感知 SLB。

包含副本的真實伺服器被客戶端視為具有相同 IP 地址的單個虛擬伺服器。

伺服器負載均衡器 (SLB) 將傳送到虛擬伺服器的流量負載均衡到幾個真實伺服器之間

  • 第 4 層交換:TCP 連線沒有被 SLB 終止(不感知內容
    • 其中一個真實伺服器回覆與客戶端的三次握手;
    • 屬於同一個 TCP 會話的所有 HTTP 查詢都必須始終由同一個真實伺服器提供服務;
    • 負載均衡可以基於源 IP 地址、源 TCP 埠等;
  • 第 7 層交換:TCP 連線被 SLB 終止(感知內容),充當代理
    • SLB 回覆與客戶端的三次握手,以便能夠捕獲稍後請求的 URL;
    • 根據 SLB 的決定,每個 HTTP 查詢都可以由當前負載最輕的真實伺服器提供服務;
    • 負載均衡基於完整的 URL。
問題
  • 加密連線(HTTP):SLB 需要擁有伺服器的私有 SSL 密碼金鑰,並且需要支援處理傳輸中資料包的加密/解密的負載;
  • 粘性連線:某些應用程式要求來自同一客戶端的 TCP 連線被重定向到同一伺服器(例如購物車)→ 也應該考慮 cookie;
  • 地理分佈:所有副本彼此靠近,也靠近 SLB,而 SLB 遠離客戶端。

內容路由

[編輯 | 編輯原始碼]

內容路由器是根據 URL 將流量路由到最佳副本的路由器

  • TCP:一系列內容路由器在其之間終止 TCP 連線 → 引入了太多延遲;
  • 內容交付控制協議:URL 由第一個內容路由器提取,並透過特定協議傳播。
問題
  • 有狀態: 第一個內容路由器需要終止 TCP 連線才能獲取使用者查詢的 URL;
  • 裝置複雜性: 解析資料包以獲取 URL 很複雜 → 第七層交換機是複雜且昂貴的裝置;
  • 協議複雜性: 提出的內容交付控制協議非常複雜;
  • 隱私: 內容路由器會讀取使用者查詢的所有 URL。

參考文獻

[編輯 | 編輯原始碼]
  1. 覆蓋網路是在另一個網路之上構建的計算機網路。
  2. 使用者體驗質量衡量使用者對服務的體驗(例如網路瀏覽)。
Previous page
組播路由
路由協議和架構 Next page
關於網路裝置架構的提示
內容交付網路
華夏公益教科書