CDN網(wǎng)絡(luò)加速原理
本文轉(zhuǎn)載自微信公眾號(hào)「程序員小飯」,作者飯米粒 。轉(zhuǎn)載本文請(qǐng)聯(lián)系程序員小飯公眾號(hào)。
CDN
CDN的全稱是Content Delivery Network,即內(nèi)容分發(fā)網(wǎng)絡(luò)。其目的是通過在現(xiàn)有的Internet中增加一層新的網(wǎng)絡(luò)架構(gòu),將網(wǎng)站的內(nèi)容發(fā)布到最接近用戶的網(wǎng)絡(luò)“邊緣”,使用戶可以就近取得所需的內(nèi)容,提高用戶訪問網(wǎng)站的響應(yīng)速度。CDN有別于鏡像,因?yàn)樗如R像更智能,或者可以做這樣一個(gè)比喻:CDN=更智能的鏡像+緩存+流量導(dǎo)流。因而,CDN可以明顯提高Internet網(wǎng)絡(luò)中信息流動(dòng)的效率。從技術(shù)上全面解決由于網(wǎng)絡(luò)帶寬小、用戶訪問量大、網(wǎng)點(diǎn)分布不均等問題,提高用戶訪問網(wǎng)站的響應(yīng)速度。下面是一個(gè)簡(jiǎn)單的CND示意圖
如上圖所示,是CDN一個(gè)常見的架構(gòu)示意圖,其工作流程可以總結(jié)為:當(dāng)用戶訪問已經(jīng)加入CDN服務(wù)的網(wǎng)站時(shí),首先通過DNS重定向技術(shù)確定最接近用戶的最佳CDN節(jié)點(diǎn),同時(shí)將用戶的請(qǐng)求指向該節(jié)點(diǎn)。當(dāng)用戶的請(qǐng)求到達(dá)指定節(jié)點(diǎn)時(shí),CDN的服務(wù)器(節(jié)點(diǎn)上的高速緩存)負(fù)責(zé)將用戶請(qǐng)求的內(nèi)容提供給用戶。具體流程為: 用戶在自己的瀏覽器中輸入要訪問的網(wǎng)站的域名,瀏覽器向本地DNS請(qǐng)求對(duì)該域名的解析,本地DNS將請(qǐng)求發(fā)到網(wǎng)站的主DNS,主DNS根據(jù)一系列的策略確定當(dāng)時(shí)最適當(dāng)?shù)腃DN節(jié)點(diǎn),并將解析的結(jié)果(IP地址)發(fā)給用戶,用戶向給定的CDN節(jié)點(diǎn)請(qǐng)求相應(yīng)網(wǎng)站的內(nèi)容
工作原理
CDN網(wǎng)絡(luò)是在用戶和服務(wù)器之間增加Cache層,主要是通過接管DNS實(shí)現(xiàn),將用戶的請(qǐng)求引導(dǎo)到Cache上獲得源服務(wù)器的數(shù)據(jù),從而降低網(wǎng)絡(luò)的訪問時(shí)間。
未加緩存服務(wù)的訪問過程
首先,讓我們看一下傳統(tǒng)的未加緩存服務(wù)的訪問過程:
如圖可以看出,傳統(tǒng)的網(wǎng)絡(luò)訪問的流程如下:
1:用戶輸入訪問的域名,操作系統(tǒng)向 LocalDns 查詢域名的ip地址;2:LocalDns向 ROOT DNS 查詢域名的授權(quán)服務(wù)器(這里假設(shè)LocalDns緩存過期);3:ROOT DNS將域名授權(quán)dns記錄回應(yīng)給 LocalDns;4:LocalDns得到域名的授權(quán)dns記錄后,繼續(xù)向域名授權(quán)dns查詢域名的ip地址;5:域名授權(quán)dns 查詢域名記錄后,回應(yīng)給 LocalDns;6:LocalDns 將得到的域名ip地址,回應(yīng)給用戶端;7:用戶得到域名ip地址后,訪問站點(diǎn)服務(wù)器;8:站點(diǎn)服務(wù)器應(yīng)答請(qǐng)求,將內(nèi)容返回給客戶端.
使用CDN緩存后的網(wǎng)站的訪問過程
如上圖,是使用CDN緩存后的網(wǎng)絡(luò)訪問流程:
1:用戶輸入訪問的域名,操作系統(tǒng)向 LocalDns 查詢域名的ip地址;
2:LocalDns向 ROOT DNS 查詢域名的授權(quán)服務(wù)器(這里假設(shè)LocalDns緩存過期);
3:ROOT DNS將域名授權(quán)dns記錄回應(yīng)給 LocalDns;
4:LocalDns得到域名的授權(quán)dns記錄后,繼續(xù)向域名授權(quán)dns查詢域名的ip地址;
5:域名授權(quán)dns 查詢域名記錄后(一般是CNAME),回應(yīng)給 LocalDns;
6:LocalDns 得到域名記錄后,向智能調(diào)度DNS查詢域名的ip地址;
7:智能調(diào)度DNS 根據(jù)一定的算法和策略(比如靜態(tài)拓?fù)?,容量?,將最適合的CDN節(jié)點(diǎn)ip地址回應(yīng)給 LocalDns;
8:LocalDns 將得到的域名ip地址,回應(yīng)給用戶端;
9:用戶得到域名ip地址后,訪問站點(diǎn)服務(wù)器。宗上,CDN網(wǎng)絡(luò)是在用戶和服務(wù)器之間增加Cache層,主要是通過接管DNS實(shí)現(xiàn),將用戶的請(qǐng)求引導(dǎo)到Cache上獲得源服務(wù)器的數(shù)據(jù),從而降低網(wǎng)絡(luò)的訪問的速度。