文章目錄
- 概念梳理
- CDN拓撲結構
- CDN內容分發方式
- 架構原理
- 工作原理
- 實現原理
概念梳理
CDN(Content Delivery Network,內容分發網絡)是由分布在不同地理位置的代理服務器及其數據中心組成的網絡,希望在空間距離上為用戶就近提供服務,以提高可用性和性能。(空間距離體現在網絡傳輸上就是跳數(hop),從客戶端到服務器所經過的跳數越多,距離越遠,一般延遲也越大)
CDN 一般用來托管 Web 資源(包括文本、圖像和腳本),可供下載的資源(媒體文件、軟件、文檔等),應用程序(電子商務、門戶網站等),以及流媒體和社交媒體網站,加速這些資源的訪問,例如在使用Bootstrap-table創建表單,并且與flask后臺進行數據交互中淺嘗了一下Bootstrap-table組件,但是并未下載其資源而是直接通過cdn直接獲取。
性能方面,引入 CDN 的作用在于:
- 用戶收到的內容來自最近的數據中心,延遲更低,內容加載更快
- 部分資源請求被外包給了 CDN,減少了服務器負載
使用CDN的優勢:
1、一方面縮短了內容與最終用戶之間的距離,另一方面,內容不直接從服務器獲取,節省了服務器的計算資源,分擔了源站壓力。
2、安全性上,CDN 有助于防御 DDoS、MITM 等網絡攻擊: - DDoS(Distributed Denial of Service):通過監控分析異常流量,限制其請求頻率
- MITM(Man-In-The-Middle):從源服務器到 CDN 節點到 ISP(Internet Service Provider),全鏈路 HTTPS 通信
3、作為一種基礎的云服務(IaaS),CDN 同樣具有資源托管、按需擴展(能夠應對流量高峰)等方面的優勢,這降低了內容提供商的基礎設施需求,讓他們能夠更快、更輕松地部署或擴展服務。
CDN拓撲結構
拓撲結構上,CDN 分為分散式(Scattered CDN)和整合式(Consolidated CDN)兩種。
在世界各地部署盡可能多的服務器,稱為分散式 CDN。早期的 CDN 用大量的中低性能服務器密集地填滿選定的地理區域,這些小節點易于部署,尤其適用于低連接性(low-connectivity)的區域。
隨著全球連接性的不斷提高,縮減物理距離的收益逐漸減少,大量節點的維護成本也凸現出來,于是出現了整合式 CDN。
整合式 CDN 只在主要的數據中心有少量節點,但節點性能更強大,包括網絡、吞吐量以及抗 DDoS 的能力,這種集中式的結構有助于提升整體響應能力,為用戶和網絡運營商提供更多的控制,但部署相對復雜,而且在低連接性區域效果較差。
![]() | ![]() |
CDN內容分發方式
CDN 按內容分發方式分為 Push CDN
與 Pull CDN
前者由內容服務器提前把內容“推”到 CDN 緩存起來,后者在用戶訪問內容時 CDN 才去“拉”目標資源并緩存起來。
Push CDN
每次內容發生變化時,都把新內容上傳到 Push CDN。由于只需要上傳新增的內容和發生變化的內容,用于傳輸的流量相對較少,但要存儲的內容相對較多
因此,Push CDN 適用于小流量,或內容更新不頻繁的站點,內容一次性放到 CDN,無需周期性地重新拉取。如果流量負擔本就很重,或者內容改動頻繁,Push CDN 會給服務器帶來額外的壓力。
Pull CDN
Pull CDN 無需手動上傳,在用戶首次訪問時自動從服務器拉取新內容,并緩存起來。按需緩存節省了 CDN 存儲空間,但在文件過期或在未發生變化時重新拉取也會造成不必要的流量開銷
因此,Pull CDN 適用于大流量站點,只緩存最近使用(最受歡迎)的內容,一旦配置好就能按需緩存內容,維護成本較低。
關于CDN緩存的策略,請看之前的筆記:DN緩存替代算法
架構原理
- 源服務器(Origin server):提供內容(數據)源的服務器
- 邊緣服務器(Edge server):用來緩存來自源服務器的內容的服務器
- 入網點(Point of Presence,PoP):邊緣服務器所在的物理位置,一個入網點可能存在多個邊緣服務器
- CDN 反向代理(CDN Reverse Proxy):將用戶請求轉發到源服務器,并緩存來自源服務器的響應,用于 Pull CDN
- 回源(Back-to-source):CDN 節點未緩存請求資源或緩存資源已到期時,回源站獲取資源,返回給客戶端
工作原理
以 Pull CDN 為例,特定地區的用戶首次訪問資源時,從源服務器取,內容響應給用戶之后,資源會被緩存在該地區的邊緣服務器上,如果同一地區的用戶再次請求相同資源,則從邊緣服務器響應:
可以通過響應頭的特定字段來區分內容響應來自源服務器還是 CDN 緩存,例如:
- X-Cache: HIT:命中緩存,響應內容來自 CDN 緩存
- X-Cache: MISS:未命中緩存,響應內容來自源服務器
實現原理
實現上,將子域名的解析權通過CNAME 記錄交給 CDN,接著通過基于地理位置臨近程度的路由策略,將請求映射到距用戶最近的邊緣服務器。
對于 Push CDN,邊緣服務器僅提供緩存服務,未命中緩存就返回 404,而對于 Pull CDN,邊緣服務器提供反向代理服務,未命中緩存時回源去取。