如何理解CDN?說說實現原理?

林恒發表於2024-03-27

一、是什麼

CDN (全稱 Content Delivery Network),即內容分發網路

構建在現有網路基礎之上的智慧虛擬網路,依靠部署在各地的邊緣伺服器,透過中心平臺的負載均衡、內容分發、排程等功能模組,使使用者就近獲取所需內容,降低網路擁塞,提高使用者訪問響應速度和命中率。CDN 的關鍵技術主要有內容儲存和分發技術

簡單來講,CDN就是根據使用者位置分配最近的資源

於是,使用者在上網的時候不用直接訪問源站,而是訪問離他“最近的”一個 CDN 節點,術語叫邊緣節點,其實就是快取了源站內容的代理伺服器。如下圖:

二、原理分析

在沒有應用CDN時,我們使用域名訪問某一個站點時的路徑為

使用者提交域名→瀏覽器對域名進行解釋→DNS 解析得到目的主機的IP地址→根據IP地址訪問發出請求→得到請求資料並回復

應用CDN後,DNS 返回的不再是 IP 地址,而是一個CNAME(Canonical Name ) 別名記錄,指向CDN的全域性負載均衡

CNAME實際上在域名解析的過程中承擔了中間人(或者說代理)的角色,這是CDN實現的關鍵

負載均衡系統

由於沒有返回IP地址,於是本地DNS會向負載均衡系統再傳送請求 ,則進入到CDN的全域性負載均衡系統進行智慧排程:

  • 看使用者的 IP 地址,查表得知地理位置,找相對最近的邊緣節點

  • 看使用者所在的運營商網路,找相同網路的邊緣節點

  • 檢查邊緣節點的負載情況,找負載較輕的節點

  • 其他,比如節點的“健康狀況”、服務能力、頻寬、響應時間等

結合上面的因素,得到最合適的邊緣節點,然後把這個節點返回給使用者,使用者就能夠就近訪問CDN的快取代理

整體流程如下圖:

快取代理

快取系統是 CDN的另一個關鍵組成部分,快取系統會有選擇地快取那些最常用的那些資源

其中有兩個衡量CDN服務質量的指標:

  • 命中率:使用者訪問的資源恰好在快取系統裡,可以直接返回給使用者,命中次數與所有訪問次數之比
  • 回源率:快取裡沒有,必須用代理的方式回源站取,回源次數與所有訪問次數之比

快取系統也可以劃分出層次,分成一級快取節點和二級快取節點。一級快取配置高一些,直連源站,二級快取配置低一些,直連使用者

回源的時候二級快取只找一級快取,一級快取沒有才回源站,可以有效地減少真正的回源

現在的商業 CDN命中率都在 90% 以上,相當於把源站的服務能力放大了 10 倍以上

三、總結

CDN 目的是為了改善網際網路的服務質量,通俗一點說其實就是提高訪問速度

CDN 構建了全國、全球級別的專網,讓使用者就近訪問專網裡的邊緣節點,降低了傳輸延遲,實現了網站加速

透過CDN的負載均衡系統,智慧排程邊緣節點提供服務,相當於CDN服務的大腦,而快取系統相當於CDN的心臟,快取命中直接返回給使用者,否則回源

參考文獻

  • https://zh.wikipedia.org/wiki/內容傳遞網路
  • https://juejin.cn/post/6844903890706661389#heading-5
  • https://blog.csdn.net/lxx309707872/article/details/109078783

相關文章