一、CDN的概念
全稱是Content Delivery Network,即內容分發網絡。
其基本思路是: ?盡可能避開互聯網上有可能影響數據傳輸速度和穩定性的瓶頸和環節,使內容傳輸的更快、更穩定。
通過在網絡各處放置節點服務器所構成的在現有的互聯網基礎之上的一層智能虛擬網絡,CDN系統能夠實時地根據網絡流量和各節點的連接、負載狀況以及到用戶的距離和響應時間等綜合信息將用戶的請求重新導向離用戶最近的服務節點上。其目的是使用戶可就近取得所需內容,解決 Internet網絡擁擠的狀況,提高用戶訪問網站的響應速度。
?
二、使用CDN的優勢:
1、本地Cache加速,提高企業站點訪問速度。(尤其是含有圖片和大量靜態頁面的站點)
2、跨運營商的網絡加速,保證不同網絡的用戶都能得到良好的訪問質量。
3、遠程訪問用戶根據DNS負載均衡技術智能自動選擇Cache服務器。
4、自動生成服務器的遠程Mirror(鏡像)Cache服務器,遠程用戶訪問時從Cache服務器上讀取數據,減少遠程訪問的帶寬,分擔網絡流量,減輕原站點WEB服務器負載
5、廣泛分布的CDN節點加上節點之間的智能冗余機制,可以有效的預防黑客入侵。
?
三、CDN的工作原理
用戶發起請求-->智能DNS的解析(根據IP判斷地理位置,接入網類型,選擇路由最短和負載最輕的服務器) -->返回緩存節點服務器IP -->把內容返回給用戶(如果緩存中有) -->如果沒有緩存-->向源站發起請求 -->將結果返回用戶 -->將結果存入緩存服務器
原理圖:
?
?
四、CDN的使用場景
1、站點或者應用中有大量的靜態資源到的加速分發, 例如 css,js ,img,html
2、大文件下載
3、直播網站
?
?
五、CDN的實現
?
第一種 : ?BAT 等都有提供CDN服務
第二種 : ?可以用LVS的4層負載均衡
第三種 : ?可以用Nginx,Varnish,Squid,Apache TrafficServer 做7層負載均衡和 Cache
?
反向代理的實現:
可以使用squid 或者 Nginx 等的反向代理。
?
備注:
反向代理(Reverse Proxy) 的定義:
是指以代理服務器來接受internet上的連接請求,然后將請求轉發給內部網絡上的服務器,并將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現為一個反向代理服務器。
?