聊聊關於CDN的那些事兒~

語言: CN / TW / HK

這是我參與11月更文挑戰的第14天,活動詳情檢視:2021最後一次更文挑戰

當談到CDN時,對於我們前端工程師來說肯定不是一個陌生的名詞,都知道它是一個用來提升網站訪問速度的系統,但是再深入下去,比如它由哪些部分組成,它是如何去提升網站訪問速度這樣的問題時,我們卻不能很好地回答,因此這篇文章就準備好好聊聊關於CDN的具體內容,廢話不多說,開搞!

ppx2.jpg

什麼是CDN

CDN(Content Delivery Network)即 內容分發網路,從它名字上的定義我們就能很清楚它的作用:根據一定規則智慧地進行網路資源內容的分發,它的主要思路就是儘可能避開網際網路上有可能影響 資料傳輸速度穩定性 的瓶頸和環節,使內容傳輸的更快、更穩定

CDN網路由許多節點構成,這些節點上快取有目標網站的大部分靜態資源,使用者拿到的靜態資源也是由這些CDN節點提供的,而不是源站,由於CDN節點通常在物理距離上跟使用者較近,所以資源傳輸的路徑也較近,因此可以很大程度提高網站的響應速度

CDN節點通常分為三類:

  • 中心節點,擁有 CDN網管中心全域性負載均衡DNS重定向解析系統,負責整個CDN網路的分發及管理
  • 區域節點,用於管理某一個區域下的所有邊緣節點,目的是為了減輕 中心節點 的壓力
  • 邊緣節點,距離使用者最近的節點,通常也是 直接 為使用者提供靜態資源的節點,如果該節點沒有對應的資源,就會向上級進行遞迴查詢,查詢路徑為: 邊緣節點 => 區域節點 => 中心節點 => 源站,它主要由 負載均衡裝置快取記憶體伺服器 兩部分組成
  • 負載均衡裝置: 負責每個節點中各個Cache的負載均衡,保證節點的工作效率;同時還負責收集節點與周圍環境的資訊,保持與全域性負載均衡DNS的通訊,實現整個系統的負載均衡
  • 快取記憶體伺服器: 負責儲存客戶網站的大量資訊,就像一個靠近使用者的網站伺服器一樣響應本地使用者的訪問請求

也就是上述三種類型的節點,構成了所謂的“三級部署架構”,如下圖

cdn.png

CDN的工作流程

通常CDN的工作流程如下:

  1. 使用者請求首先會被 本地DNS伺服器 解析,如果解析成功,則返回對應IP給使用者
  2. 如果上一步不成功,則會將解析的任務轉發給授權的DNS伺服器,也就是 CNAME 指向的CDN專用DNS伺服器,其實就是所謂的 負載均衡DNS重定向解析系統
  3. 負載均衡DNS重定向解析系統 將請求分配最佳節點IP地址
  4. 返回解析出來的IP地址
  5. 使用者向解析出來的IP地址對應的節點發起請求,快取伺服器響應使用者請求,將使用者所需內容傳送到使用者終端,至此,整個過程結束

CDN的優點

CDN優點如下:

  1. 由於消除了 不同運營商 之間互聯的瓶頸造成的影響,實現了跨運營商的網路加速,同時也藉助於負載均衡DNS重定向解析系統的智慧請求分配,從而可以最大程度提高網站的效能
  2. 廣泛分佈的CDN節點加上節點之間的 智慧冗餘機制,可以有效地預防黑客入侵以及降低各種DDoS攻擊對網站的影響,最大程度保證網站的可用性
  3. 廣泛分佈的CDN節點也保證了抵抗 容災 的能力
  4. 由於伺服器之間的 映象同步,所以資源更新的整個過程完全自動化,大大降低了後期的維護成本
  5. 可以幫助源站減輕請求的壓力,實現 分流 的效果

結語

網站的優化方式多種多樣,CDN肯定是其中重要的一環,因此瞭解並掌握它的原理很重要,本篇文章也只是說了冰山一角,很多東西還是需要實際去操作後才能領悟,也就是所謂的 實踐才是檢驗真理的唯一標準,所以還得繼續努力才行呀~