路由協議和架構/內容交付網路
外觀
< 路由協議和架構
Web 快取是一種儲存最近需要內容(例如 HTTP 資源)的本地副本並充當客戶請求的代理伺服器的裝置
- Web 快取更靠近使用者,而不是 Web 伺服器
- 效能:當請求的資源已存在於快取中時,回覆速度更快;
- 頻寬:不會載入昂貴的長距離鏈路(例如跨洋鏈路);
- 被動解決方案:如果請求的資源不在快取中,使用者需要等待 Web 快取從 Web 伺服器獲取(拉取)它;
- 不透明:使用者的 Web 瀏覽器需要手動配置才能聯絡該 Web 快取。
內容交付網路 (CDN) 是一個分佈在世界各地的 Web 快取的疊加網路[1],它們協同工作以向用戶提供更好的體驗[2]
- 主動解決方案:Web 伺服器在使用者請求之前將內容(通常是最受歡迎的內容)複製(推送)到 Web 快取;
- 透明:使用者自動連線到 Web 快取,無需在其客戶端手動配置;
- 效能:即使使用者移動,也始終連線到最近的 Web 快取;
- 負載均衡:使用者始終連線到負載最輕的 Web 快取;
- 可擴充套件性:將內容部署到多個副本中允許大量請求,而單個 Web 伺服器無法單獨處理這些請求;
- 條件訪問:可以根據使用者(例如定向廣告)自定義返回的內容。
CDN 非常適合生成大量流量的內容(例如多媒體資源),但並非所有內容都可以快取
- 動態網頁(例如股票市場價格);
- 自定義內容網頁(例如使用者帳戶)。
CDN 可以透過多種方式部署
- 基於 DNS 的 CDN:根據主機名將流量重定向到最佳副本
- 基於 DNS 的路由:託管提供商需要與 DNS 伺服器管理員達成協議;
- Akamai 方法:不需要干預 DNS 伺服器;
- 基於 URL 的 CDN:根據完整的 URL 將流量重定向到最佳副本


當主機名被翻譯成 IP 地址時,選擇最佳副本。DNS 對查詢的回覆不僅取決於主機名,還取決於源:一個特殊的 DNS 伺服器根據儘可能多的指標(RTT、伺服器負載、響應時間等)計算一個副本路由表,其中包含類似的條目
{主機名,客戶端 IP 地址} → 副本 IP 地址
“修改”的 DNS 伺服器中的路由引擎具有標準介面以保證 透明性:使用者認為與主機名相對應的 IP 地址是真實 Web 伺服器的 IP 地址,而實際上是其中一個副本的 IP 地址。
新增一個新的參與者,託管提供商,構成了網路世界中一個新的商業機會
- 接入提供商:它為使用者提供網路接入;
- 骨幹提供商:它提供遠端連線;
- 託管提供商:它為內容提供商提供 CDN 服務;
- 內容提供商:它提供內容。
- 問題
- 指標:指標測量,尤其是動態指標,並不容易,而僅限於第 3 層指標本身並不具有特別重要的意義;
- DNS 快取:只有權威伺服器知道所有副本,並且可以根據客戶端位置選擇最佳副本 → 層次結構中的中間 DNS 伺服器無法快取 DNS 回覆;
- 粒度:重定向粒度在主機名級別,而不是單個 URL 級別 → 大型網站的內容不能拆分為多個快取,因此同一個副本將被問及同一個網站中的兩個不同頁面。
Akamai CDN 利用一種專有的自動演算法,在不干預 DNS 伺服器的情況下將流量重定向到其副本
- 使用者輸入帶有其正常域名的網頁地址(例如http://cnn.com/index.html);
- 內容提供商(例如 CNN)的伺服器返回一個網頁,其中每個多媒體資源(例如影像)的地址都有一個特殊域名,對應於 Akamai 快取中的一個特定副本(例如http://a128.g.akamai.net/7/23/cnn.com/a.gif而不是http://cnn.com/a.gif);
- 使用者的 Web 瀏覽器在解析頁面時會對新域名執行 DNS 查詢,並從最近的副本獲取多媒體資源。

包含副本的真實伺服器被客戶端視為具有相同 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。