隨着互聯網的發展,用戶在使用網絡時對網站的瀏覽速度和效果越發重視,但因爲網民數量激增,網絡訪問路徑過長,從 而使用戶的訪問質量受到嚴重影響。特別是當用戶與網站之間的鏈路被突發的大流量數據擁塞時,對於異地互聯網用戶急速增長的地區來講,訪問質量不良更是一個 急待解決的問題。
不少時候,你們都在談CDN,那麼何爲CDN,原理是什麼,今天就給你們普及普及。web
CDN
CDN的全稱是Content Delivery Network,即內容分發網絡。其目的是經過在現有的Internet中增長一層新的網絡架構,將網站的內容發佈到最接近用戶的網絡「邊緣」,使用戶能夠就近取得所需的內容,提升用戶訪問網站的響應速度。CDN有別於鏡像,由於它比鏡像更智能,或者能夠作這樣一個比喻:CDN=更智能的鏡像+緩存+流量導流。於是,CDN能夠明顯提升Internet網絡中信息流動的效率。從技術上全面解決因爲網絡帶寬小、用戶訪問量大、網點分佈不均等問題,提升用戶訪問網站的響應速度。算法
下面是CDN的一個簡單的示意圖:
瀏覽器
如上圖所示,是CDN一個常見的架構示意圖,其工做流程能夠總結爲:當用戶訪問已經加入CDN服務的網站時,首先經過DNS重定向技術肯定最接近用戶的最佳CDN節點,同時將用戶的請求指向該節點。當用戶的請求到達指定節點時,CDN的服務器(節點上的高速緩存)負責將用戶請求的內容提供給用戶。具體流程爲: 用戶在本身的瀏覽器中輸入要訪問的網站的域名,瀏覽器向本地DNS請求對該域名的解析,本地DNS將請求發到網站的主DNS,主DNS根據一系列的策略肯定當時最適當的CDN節點,並將解析的結果(IP地址)發給用戶,用戶向給定的CDN節點請求相應網站的內容。緩存
CDN相關技術
CDN的實現須要依賴多種網絡技術的支持,其中最主要的包括負載均衡技術、動態內容分發與複製技術、緩存技術等。服務器
負載均衡技術
負載均衡技術不只僅應用於CDN中,在網絡的不少領域都獲得了普遍的應用,如服務器的負載均衡、網絡流量的負載均衡。顧名思義,網絡中的負載均衡就是將網絡的流量儘量均勻分配到幾個能完成相同任務的服務器或網絡節點上,由此來避免部分網絡節點過載。這樣既能夠提升網絡流量,又提升了網絡的總體性能。在CDN中,負載均衡又分爲服務器負載均衡和服務器總體負載均衡(也有的稱爲服務器全局負載均衡)。服務器負載均衡是指可以在性能不一樣的服務器之間進行任務分配,既能保證性能差的服務器不成爲系統的瓶頸,又能保證性能高的服務器的資源獲得充分利用。而服務器總體負載均衡容許Web網絡託管商、門戶站點和企業根據地理位置分配內容和服務。經過使用多站點內容和服務來提升容錯性和可用性,防止因本地網或區域網絡中斷、斷電或天然災害而致使的故障。在CDN的方案中服務器總體負載均衡將發揮重要做用,其性能高低將直接影響整個CDN的性能。網絡
動態分發與複製技術
衆所周知,網站訪問響應速度取決於許多因素,如網絡的帶寬是否有瓶頸、傳輸途中的路由是否有阻塞和延遲、網站服務器的處理能力及訪問距離等。多數狀況下,網站響應速度和訪問者與網站服務器之間的距離有密切的關係。若是訪問者和網站之間的距離過遠的話,它們之間的通訊同樣須要通過重重的路由轉發和處理,網絡延誤不可避免。一個有效的方法就是利用內容分發與複製技術,將佔網站主體的大部分靜態網頁、圖像和流媒體數據分發複製到各地的加速節點上。因此動態內容分發與複製技術也是CDN所需的一個主要技術。架構
緩存技術
緩存技術已經不是一種新鮮技術。Web緩存服務經過幾種方式來改善用戶的響應時間,如代理緩存服務、透明代理緩存服務、使用重定向服務的透明代理緩存服務等。經過Web緩存服務,用戶訪問網頁時能夠將廣域網的流量降至最低。對於公司內聯網用戶來講,這意味着將內容在本地緩存,而無須經過專用的廣域網來檢索網頁。對於Internet用戶來講,這意味着將內容存儲在他們的ISP的緩存器中,而無須經過Internet來檢索網頁。這樣無疑會提升用戶的訪問速度。CDN的核心做用正是提升網絡的訪問速度,因此,緩存技術將是CDN所採用的又一個主要技術。負載均衡
工做原理
CDN網絡是在用戶和服務器之間增長Cache層,主要是經過接管DNS實現,將用戶的請求引導到Cache上得到源服務器的數據,從而下降網絡的訪問時間。
首先,讓咱們看一下傳統的未加緩存服務的訪問過程:
如圖能夠看出,傳統的網絡訪問的流程以下:svg
- 用戶輸入訪問的域名,操做系統向 LocalDns 查詢域名的ip地址;
- LocalDns向 ROOT DNS 查詢域名的受權服務器(這裏假設LocalDns緩存過時);
- ROOT DNS將域名受權dns記錄迴應給 LocalDns;
- LocalDns獲得域名的受權dns記錄後,繼續向域名受權dns查詢域名的ip地址;
- 域名受權dns 查詢域名記錄後,迴應給 LocalDns;
- LocalDns 將獲得的域名ip地址,迴應給用戶端;
- 用戶獲得域名ip地址後,訪問站點服務器;
- 站點服務器應答請求,將內容返回給客戶端.
下面讓咱們看一下使用CDN緩存後的網站的訪問過程:
如上圖,是使用CDN緩存後的網絡訪問流程:性能
- 用戶輸入訪問的域名,操做系統向 LocalDns 查詢域名的ip地址;
- LocalDns向 ROOT DNS 查詢域名的受權服務器(這裏假設LocalDns緩存過時);
- ROOT DNS將域名受權dns記錄迴應給 LocalDns;
- LocalDns獲得域名的受權dns記錄後,繼續向域名受權dns查詢域名的ip地址;
- 域名受權dns 查詢域名記錄後(通常是CNAME),迴應給 LocalDns;
- LocalDns 獲得域名記錄後,向智能調度DNS查詢域名的ip地址;
- 智能調度DNS 根據必定的算法和策略(好比靜態拓撲,容量等),將最適合的CDN節點ip地址迴應給 LocalDns;
- LocalDns 將獲得的域名ip地址,迴應給用戶端;
- 用戶獲得域名ip地址後,訪問站點服務器。
宗上,CDN網絡是在用戶和服務器之間增長Cache層,主要是經過接管DNS實現,將用戶的請求引導到Cache上得到源服務器的數據,從而下降網絡的訪問的速度。
本文同步分享在 博客「xiangzhihong8」(CSDN)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。