cdn 概述
前面我們介紹了 http 快取的原理,以及基於瀏覽器快取和閘道器快取來實現 http 快取,瀏覽器快取由於其侷限性並不是主流的快取實現方案,而閘道器快取雖然解決了瀏覽器快取的問題,但是所有請求仍然要傳送到伺服器部署的資料中心,而我們的使用者是分散在天南海北的,距離資料中心越遠網路延遲越大,能不能有一種快取方案可以讓使用者可以就近獲取快取資源呢,這就引入了我們今天要介紹的主題 —— cdn 快取。
cdn 的英文全稱是 content delivery network,即內容分發網路。cdn 快取其實是應用服務提供商與網路服務提供商簽約,將應用指定的靜態資源儲存到網路服務提供商的邊緣節點,因為使用者接入網際網路都是通過網路服務商實現的,不同使用者使用的網路服務商(如電信、聯通、移動)不盡相同,使用者通過自己所在網路服務商的邊緣節點、區域節點、中心節點最終接入應用所在的資料中心,才能訪問到應用服務端資源,其中邊緣節點是離使用者最近的運營商伺服器節點,應用服務商與網路服務商簽約後,就可以將靜態資源快取到這些邊緣節點,這樣,不同區域的使用者就可以就近從邊緣節點獲取快取資源,從而極大提高訪問速度,所以 cdn 主要解決的是下面兩個問題:
cdn 實現原理
那麼 cdn 快取具體是怎麼實現的呢?
在沒有 cdn 的情況下,使用者向瀏覽器輸入 www.web.com 這個網域名稱,客戶端會根據 dns 服務獲取到網域名稱對應的 ip 位址具體實現原理可參考 dns 服務),並將 ip 位址返回,然後客戶端通過這個 ip 位址和預設的 http 應用埠號,就可以訪問到伺服器端的這個**應用。
有了 cdn 之後,情況會發生變化。在 web.com 對應的權威 dns 伺服器上,會設定乙個 cname 別名(這可以通過在網域名稱服務商那裡通過設定 cname 網域名稱解析實現),指向另外乙個網域名稱,假設這個網域名稱是 www.web.cdn.com ,並將其返回給本地 dns 伺服器。當本地 dns 伺服器拿到這個新的網域名稱時,需要繼續解析這個新的網域名稱。這個時候,再訪問的就不是 web.com 的權威 dns 伺服器了,而是 web.cdn.com 的權威 dns 伺服器,這是 cdn 自己的權威 dns 伺服器。在這個伺服器上,還是會設定乙個 cname,指向另外乙個網域名稱,也即 cdn 網路的全域性負載均衡器。
接下來,本地 dns 伺服器去請求 cdn 的全域性負載均衡器解析網域名稱,全域性負載均衡器會為使用者選擇一台合適的快取伺服器提供服務,選擇的依據包括:
基於以上這些條件,進行綜合分析之後,全域性負載均衡器會返回一台快取伺服器的 ip 位址。
完整的實現流程可以通過下面這張圖來描述:
cdn 常用於快取變動很小的靜態資源,比如靜態頁面、、資源檔案等。如果用一張圖來描述不同快取實現方案的架構關係,可以這樣來體現:
靜態內容中,有一種特殊的內容,也大量使用了 cdn,這個就是流**。cdn 支援流**協議,例如 rtmp 協議。在很多情況下,這相當於乙個**,從上一級快取讀取內容,**給使用者。由於流**往往是連續的,因而可以進行預先快取的策略,也可以預先推送到使用者的客戶端。對於一般靜態頁面而言,內容的分發往往採取拉取的方式,也即當發現未命中的時候,再去上一級進行拉取。但是,流**資料量大,如果出現回源,壓力會比較大,所以往往採取主動推送的模式,將熱點資料主動推送到邊緣節點。關於流**的 cdn 快取實現細節,後面介紹完流**協議及其實現後會繼續介紹。
網路協議(三) HTTP協議
http全稱是hypertext transfer protocal,即 超文字傳輸協議,http連線最顯著的特點是客戶端傳送的每次請求都需要伺服器回送響應,在請求結束後,會主動釋放連線。從建立連線到關閉連線的過程稱為 一次連線 http是乙個應用層協議,由請求和響應構成,是乙個標準的客戶端伺服器模...
網路協議 HTTP協議簡介
http的作用 http hyper text transfer protocol 超文字傳輸協議,是基於應用層 tcp ip參考模型 的通訊規範 是從web伺服器傳輸超文字到客戶端的傳輸協議,無狀態的傳輸協議 不僅能夠保證正確 快速 高效的傳輸超文字文件,而且可以確定資源載入順序等。http是不儲...
Http協議詳解
http協議是乙個基於tcp ip 的協議,使用的是一種請求 響應模型 目前的版本為1。1,但有一些 仍然使用1。0的版本,在待會的實驗中,我們可以看到,網易的主頁163.com仍舊使用的1.0的標準。1 何為請求 響應機制 在這一種機制中,總是客戶端請求伺服器,伺服器接受響應後根據請求端的請求資訊...