架構設計(四):CDN

架構設計(四):CDN

作者:Grey

原文地址:

博客園:架構設計(四):CDN

CSDN:架構設計(四):CDN

CDN 全稱 Content delivery network ,即:內容分發網絡。

CDN 是一個地理上分散的服務器網絡,主要用於提供靜態內容。如:圖片、視頻、CSS、JavaScript 文件等。

還有一種是動態內容緩存,它可以實現基於請求路徑、查詢字符串、cookies和請求頭的HTML頁面的緩存。參考Amazon CloudFront 動態內容分發。本文主要介紹 CDN 技術

當用戶訪問一個網站時,離用戶最近的 CDN 服務器將提供靜態內容。也就是說,用戶離 CDN 服務器越遠,網站的加載速度就越慢。架構如下

img

整個工作流程如下

  • 客戶端通過使用一個圖像 URL 來獲取圖片信息。該 URL 的域是由 CDN 提供者提供的。URL 類似如下的形式:https://mysite.cloudfront.net/logo.jpg

  • 如果 CDN 服務器的緩存中沒有這張圖片,則 CDN 服務器就會從原始服務器中請求該文件。

    • 原始服務器向 CDN 服務器返回該圖片,其中包括可選的 HTTP 頭 TTL(Time-to-Live),描述圖像被緩存多長時間。

    • CDN 緩存圖像並將其返回給用戶A。圖像一直緩存在CDN中,直到 TTL 過期。

  • 另外一個客戶端發送請求以獲得相同的圖像。

  • 只要 TTL 沒有過期,圖像就會從 CDN 緩存中返回。

使用 CDN 要考慮的因素

  • 成本。CDN 是由第三方供應商運行的,要爲進出 CDN 的數據傳輸付費。緩存不經常使用的內容不會帶來明顯的好處,還會增加成本,所以,你應該考慮將它們從 CDN 中移出。

  • 設置一個適當的緩存過期時間。對於時間敏感的內容,設置一個緩存過期時間時間是很重要的。緩存過期時間既不能太長也不能太短。如果它是太長,內容可能不再是最新的。如果它太短,它可能會導致重複從原始服務器重新加載內容到 CDN。

  • 考慮你的網站或應用程序如何應對 CDN 故障。如果 CDN 暫時中斷,客戶應該能夠檢測到這個問題並從原始服務器請求資源。

  • 如果 CDN 的內容無效了,應該要可以在一個文件過期前從 CDN 中把無效內容刪除,有兩種刪除方式

    • 第一種方式,是使用 CDN 供應商提供的 API 使 CDN 對象失效。
    • 使用版本管理來提供對象的不同版本。可以在 URL 中添加一個參數,比如說版本號,image.png?v=2,當版本號不同的時候,獲取的內容也就不一樣了。

參考資料

System Design Interview

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