詳解 CDN 加速

小菠蘿測試筆記發表於2021-06-29

背景

  • 本來是為了深入瞭解 CDN 的,結果發現前置知識:IP、域名、DNS 都還不算特別熟,所以先寫了他們
  • 現在終於來聊一聊 CDN 啦
  • 本文素材均出自:https://www.bilibili.com/video/BV12T4y1P7Fh,動畫仍然滿分

 

如何開啟一個網站

前面說過了

  1. 瀏覽器訪問域名
  2. DNS 負責解析域名,找到域名對應的 IP 地址
  3. 瀏覽器訪問 IP 地址對應的伺服器,渲染響應內容

 

存在兩個問題

問題一

  • 伺服器有地理位置
  • 無論是雲伺服器,還是傳統伺服器,它都有一個地理位置
  • 如果請求它的裝置離它很遠,那麼它的請求時間肯定會更長
  • 假設同時有很多個裝置同時請求,頻寬有限的情況下,即使離伺服器很近,那請求時間也會被拉長

 

問題二

  • 伺服器穩定性,會小概率出現當機
  • 假設原始伺服器出現當機問題,會導致網站無法正常訪問
  • 如果是小公司,還沒有專業的運維人員的話,那麼當機發生的時候可能會無法及時告警

 

CDN 介紹

全稱

Content Delivery Network,內容分發網路

 

為什麼會出現

就是為了解決上述兩個問題:限於地理位置、伺服器穩定性

 

場景類比

用過京東網購都知道,為什麼京東物流能當天/隔日到?因為它有前置倉、區域倉的倉儲配送機制

電商物流進化歷程

  • 第一階段:只有商家倉庫,無論在哪購買,都從倉庫發貨,所以快遞時間需要 3-10 天
  • 第二階段:建立區域倉,在一些關鍵城市建立區域倉,然後從商家倉庫囤點貨,當下單購買後,會就近選擇區域倉進行發貨
  • 第三階段:建立前置倉,就是京東那種,就在你家旁邊建一個倉庫,送貨速度極快

CDN 其實就是類似第三階段,讓離你最近的伺服器傳送資料,這樣無論在哪訪問網站,速度都是槓槓的

 

CDN 實現原理

一開始已經複習了下是如何開啟一個網站的,其實 CDN 跟 DNS 也是有關係的

前提:沒有 CDN 的情況下

 

跟開頭講的順序一樣

  1. 瀏覽器查詢 DNS 伺服器域名對應 IP 地址是什麼
  2. DNS 伺服器返回 IP 地址
  3. 瀏覽器訪問 IP 地址對應的伺服器
  4. 伺服器返回網站資料給瀏覽器 

 

新增 CDN 專用解析記錄

  • 在域名的 DNS 解析設定中,新增一條 CDN 專用的解析記錄
  • 這條解析記錄會讓域名被解析之後, 會指向一個 CDN 網路專用的處理 DNS 伺服器

 

CDN 專用的 DNS 伺服器

  1. 瀏覽器傳送 DNS 查詢請求到 DNS 伺服器
  2. DNS 伺服器會返回 CDN 專用的處理 DNS 請求的伺服器的 IP 地址給瀏覽器(上面說的 CDN 專用解析記錄)
  3. 瀏覽器拿到 IP 地址後訪問 CDN 專用 DNS 伺服器
  4. 然後呢,CDN 專用 DNS 伺服器就會返回 CDN 負載均衡伺服器的 IP 地址
  5. 瀏覽器拿到 IP 地址後訪問 CDN 負載均衡伺服器
  6. CDN 負載均衡伺服器會根據瀏覽器的網路地址,在 CDN 網路中返回最適合的 CDN 伺服器的 IP 地址,可能是沒什麼人用的伺服器,也可能是比較近的伺服器

 

CDN 負載均衡伺服器的作用

它會給請求裝置分配合適的 CDN 伺服器的 IP 地址

 

獲取網站資料

  1. 瀏覽器拿到 CDN 伺服器的 IP 地址之後,就會訪問它
  2. 假設第一個 CDN 伺服器沒有需要的網站檔案(快取中沒有),就會去 CDN 網路中的上層 CDN 伺服器中拉取
  3. 如果上層 CDN 伺服器沒有還會繼續往上層找
  4. 如果所有上層 CDN 伺服器都沒有找到,就會去源站中拉取
  5. 拉取成功之後,就會在剛剛經過的所有 CDN 伺服器中快取這些網站檔案
  6. 最後第一個 CDN 伺服器會將網路檔案傳送給瀏覽器

 

源站 IP

  • 瀏覽器需要訪問的域名的網站伺服器的 IP 地址
  • 在開通 CDN 的時候,就需要在 CDN 後臺設定源站 IP 
  • 網站的檔案就是放在源站上的,比如靜態資原始檔、視訊、音訊

 

CDN 伺服器的快取機制

  • 通過 CDN 伺服器的快取機制,這樣下次其他裝置要去訪問 www.bilibili.com 的時候,就能直接從 CDN 伺服器的快取中拉取到對應的網站檔案了
  • 不需要訪問源站的話,可以減少源站壓力,還能加快請求速度

 

CDN 伺服器的穩定性

  • CDN 的快取機制除了能讓使用者快速開啟一個網站,還可以提高網站的穩定性
  • 假設源站當機,或者 CDN 伺服器節點當機了之後,CDN 網路中還有其他 CDN 伺服器可用,這樣訪問網站就可以從可用的 CDN 伺服器上拉取網站檔案,不至於訪問不了網站

 

待更新更深入的內容 

 

相關文章