5分钟了解CDN 加速原理 | +新书推荐
點擊上方“朱小廝的博客”,選擇“設為星標”
后臺回復"書",獲取
后臺回復“k8s”,可領取k8s資料
來源:r6d.cn/YX4Y一、什么是 CDN
CDN 的全稱是(Content Delivery Network),即內容分發網絡。其目的是通過在現有的Internet中增加一層新的CACHE(緩存)層,將網站的內容發布到最接近用戶的網絡”邊緣“的節點,使用戶可以就近取得所需的內容,提高用戶訪問網站的響應速度。從技術上全面解決由于網絡帶寬小、用戶訪問量大、網點分布不均等原因,提高用戶訪問網站的響應速度。
簡單的說,CDN 的工作原理就是將您源站的資源緩存到位于全球各地的 CDN 節點上,用戶請求資源時,就近返回節點上緩存的資源,而不需要每個用戶的請求都回您的源站獲取,避免網絡擁塞、緩解源站壓力,保證用戶訪問資源的速度和體驗。
CDN 對網絡的優化作用主要體現在如下幾個方面
解決服務器端的“第一公里”問題
緩解甚至消除了不同運營商之間互聯的瓶頸造成的影響
減輕了各省的出口帶寬壓力
緩解了骨干網的壓力
優化了網上熱點內容的分布
二、CDN工作原理
傳統訪問過程
傳統訪問過程
由上圖可見,用戶訪問未使用CDN緩存網站的過程為:
用戶輸入訪問的域名,操作系統向 LocalDns 查詢域名的 ip 地址
LocalDns向 ROOT DNS 查詢域名的授權服務器(這里假設LocalDns緩存過期)
ROOT DNS將域名授權 dns記錄回應給 LocalDns
LocalDns 得到域名的授權 dns 記錄后,繼續向域名授權 dns 查詢域名的 ip 地址
域名授權 dns 查詢域名記錄后,回應給 LocalDns
LocalDns 將得到的域名ip地址,回應給 用戶端
用戶得到域名 ip 地址后,訪問站點服務器
站點服務器應答請求,將內容返回給客戶端
CDN 訪問過程
通過上圖,我們可以了解到,使用了CDN緩存后的網站的訪問過程變為:
用戶輸入訪問的域名,操作系統向 LocalDns 查詢域名的ip地址.
LocalDns向 ROOT DNS 查詢域名的授權服務器(這里假設LocalDns緩存過期)
ROOT DNS將域名授權dns記錄回應給 LocalDns
LocalDns得到域名的授權dns記錄后,繼續向域名授權dns查詢域名的ip地址
域名授權dns 查詢域名記錄后(一般是CNAME),回應給 LocalDns
LocalDns 得到域名記錄后,向智能調度DNS查詢域名的ip地址
智能調度DNS 根據一定的算法和策略(比如靜態拓撲,容量等),將最適合的CDN節點ip地址回應給 LocalDns
LocalDns 將得到的域名ip地址,回應給 用戶端
用戶得到域名ip地址后,訪問站點服務器
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協議。
推薦書籍——《Java性能優化實踐》
Java 性能優化是一個老生常談的話題,尤其是在“糙快猛”的互聯網開發模式大行其道的今天,隨著系統訪問量的日益增加和代碼的臃腫,各種性能問題開始紛至沓來。本書從各個角度,由表及里地為讀者透析 Java 性能優化的本質,相信大家在讀完本書之后會對此有一個更深層次的認知。
總結
以上是生活随笔為你收集整理的5分钟了解CDN 加速原理 | +新书推荐的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 作为前阿里人,来扒一扒中台皇帝的外衣!
- 下一篇: JAVA字节码指令iload_n为什么只