背景
- 本來是為了深入瞭解 CDN 的,結果發現前置知識:IP、域名、DNS 都還不算特別熟,所以先寫了他們
- 現在終於來聊一聊 CDN 啦
- 本文素材均出自:https://www.bilibili.com/video/BV12T4y1P7Fh,動畫仍然滿分
如何開啟一個網站
前面說過了
- 瀏覽器訪問域名
- DNS 負責解析域名,找到域名對應的 IP 地址
- 瀏覽器訪問 IP 地址對應的伺服器,渲染響應內容
存在兩個問題
問題一
- 伺服器有地理位置
- 無論是雲伺服器,還是傳統伺服器,它都有一個地理位置
- 如果請求它的裝置離它很遠,那麼它的請求時間肯定會更長
- 假設同時有很多個裝置同時請求,頻寬有限的情況下,即使離伺服器很近,那請求時間也會被拉長
問題二
- 伺服器穩定性,會小概率出現當機
- 假設原始伺服器出現當機問題,會導致網站無法正常訪問
- 如果是小公司,還沒有專業的運維人員的話,那麼當機發生的時候可能會無法及時告警
CDN 介紹
全稱
Content Delivery Network,內容分發網路
為什麼會出現
就是為了解決上述兩個問題:限於地理位置、伺服器穩定性
場景類比
用過京東網購都知道,為什麼京東物流能當天/隔日到?因為它有前置倉、區域倉的倉儲配送機制
電商物流進化歷程
- 第一階段:只有商家倉庫,無論在哪購買,都從倉庫發貨,所以快遞時間需要 3-10 天
- 第二階段:建立區域倉,在一些關鍵城市建立區域倉,然後從商家倉庫囤點貨,當下單購買後,會就近選擇區域倉進行發貨
- 第三階段:建立前置倉,就是京東那種,就在你家旁邊建一個倉庫,送貨速度極快
CDN 其實就是類似第三階段,讓離你最近的伺服器傳送資料,這樣無論在哪訪問網站,速度都是槓槓的
CDN 實現原理
一開始已經複習了下是如何開啟一個網站的,其實 CDN 跟 DNS 也是有關係的
前提:沒有 CDN 的情況下
跟開頭講的順序一樣
- 瀏覽器查詢 DNS 伺服器域名對應 IP 地址是什麼
- DNS 伺服器返回 IP 地址
- 瀏覽器訪問 IP 地址對應的伺服器
- 伺服器返回網站資料給瀏覽器
新增 CDN 專用解析記錄
- 在域名的 DNS 解析設定中,新增一條 CDN 專用的解析記錄
- 這條解析記錄會讓域名被解析之後, 會指向一個 CDN 網路專用的處理 DNS 伺服器
CDN 專用的 DNS 伺服器
- 瀏覽器傳送 DNS 查詢請求到 DNS 伺服器
- DNS 伺服器會返回 CDN 專用的處理 DNS 請求的伺服器的 IP 地址給瀏覽器(上面說的 CDN 專用解析記錄)
- 瀏覽器拿到 IP 地址後訪問 CDN 專用 DNS 伺服器
- 然後呢,CDN 專用 DNS 伺服器就會返回 CDN 負載均衡伺服器的 IP 地址
- 瀏覽器拿到 IP 地址後訪問 CDN 負載均衡伺服器
- CDN 負載均衡伺服器會根據瀏覽器的網路地址,在 CDN 網路中返回最適合的 CDN 伺服器的 IP 地址,可能是沒什麼人用的伺服器,也可能是比較近的伺服器
CDN 負載均衡伺服器的作用
它會給請求裝置分配合適的 CDN 伺服器的 IP 地址
獲取網站資料
- 瀏覽器拿到 CDN 伺服器的 IP 地址之後,就會訪問它
- 假設第一個 CDN 伺服器沒有需要的網站檔案(快取中沒有),就會去 CDN 網路中的上層 CDN 伺服器中拉取
- 如果上層 CDN 伺服器沒有還會繼續往上層找
- 如果所有上層 CDN 伺服器都沒有找到,就會去源站中拉取
- 拉取成功之後,就會在剛剛經過的所有 CDN 伺服器中快取這些網站檔案
- 最後第一個 CDN 伺服器會將網路檔案傳送給瀏覽器
源站 IP
- 瀏覽器需要訪問的域名的網站伺服器的 IP 地址
- 在開通 CDN 的時候,就需要在 CDN 後臺設定源站 IP
- 網站的檔案就是放在源站上的,比如靜態資原始檔、視訊、音訊
CDN 伺服器的快取機制
- 通過 CDN 伺服器的快取機制,這樣下次其他裝置要去訪問 www.bilibili.com 的時候,就能直接從 CDN 伺服器的快取中拉取到對應的網站檔案了
- 不需要訪問源站的話,可以減少源站壓力,還能加快請求速度
CDN 伺服器的穩定性
- CDN 的快取機制除了能讓使用者快速開啟一個網站,還可以提高網站的穩定性
- 假設源站當機,或者 CDN 伺服器節點當機了之後,CDN 網路中還有其他 CDN 伺服器可用,這樣訪問網站就可以從可用的 CDN 伺服器上拉取網站檔案,不至於訪問不了網站
待更新更深入的內容