1. 程式人生 > 其它 >架構必問:CDN 是什麼?為什麼快??

架構必問:CDN 是什麼?為什麼快??

來源:https://www.jianshu.com/p/1dae6e1680ff

一、什麼是 CDN

CDN的全稱是(Content Delivery Network),即內容分發網路。其目的是通過在現有的Internet中增加一層新的CACHE(快取)層,將網站的內容釋出到最接近使用者的網路”邊緣“的節點,使使用者可以就近取得所需的內容,提高使用者訪問網站的響應速度。從技術上全面解決由於網路頻寬小、使用者訪問量大、網點分佈不均等原因,提高使用者訪問網站的響應速度。

簡單的說,CDN的工作原理就是將您源站的資源快取到位於全球各地的CDN節點上,使用者請求資源時,就近返回節點上快取的資源,而不需要每個使用者的請求都回您的源站獲取,避免網路擁塞、緩解源站壓力,保證使用者訪問資源的速度和體驗

CDN對網路的優化作用主要體現在如下幾個方面

  • 解決伺服器端的“第一公里”問題
  • 緩解甚至消除了不同運營商之間互聯的瓶頸造成的影響
  • 減輕了各省的出口頻寬壓力
  • 緩解了骨幹網的壓力
  • 優化了網上熱點內容的分佈

二、CDN工作原理

傳統訪問過程

傳統訪問過程

「由上圖可見,使用者訪問未使用CDN快取網站的過程為:」

1.使用者輸入訪問的域名,作業系統向 LocalDns 查詢域名的ip地址.

2.LocalDns向 ROOT DNS 查詢域名的授權伺服器(這裡假設LocalDns快取過期)

3.ROOT DNS將域名授權dns記錄迴應給 LocalDns

4.LocalDns得到域名的授權dns記錄後,繼續向域名授權dns查詢域名的ip地址

5.域名授權dns 查詢域名記錄後,迴應給 LocalDns

6.LocalDns 將得到的域名ip地址,迴應給 使用者端

7.使用者得到域名ip地址後,訪問站點伺服器

8.站點伺服器應答請求,將內容返回給客戶端.

CDN訪問過程

「通過上圖,我們可以瞭解到,使用了CDN快取後的網站的訪問過程變為:」

1.使用者輸入訪問的域名,作業系統向 LocalDns 查詢域名的ip地址.

2.LocalDns向 ROOT DNS 查詢域名的授權伺服器(這裡假設LocalDns快取過期)

3.ROOT DNS將域名授權dns記錄迴應給 LocalDns

4.LocalDns得到域名的授權dns記錄後,繼續向域名授權dns查詢域名的ip地址

5.域名授權dns 查詢域名記錄後(一般是CNAME),迴應給 LocalDns

6.LocalDns 得到域名記錄後,向智慧排程DNS查詢域名的ip地址

7.智慧排程DNS 根據一定的演算法和策略(比如靜態拓撲,容量等),將最適合的CDN節點ip地址迴應給 LocalDns

8.LocalDns 將得到的域名ip地址,迴應給 使用者端

9.使用者得到域名ip地址後,訪問站點伺服器

10.CDN節點伺服器應答請求,將內容返回給客戶端.(快取伺服器一方面在本地進行儲存,以備以後使用,二方面把獲取的資料返回給客戶端,完成資料服務過程)

通過以上的分析我們可以得到,為了實現對普通使用者透明(使用快取後用戶客戶端無需進行任何設定)訪問,需要使用DNS(域名解析)來引導使用者來訪問Cache伺服器,以實現透明的加速服務. 由於使用者訪問網站的第一步就是域名解析,所以通過修改dns來引導使用者訪問是最簡單有效的方式.

CDN網路的組成要素

