工程 · 1 min read
CDN 是什麼
CDN 是一群靠近使用者的 edge server。pull 和 push 兩種模式怎麼把檔案送到 edge,以及為什麼副本新不新,全由 cache 規則決定。
CDN 是一群放在世界各地的 edge server。使用者向最近的 edge 要檔案,不用每次都跑回 origin。
面試時,我只會說「加一層 CDN 就會變快」。但它為什麼會變快?檔案又是怎麼跑到 edge 上的?這是我追查的第一步。
- Origin:檔案真正存放的地方,例如 storage bucket 或應用程式伺服器。
- Edge server:CDN 放在使用者附近的伺服器。它存一份檔案的副本。
- TTL(time to live):edge 可以保留副本多久。時間到了,edge 就要再問 origin(Cache 的新鮮度:fresh、stale 和 304)。
兩種模式決定檔案怎麼到達 edge:
| 模式 | 做法 | 代價 |
|---|---|---|
| Pull CDN | 第一次有人要時,edge 才去 origin 拿 | 第一次比較慢 |
| Push CDN | 檔案更新時,origin 主動上傳到 CDN | origin 要自己管上傳 |
我工作用的 CDN 是 pull 模式。所以 edge 有沒有副本、副本新不新,全由 cache 規則決定。後面整個系列,都在追這些規則。
CDN 變快的原因很簡單:檔案離使用者近。難的是決定副本什麼時候該換。
參考來源:ByteByteGo: How does CDN work, System Design Primer: CDN
延伸閱讀:一個 HTTP request、Cache 的新鮮度:fresh、stale 和 304、CDN 名詞一頁表。或回到系列總覽。