工程 · 1 min read
一個 request 走過的路
一個 request 會經過 DNS、Akamai edge 和 origin 的 load balancer。為什麼「多久使用者才看得到新版」這個問題沒有單一答案。
一個送到 cdn.example.com 的 request 會經過三層:DNS、CDN edge、origin 的 load balancer。
我第一次畫這張圖,是為了回答一個問題:「檔案上傳到 bucket 後,多久使用者才看得到新版?」
- DNS:
cdn.example.com用 CNAME 指到 Akamai 的 edge hostname(Akamai property:一份 edge 設定)。 - Akamai edge:有副本就直接回應。沒有副本,就去 origin 拿。
- Load balancer:依路徑把 request 交給對的 bucket(Load balancer 怎麼選後端)。
- 好幾個 hostname 共用同一個 property,所以它們共用同一個 origin 和同一套規則。
- Origin 不是一台 server,而是一個 load balancer。它後面有好幾個 bucket 和一個 proxy 服務(Load balancer:一個入口,依規則分給很多後端)。
畫完我才發現,這個問題沒有單一答案。答案取決於路上每一層各自的 TTL(三個地方都在設定 TTL)。
「多久會更新?」要沿著路一層一層問,答案藏在每一層的 TTL 裡。
延伸閱讀:Load balancer:一個入口,依規則分給很多後端、Akamai property:一份 edge 設定、Load balancer 怎麼選後端、三個地方都在設定 TTL。或回到系列總覽。