邊緣伺服器(an edge server)
如果 CDN 是一串放在顧客附近的倉庫,邊緣伺服器就是其中一座倉庫——以及在那裡上班的店員。它是一台位於網路邊緣的快取伺服器,在地理上與拓樸上都靠近一群使用者,持有某網站內容的副本,並代表原始伺服器回應請求。CDN 把這些伺服器以叢集形式部署在全球許多接取點(points of presence, PoPs),常設在使用者連線的當地 ISP 與網際網路交換中心的內部或旁邊。
當一個請求抵達邊緣伺服器,它遵循一個簡單的決策。若所請求的項目已在邊緣的快取中且仍新鮮,它回傳一次快取命中——很快,且不聯絡原始伺服器。若項目不在或已過時,那是一次快取未命中:邊緣向原始伺服器取得該項目(在分層架構中有時是向較近的上層快取取得),把它本地儲存——一次快取填充——再提供它;下一位附近的使用者就得到命中。除了快取,現代邊緣伺服器也終結 TLS、壓縮回應、重用對原始伺服器的連線,並越來越常就地執行小程式(邊緣運算/邊緣函式 edge functions)來客製或組裝回應。
為什麼重要:邊緣伺服器正是 CDN 的承諾真正兌現的地方——它就是那份「附近的副本」,把一次 150 毫秒的洲際往返變成幾毫秒的本地往返。要分清楚的區別是原始(origin)對邊緣(edge):原始伺服器是擁有真正、最新內容的權威來源;邊緣持有快取副本,必須仰賴新鮮度與驗證來避免提供過時資料。邊緣又快又眾多,卻是借來的;原始伺服器才是唯一的真相來源,也是變更最終必須出自的地方。
你和鄰居都在串流同一支預告片。你的第一個請求是未命中——當地邊緣伺服器從原始伺服器填充一次。你鄰居幾秒後的請求是命中,完全由幾公里外的邊緣伺服器提供。
第一個請求填充邊緣;之後附近的請求都是命中。
邊緣伺服器持有的是副本,不是正本。若原始伺服器更新了內容,但邊緣的副本仍被視為新鮮,使用者可能會持續看到舊版本,直到它過期或被清除——這正是「快取失效」出名地困難的原因。