天天看點

CDN工作原理分析

一、什麼CDN

    首先我們假設一個場景,以淘寶為例。如果我們每次打開淘寶頁面時,所有的資訊都需要從源站伺服器獲得,可能同時有千萬級的使用者同時向源站伺服器請求擷取資料,那麼有極大可能會發生嚴重的網絡擁塞,使用者通路數越多,擁塞越嚴重,網站就會在最需要向使用者提供服務的時候失去使用者。

    如果在使用者的附近就有一個節點,當使用者請求資料時,優先從離它最近的節點獲得資料,顯而易見,使用者通路網站的響應速度也得到很大的提高。

    CDN就可以了解為這些離使用者最近的“邊緣”節點,CDN(content delivery network)是在現有internet上增加一層新的網絡架構,将網站的内容分布到離使用者最近的網絡“邊緣”,使使用者可以就近取得所需的内容,提高響應速度。

    那麼CDN的優勢也就很明顯了:1)實作了跨地區、跨營運商的通路,大大降低了通路時延;2)大部分請求在“邊緣”節點完成,起到了分流的作用,減輕了源站的負擔。

    目前CDN都以緩存網站中的靜态資料為主,如CSS,JS,圖檔和靜态頁面等資料,使用者從主站伺服器請求到動态内容後,再從CDN中下載下傳靜态資料,進而加速網頁資料内容的下載下傳速度,如淘寶上90%的資料都是由CDN來提供的。

二、CDN架構及工作原理

CDN工作原理分析

    以上圖為例,我們分析CDN的通路步驟:

    step1:使用者向localDNS發起請求查詢輸入域名對應的IP位址;

    step2:localDNS疊代向rootDNS查詢,rootDNS傳回權限DNS記錄;

    step3:獲得權限DNS後,localDNS向權限DNS發起域名解析請求;

    step4:權限DNS通常會将域名CNAME(别名解析)到另一個域名,這個域名最終會被指向CDN網絡中的智能DNS負載均衡系統;

    step5:DNS負載均衡系統通過一些智能算法,将最合适的CDN節點IP位址傳回給localDNS;

    step6:localDNS将獲得的IP位址傳回給使用者;

    step7:使用者得到節點的IP位址後,向該節點發起通路請求;

    step8:CDN節點傳回請求檔案,如果該節點中請求的檔案不存在,就會再回到源站擷取這個檔案,然後傳回給使用者。

    從以上步驟可以看出,CDN的兩個關鍵技術在于:

    1)DNS排程技術:把不同營運商、不同地區的使用者排程到離使用者最優的CDN節點上;

    2)CDN節點緩存代理技術:緩存即當使用者向節點通路未過期的資料時,節點直接傳回使用者資料,提高響應速度;代理即目前節點沒有使用者請求的資料時,節點代理使用者向源站請求資料然後傳回給使用者。

    每個CDN節點由兩部分組成:負載均衡裝置和高速緩存伺服器。負載均衡裝置負責維護節點中各個cache的負載均衡,保證節點的工作效率,此外,負載均衡裝置還負責收集節點和外部環境的資訊,保持與全局負載DNS的通信,實作全局的負載均衡。

    負載均衡技術還沒有做深入研究,後期補上,move on!!!

————————————————————————————————————————————————————

參考部落格相關連結:

    https://www.cnblogs.com/wish123/p/5540177.html

    https://www.cnblogs.com/tinywan/p/6067126.html

    《深入分析Java web技術内幕》