cdn加速如何實(shí)現(xiàn)?在描述CDN的實(shí)現(xiàn)原理前,讓我們先看傳統(tǒng)的未加緩存服務(wù)的訪問過程,以便了解CDN緩存訪問方式與未加緩存訪問方式的差別:
用戶提交域名→瀏覽器對域名進(jìn)行解釋→得到目的主機(jī)的IP地址→根據(jù)IP地址訪問發(fā)出請求→得到請求數(shù)據(jù)并回復(fù)
由上可見,用戶訪問未使用CDN緩存網(wǎng)站的過程為:
1)、用戶向?yàn)g覽器提供要訪問的域名;
2)、瀏覽器調(diào)用域名解析函數(shù)庫對域名進(jìn)行解析,以得到此域名對應(yīng)的IP地址;
3)、瀏覽器使用所得到的IP地址,向域名的服務(wù)主機(jī)發(fā)出數(shù)據(jù)訪問請求;
4)、瀏覽器根據(jù)域名主機(jī)返回的數(shù)據(jù)顯示網(wǎng)頁的內(nèi)容。
通過以上四個步驟,瀏覽器完成從用戶處接收用戶要訪問的域名到從域名服務(wù)主機(jī)處獲取數(shù)據(jù)的整個過程。CDN網(wǎng)絡(luò)是在 用戶和服務(wù)器之間增加Cache層,如何將用戶的請求引導(dǎo)到Cache上獲得源服務(wù)器的數(shù)據(jù),主要是通過接管DNS實(shí)現(xiàn),下面讓我們看看訪問使用CDN緩 存后的網(wǎng)站的過程:
流程圖
通過上圖,我們可以了解到,使用了CDN緩存后的網(wǎng)站的訪問過程變?yōu)椋?/p>
1)、用戶向?yàn)g覽器提供要訪問的域名;
2)、瀏覽器調(diào)用域名解析庫對域名進(jìn)行解析,由于CDN對域名解析過程進(jìn)行了調(diào)整,所以解析函數(shù)庫一般得到的是該域 名對應(yīng)的CNAME記錄,為了得到實(shí)際IP地址,瀏覽器需要再次對獲得的CNAME域名進(jìn)行解析以得到實(shí)際的IP地址;在此過程中,使用的全局負(fù)載均衡 DNS解析,如根據(jù)地理位置信息解析對應(yīng)的IP地址,使得用戶能就近訪問。
3)、此次解析得到CDN緩存服務(wù)器的IP地址,瀏覽器在得到實(shí)際的IP地址以后,向緩存服務(wù)器發(fā)出訪問請求;
4)、緩存服務(wù)器根據(jù)瀏覽器提供的要訪問的域名,通過Cache內(nèi)部專用DNS解析得到此域名的實(shí)際IP地址,再由緩存服務(wù)器向此實(shí)際IP地址提交訪問請求;
5)、緩存服務(wù)器從實(shí)際IP地址得得到內(nèi)容以后,一方面在本地進(jìn)行保存,以備以后使用,另一方面把獲取的數(shù)據(jù)返回給客戶端,完成數(shù)據(jù)服務(wù)過程;
6)、客戶端得到由緩存服務(wù)器返回的數(shù)據(jù)以后顯示出來并完成整個瀏覽的數(shù)據(jù)請求過程。
通過以上的分析我們可以得到,為了實(shí)現(xiàn)既要對普通用戶透明(即加入緩存以后用戶客戶端無需進(jìn)行任何設(shè)置,直接使用被 加速網(wǎng)站原有的域名即可訪問,又要在為指定的網(wǎng)站提供加速服務(wù)的同時降低對ICP的影響,只要修改整個訪問過程中的域名解析部分,以實(shí)現(xiàn)透明的加速服務(wù)。
下面是CDN網(wǎng)絡(luò)實(shí)現(xiàn)的具體操作過程:
1)、作為ICP,只需要把域名解釋權(quán)交給CDN運(yùn)營商,其他方面不需要進(jìn)行任何的修改;操作時,ICP修改自己域名的解析記錄,一般用cname方式指向CDN網(wǎng)絡(luò)Cache服務(wù)器的地址。
2)、作為CDN運(yùn)營商,首先需要為ICP的域名提供公開的解析,為了實(shí)現(xiàn)sortlist,一般是把ICP的域名解釋結(jié)果指向一個CNAME記錄;
3)、當(dāng)需要進(jìn)行sortlist時,CDN運(yùn)營商可以利用DNS對CNAME指向的域名解析過程進(jìn)行特殊處理,使DNS服務(wù)器在接收到客戶端請求時可以根據(jù)客戶端的IP地址,返回相同域名的不同IP地址;
4)、由于從cname獲得的IP地址,并且?guī)в衕ostname信息,請求到達(dá)Cache之后,Cache必須知道源服務(wù)器的IP地址,所以在CDN運(yùn)營商內(nèi)部維護(hù)一個內(nèi)部DNS服務(wù)器,用于解釋用戶所訪問的域名的真實(shí)IP地址;
5)、在維護(hù)內(nèi)部DNS服務(wù)器時,還需要維護(hù)一臺授權(quán)服務(wù)器,控制哪些域名可以進(jìn)行緩存,而哪些又不進(jìn)行緩存,以免發(fā)生開放代理的情況。