CDN全稱Content Delivery Network,即內容分發網絡。其基本思路是儘量避開互聯網上有可能影響數據傳輸速度和穩定性的瓶頸和環節,使內容傳輸的更快、更穩定。經過在網絡各處放置節點服務器所構成的在現有的互聯網基礎之上的一層智能虛擬網絡,CDN系統可以實時地根據網絡流量和各節點的鏈接、負載情況以及到用戶的距離和響應時間等綜合信息將用戶的請求從新導向離用戶最近的服務節點上。其目的是使用戶可就近取得所需內容,解決 Internet網絡擁擠的情況,提升用戶訪問網站的響應速度。算法
在不一樣地域的用戶訪問網站的響應速度存在差別,爲了提升用戶訪問的響應速度、優化現有Internet中信息的流動,須要在用戶和服務器間加入中間層CDN. 使用戶能以最快的速度,從最接近用戶的地方得到所需的信息,完全解決網絡擁塞,提升響應速度,是目前大型網站使用的流行的應用方案.瀏覽器
由上圖可見,用戶訪問未使用CDN緩存網站的過程爲:緩存
2瀏覽器調用域名解析函數庫對域名進行解析,以獲得此域名對應的IP地址;3瀏覽器使用所獲得的IP地址,域名的服務主機發出數據訪問請求;4瀏覽器根據域名主機返回的數據顯示網頁的內容。
經過以上四個步驟,瀏覽器完成從用戶處接收用戶要訪問的域名到從域名服務主機處獲取數據的整個過程。CDN網絡是在用戶和服務器之間增長Cache層,如何將用戶的請求引導到Cache上得到源服務器的數據,主要是經過接管DNS實現,下面讓咱們看看訪問使用CDN緩存後的網站的過程:網絡
對於CDN客戶來講,不須要改動網站架構,只須要修改本身的DNS解析,設置一個CNAME指向CDN服務商便可。原理在下面會解釋經過上圖,咱們能夠了解到,使用了CDN緩存後的網站的訪問過程變爲:架構
用戶向瀏覽器提供要訪問的域名; 瀏覽器調用域名解析庫對域名進行解析,因爲CDN對域名解析過程進行了調整,因此解析函數庫獲得的是該域名對應的CNAME記錄(因爲如今已是使用了CDN服務,CNAME爲CDN服務商域名) ,爲了獲得實際IP地址,瀏覽器須要再次對得到的CNAME域名進行解析以獲得實際的IP地址;在此過程當中,使用的全局負載均衡DNS解析,如根據地理位置信息解析對應的IP地址,使得用戶能就近訪問。(CDN服務來提供最近的機器) 這次解析獲得CDN緩存服務器的IP地址,瀏覽器在獲得實際的IP地址之後,向緩存服務器發出訪問請求; 緩存服務器根據瀏覽器提供的要訪問的域名,經過Cache內部專用DNS解析獲得此域名的實際IP地址,再由緩存服務器向此實際IP地址提交訪問請求; 緩存服務器從實際IP地址得獲得內容之後,一方面在本地進行保存,以備之後使用,二方面把獲取的數據返回給客戶端,完成數據服務過程; 客戶端獲得由緩存服務器返回的數據之後顯示出來並完成整個瀏覽的數據請求過程。
1. 緩存算法[Squid];2. 分發能力;3. 負載均衡[Nginx](4. 基於DNS[BIND]);5. 支持協議;負載均衡
緩存算法決定命中率、源服務器壓力、POP節點存儲能力函數
分發能力取決於IDC能力和IDC策略性分佈優化
負載均衡(智能調度)決定最佳路由、響應時間、可用性、服務質量網站
基於DNS的負載均衡以CNAME實現[to cluster],智取最優節點服務,
緩存點有客戶端瀏覽器緩存、本地DNS服務器緩存
緩存內容有DNS地址緩存、客戶請求內容緩存、動態內容緩存
支持協議如靜動態加速(圖片加速、https帶證書加速)、下載加速、流媒體加速、企業應用加速、手機應用加速
既然CDN的核心做用是提升網絡的訪問速度,那麼其用戶也就是訪問量很大的網站,例如ICP 、ISP、大型企業、電子商務網站和政府網站等。利用CDN技術,這些網站無需投資昂貴的各種服務器,設立分站點。經過採用CDN,CDN將負責信息傳遞工做,保證信息正常傳輸,而技術人員只須要維護網站內容,不須要考慮流量問題。這樣,網站可保證用戶獲得更多的新業務,能夠快速訪問網絡上的內容,得到更好的服務質量。舉個例子來說,對於訪問量比較大,而被訪問內容更新週期比較長的網站,如政府網站,用戶每每進行大量的查詢工做。這類網站比較適合採用CDN。還有,你們是否注意到,在所謂的寬帶社區中,瓶頸是社區的對外出口。這樣,若是採用CDN無疑對社區用戶使用視頻點播、網絡教育等寬帶應用提供了保證。
任何一個新事物,在給現有模式帶來改進的同時,也必然存在必定的侷限,CDN也是這樣。實時性不太好是CDN的致命缺陷。隨着對CDN需求的逐漸升溫,這一缺陷將獲得改進,使來自於遠程服務器的網絡內容網頁與複本服務器或緩存器中的網頁保持同步。解決方法是在網絡內容發生變化時將新的網絡內容從服務器端直接傳送到緩存器,或者當對網絡內容的訪問增長時將數據源服務器的網絡內容儘量實時地複製到緩存服務器。