天天看點

cdn實作原理

在描述CDN的實作原理,讓我們先看傳統的未加緩存服務的通路過程,以便了解CDN緩存通路方式與未加緩存通路方式的差别:

使用者送出域名→浏覽器對域名進行解釋→得到目的主機的IP位址→根據IP位址通路送出請求→得到請求資料并回複

由上可見,使用者通路未使用CDN緩存網站的過程為:

1)、使用者向浏覽器提供要通路的域名;

2)、浏覽器調用域名解析函數庫對域名進行解析,以得到此域名對應的IP位址;

3)、浏覽器使用所得到的IP位址,向域名的服務主機發出資料通路請求;

4)、浏覽器根據域名主機傳回的資料顯示網頁的内容。

通過以上四個步驟,浏覽器完成從使用者處接收使用者要通路的域名到從域名服務主機處擷取資料的整個過程。CDN網絡是在使用者和伺服器之間增加Cache層,如何将使用者的請求引導到Cache上獲得源伺服器的資料,主要是通過接管DNS實作,下面讓我們看看通路使用CDN緩存後的網站的過程:

cdn實作原理

流程圖

通過上圖,我們可以了解到,使用了CDN緩存後的網站的通路過程變為:

2)、浏覽器調用域名解析庫對域名進行解析,由于CDN對域名解析過程進行了調整,是以解析函數庫一般得到的是該域名對應的CNAME記錄,為了得到實際IP位址,浏覽器需要再次對獲得的CNAME域名進行解析以得到實際的IP位址;在此過程中,使用的全局負載均衡DNS解析,如根據地理位置資訊解析對應的IP位址,使得使用者能就近通路。

3)、此次解析得到CDN緩存伺服器的IP位址,浏覽器在得到實際的IP位址以後,向緩存伺服器發出通路請求;

4)、緩存伺服器根據浏覽器提供的要通路的域名,通過Cache内部專用DNS解析得到此域名的實際IP位址,再由緩存伺服器向此實際IP位址送出通路請求;

5)、緩存伺服器從實際IP位址得得到内容以後,一方面在本地進行儲存,以備以後使用,另一方面把擷取的資料傳回給用戶端,完成資料服務過程;

6)、用戶端得到由緩存伺服器傳回的資料以後顯示出來并完成整個浏覽的資料請求過程。

通過以上的分析我們可以得到,為了實作既要對普通使用者透明(即加入緩存以後使用者用戶端無需進行任何設定,直接使用被加速網站原有的域名即可通路,又要在為指定的網站提供加速服務的同時降低對ICP的影響,隻要修改整個通路過程中的域名解析部分,以實作透明的加速服務,下面是CDN網絡實作的具體操作過程。

1)、作為ICP,隻需要把域名解釋權交給CDN營運商,其他方面不需要進行任何的修改;操作時,ICP修改自己域名的解析記錄,一般用cname方式指向CDN網絡Cache伺服器的位址。

2)、作為CDN營運商,首先需要為ICP的域名提供公開的解析,為了實作sortlist,一般是把ICP的域名解釋結果指向一個CNAME記錄;

3)、當需要進行sortlist時,CDN營運商可以利用DNS對CNAME指向的域名解析過程進行特殊處理,使DNS伺服器在接收到用戶端請求時可以根據用戶端的IP位址,傳回相同域名的不同IP位址;

4)、由于從cname獲得的IP位址,并且帶有hostname資訊,請求到達Cache之後,Cache必須知道源伺服器的IP位址,是以在CDN營運商内部維護一個内部DNS伺服器,用于解釋使用者所通路的域名的真實IP位址;

5)、在維護内部DNS伺服器時,還需要維護一台授權伺服器,控制哪些域名可以進行緩存,而哪些又不進行緩存,以免發生開放代理的情況。

繼續閱讀