定義: CDN 即內容分佈網路,(Content Delivery Netwrok) ,是構築在現有Internet上的一種先進的流量分配網路,其目的是通過在現有的Internet中增加一層新的網路架構,將網站的內容發佈到最接近用戶的網路“邊緣”,使用戶可以就近取得所需的內容,提高用戶訪問網站的相應 ...
定義:
CDN 即內容分佈網路,(Content Delivery Netwrok) ,是構築在現有Internet上的一種先進的流量分配網路,其目的是通過在現有的Internet中增加一層新的網路架構,將網站的內容發佈到最接近用戶的網路“邊緣”,使用戶可以就近取得所需的內容,提高用戶訪問網站的相應速度。有別於鏡像,但是比鏡像更智能,可以做個比喻:
CDN = 鏡像(mirror) + 緩存(cache) + 整體負載均衡(GSLB) , 所以,CDN 可以明顯提高網路中的信息流動的效率。
目前CDN 都以緩存網站中的靜態數據為主,如CSS,JS ,圖片和靜態頁面等數據,運營商的寬頻電視網路除外,以移動為例,移動的寬頻電視CDN,則是以節目資源為主。 用戶在從主站伺服器請求到動態內容後,再從CDN 下載這些緩存數據,從而加速網頁數據內容的下載速度,比如淘寶。90%以上的數據都是由CDN 來提供的。
CND 達到的要求:
可擴展性:
性能可擴展: 為應對新增的大量數據,用戶和事務的擴展能力。
成本可擴展:用低廉的運營成本提供動態的服務能力和高質量的內容分發。
安全性:
強調提供物理設備,網路,軟體,數據和服務過程的安全性(趨勢) 減少因為DDoS 攻擊或者其他惡意行為造成的商業網站業務中斷
可靠,相應和執行性:
服務可用性指能夠處理可能的故障和用戶體驗下降的問題,通過負載均衡及時提供網路的容錯機制。
CDN 架構:
Web 請求過程
如果是訪問某個靜態文件 如CSS,這個靜態文件的地址比如是www.baidu.com。則會首先向Local DNS 伺服器發起請求,經過迭代解析後,會回到這個功能變數名稱的註冊伺服器去解析,一般公司都會有一個DNS解析伺服器,這時這個DNS 伺服器通常會把它重新CNAME 解析到另外一個功能變數名稱,而這個功能變數名稱最終會被指向CDN 全局中的DNS 負載均衡器,再由這個GTM 來最終分配是哪個地方的訪問用戶,返回給離這個訪問用戶最近的CDN節點。拿到DNS 解析結果,用戶就會直接去這個CDN節點訪問這個靜態文件了 。如果這個節點中所請求的文件不存在,就會再回到源站去獲取這個文件,然後再返回給用戶。
負載均衡:
負載均衡就(Load Balance) 就是對工作任務進行平衡,分攤到多個操作單元,伺服器上進行執行嗎,比如專門的圖片伺服器,應用伺服器,Web伺服器等,共同完成工作任務,它可以提高伺服器響應速度以及利用效率,避免軟體或者硬體的模塊出現單點失效,解決網路擁塞問題,實現地理位置的無關聯性,提供較為一致的訪問質量,是分散式系統的精髓所在。
三種負載均衡的架構:
鏈路負載均衡,集群負載均衡,操作系統負載均衡。
鏈路負載均衡:
即通過DNS 解析成不同的IP,然後用戶通過IP 來訪問不同的目標伺服器。這種負載均衡是由DNS的解析來完成的,用戶最終訪問哪個Web伺服器是由DNS Server來控制的,在這裡就是下麵的Global DNS Server來動態解析功能變數名稱服務,這種DNS 解析的有點是用戶會直接訪問目標伺服器,不需要經過其他代理的伺服器,速度快,但是因為DNS 在用戶本地和Local DNS Server 都有緩存,如果某台Web伺服器掛了,那麼就很難及時更新用戶的功能變數名稱解析結構。如果用戶功能變數名稱沒有更新,那麼就會無法訪問該功能變數名稱。
集群負載均衡:
集群負載是另外一種常見的負載均衡方式,它一般分為硬體負載和軟體負載,硬體負載使用一臺專門的硬體設備來進行請求的轉發,如圖,恰恰硬體負載均衡的關鍵就是這台轉發請求的設備,這是一臺非常昂貴的設備,通常為了安全需要,一主一備,優點是性能非常好,缺點就是非常昂貴,一般公司是用不起的,而且當訪問量突然增大超出伺服器極限的時候,不能進行動態的擴容。
硬體負載均衡
軟體負載均衡: 這是使用最普遍的一種方式,使用成本非常低,直接使用簡單的PC 就可以搭建,當然缺點就是一般一次訪問請求需要經過多次代理伺服器,會增加網路的延時,如圖。上面兩台LVS,使用四層負載均衡, 即在網路層利用IP地址進行地址轉發,下麵三台使用HAProxy 進行七層負載,可以根據訪問用戶的HTTP請求頭進行負載均衡,比如可以根據不同的URL 來將請求轉發到特定的機器或者根據用戶的Cookie信息來指定訪問的機器。
操作系統負載均衡:
就是利用操作系統級別的軟中斷或者硬體中斷來達到負載均衡,比如設置多隊列的網卡等,來實現。
CDN 動態加速:
CDN 動態加速技術也是當前比較流行的一種優化技術,它的技術原理就是在CDN 的DNS 解析中通過動態的鏈路探測來尋找回源最好的一條路徑,然後通過DNS的調度,將所有請求調度到選定的這條路徑上回源,從而加速訪問效率,如圖.由於CDN 是遍佈全國的,所以用戶接入一個CDN 節點後,可以選擇一條從離用戶最近的CDN 節點到源站鏈路最好的路徑讓用戶走,一個簡單的原則就是在每個CDN 節點上從源站下載一個一定大小的文件,看哪個鏈路的總耗時最短,這樣可以構成一個鏈路列表,然後綁定到DNS 解析上,更新到Local DNS ,當然,是否走這個鏈路並不一定根據耗時這個唯一條件,有時也要考慮網路成本,比如走該節點可以節約5ms,但是網路帶寬成本卻增加了很多,還有其他網路鏈路的安全等等的因素也要考慮。