對於普通的Internet使用者,每個CDN節點就相當於一個放置在它周圍的網站伺服器. 通過對dns的接管,使用者的請求被透明地指向離他最近的節點,節點中CDN伺服器會像網站的原始伺服器一樣,響應使用者的請求. 由於它離使用者更近,因而響應時間必然更快.

從上面圖中 虛線圈起來的那塊,就是CDN層,這層是位於 使用者端 和 站點伺服器 之間.

  • 智慧排程DNS(比如f5的3DNS)

    智慧排程DNS是CDN服務中的關鍵系統.當用戶訪問加入CDN服務的網站時,域名解析請求將最終由 “智慧排程DNS”負責處理。它通過一組預先定義好的策略,將當時最接近使用者的節點地址提供給使用者,使使用者可以得到快速的服務。同時它需要與分佈在各地的CDN節點保持通訊,跟蹤各節點的健康狀態、容量等資訊,確保將使用者的請求分配到就近可用的節點上.

  • 快取功能服務

    負載均衡裝置(如lvs,F5的BIG/IP)

    內容Cache伺服器(如squid)

    共享儲存

三、名詞解釋

CNAME記錄(CNAME record)

CNAME即別名( Canonical Name );可以用來把一個域名解析到另一個域名,當 DNS 系統在查詢 CNAME 左面的名稱的時候,都會轉向 CNAME 右面的名稱再進行查詢,一直追蹤到最後的 PTR 或 A 名稱,成功查詢後才會做出迴應,否則失敗。

例如,你有一臺伺服器上存放了很多資料,你使用docs.example.com去訪問這些資源,但又希望通過documents.example.com也能訪問到這些資源,那麼你就可以在您的DNS解析服務商新增一條CNAME記錄,將documents.example.com指向docs.example.com,新增該條CNAME記錄後,所有訪問documents.example.com的請求都會被轉到docs.example.com,獲得相同的內容。

CNAME域名

接入CDN時,在CDN提供商控制檯新增完加速域名後,您會得到一個CDN給您分配的CNAME域名, 您需要在您的DNS解析服務商新增CNAME記錄,將自己的加速域名指向這個CNAME域名,這樣該域名所有的請求才會都將轉向CDN的節點,達到加速效果。

DNS

DNS即Domain Name System,是域名解析服務的意思。它在網際網路的作用是:把域名轉換成為網路可以識別的ip地址。人們習慣記憶域名,但機器間互相只認IP地址,域名與IP地址之間是一一對應的,它們之間的轉換工作稱為域名解析,域名解析需要由專門的域名解析伺服器來完成,整個過程是自動進行的。比如:上網時輸入的www.baidu.com會自動轉換成為220.181.112.143

常見的DNS解析服務商有:阿里雲解析,萬網解析,DNSPod,新網解析,Route53(AWS),Dyn,Cloudflare等。

回源host

回源host:回源host決定回源請求訪問到源站上的具體某個站點。

例子1:源站是域名源站為www.a.com,回源host為www.b.com,那麼實際回源是請求到www.a.com解析到的IP,對應的主機上的站點www.b.com

例子2:源站是IP源站為1.1.1.1, 回源host為www.b.com,那麼實際回源的是1.1.1.1對應的主機上的站點www.b.com

協議回源

指回源時使用的協議和客戶端訪問資源時的協議保持一致,即如果客戶端使用 HTTPS 方式請求資源,當CDN節點上未快取該資源時,節點會使用相同的 HTTPS 方式回源獲取資源;同理如果客戶端使用 HTTP 協議的請求,CDN節點回源時也使用HTTP協議。

近期熱文推薦:

1.1,000+ 道 Java面試題及答案整理(2022最新版)

2.勁爆!Java 協程要來了。。。

3.Spring Boot 2.x 教程,太全了!

4.別再寫滿屏的爆爆爆炸類了,試試裝飾器模式,這才是優雅的方式!!

5.《Java開發手冊(嵩山版)》最新發布,速速下載!

覺得不錯,別忘了隨手點贊+轉發哦!