CDN 加速原理
熱衷京東平臺的朋友大部分是被他極致的物流體驗(yàn)折服的,因?yàn)榫〇|買東西經(jīng)常第二天就到了,更有甚者上午買下午就到。而同樣知名的淘寶則很難做到這點(diǎn),這是由于京東在全國的各個(gè)城市都有自己的倉庫系統(tǒng),可以做到就近配送,而淘寶上都是獨(dú)立的商家,每件商品都得從原廠地發(fā)貨過來。CDN 全稱 Content Delivery Network 即內(nèi)容分發(fā)網(wǎng)絡(luò),它就類似京東的物流配送體系,通過智能分配算法,讓用戶最近最快速的獲取到他們想要訪問的資源。
1. 基礎(chǔ)原理
八秒定律是在互聯(lián)網(wǎng)領(lǐng)域存在的一個(gè)定律,即指用戶訪問一個(gè)網(wǎng)站時(shí),如果等待網(wǎng)頁打開的時(shí)間超過八秒,會有超過 70% 的用戶放棄等待。而網(wǎng)絡(luò)環(huán)境越來越復(fù)雜,傳輸數(shù)據(jù)越來越豐富,對網(wǎng)站的訪問響應(yīng)時(shí)間帶來了一個(gè)比較大的挑戰(zhàn),CDN 就是誕生在這樣一個(gè)環(huán)境中,通過負(fù)載均衡算法,為請求提供最靠近的響應(yīng)資源,達(dá)到網(wǎng)站的內(nèi)容加速。
2. 系統(tǒng)架構(gòu)
CDN 節(jié)點(diǎn)主要是分布在各省各城市的運(yùn)營商機(jī)房里面,詳細(xì)的實(shí)現(xiàn)過程如下:
- 用戶請求一個(gè)域名地址;
- 瀏覽器對域名進(jìn)行解析;
- 由于域名被 CDN 接管了,對域名的解析后只能獲取到 CNAME,CDN 就是借助 CNAME 將訪問的地址代理到對應(yīng)的 CDN 服務(wù)器,而不是域名對應(yīng)的原站;
- 瀏覽器通過 CNAME 獲取到最近的 CDN 服務(wù)器的 Ip 地址,然后直接訪問 CDN 緩存服務(wù)器;
- CDN 緩存服務(wù)器根據(jù)策略判斷請求的資源緩存里面有沒有,需不需要回原站更新,并將資源返回給用戶。
2.1 dig 命令
dig
是一個(gè)查詢 DNS 解析詳情的命令工具(在 window 的 cmd 終端或者Linux Shell 命令中執(zhí)行),網(wǎng)宿科技是國內(nèi)最大的 CDN 廠商,下面我們 dig
下網(wǎng)宿的官網(wǎng)看下解析詳情。
adeMacBook-Pro:~ zhourj$ dig www.wangsu.com
; <<>> DiG 9.10.6 <<>> www.wangsu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27326
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.wangsu.com. IN A
;; ANSWER SECTION:
www.wangsu.com. 2988 IN CNAME www.wangsu.com.wscdns.com.
www.wangsu.com.wscdns.com. 30 IN A 112.5.63.200
;; Query time: 20 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Wed Apr 01 10:15:00 CST 2020
;; MSG SIZE rcvd: 84
- 通過 dig 命令我們查詢到
www.wangsu.com
對應(yīng)的 cname 是www.wangsu.com.wscdns.com
; - cname 對應(yīng)的 A 記錄即 Ip 地址是
112.5.63.200
; - 所以最終是
112.5.63.200
這臺緩存服務(wù)器給我們提供了服務(wù),它不止起到緩存加速的作用,還保護(hù)了原站的真實(shí) Ip。
3. CDN 應(yīng)用場景
3.1 網(wǎng)頁加速
網(wǎng)頁加速是最早期也是最普遍的 CDN 應(yīng)用,主要 緩存(加速) 了靜態(tài) Html,Js,Css 或者圖片等不變的資源。
3.2 流媒體加速
4G 的到來帶火了短視頻,流媒體這種資源對帶寬要求也是很高的,所以將一部分的媒體資源提前放置在 CDN 服務(wù)器也是很有必要的。
3.3 文件下載加速
冠狀病毒迫使企業(yè)和學(xué)生在家辦公和學(xué)習(xí),釘釘?shù)南螺d量暴增,我們能夠順利的從各個(gè) APP 商店下載到,也是歸功于 CDN 的加速。提前把對應(yīng)的安裝包放到了各個(gè)地方的近端的 CND 服務(wù)器。
3.4 邊緣計(jì)算
CDN 的發(fā)展不斷在變更,從早期的靜態(tài)內(nèi)容,到后面的支持動態(tài)內(nèi)容的加速,再到后面有了邊緣計(jì)算的概念(CDN 和邊緣計(jì)算是一種很好的結(jié)合,但是邊緣計(jì)算的概念不限于此)。
早期可能是簡單的把視頻內(nèi)容緩存到 CDN 服務(wù)器,如借助邊緣計(jì)算可以實(shí)現(xiàn)在近端對視頻的壓縮和解壓縮等操作,就可以進(jìn)一步降低傳輸?shù)骄W(wǎng)絡(luò)帶寬,達(dá)到加速的目的。
3.5 網(wǎng)格化計(jì)算
通過智能的優(yōu)化網(wǎng)絡(luò)傳輸路徑,達(dá)到加速。優(yōu)化的方式主要有:
- 智能選擇最優(yōu)傳輸路線;
- 借助 CDN 廠商的服務(wù)器資源,開辟私有的專線路線。
4. 小結(jié)
CDN 是一種提升網(wǎng)站響應(yīng)速度的技術(shù),主要是用了緩存的原理,將原站中的資源提前放置到了各個(gè)城市靠近當(dāng)?shù)赜脩舻哪承┕?jié)點(diǎn)服務(wù)器上面。實(shí)現(xiàn)上是借助了 DNS 的 Cname 技術(shù),將原本要訪問的某個(gè)原站域名,重定向到另一個(gè)靠近的 CDN 節(jié)點(diǎn)上面。