背景
- 本來是為了深入了解 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 服務器上拉取網站文件,不至於訪問不了網站
待更新更深入的內容