一、定義
背景:
當下的互聯網應用都包含大量的靜態內容,但靜態內容以及一些准動態內容又是最耗費帶寬的,特別是針對全國甚至全世界的大型網站,如果這些請求都指向主站的服務器的話,不僅是主站服務器受不了,單端口500M左右的帶寬也扛不住,所以大多數網站都需要CDN服務。
CDN,Content Delivery Network,基於內容的分布式分發網絡。
那么什么是CDN服務?
簡單的說CDN就是讓原本上海的瀏覽器要訪問北京主站內容的請求轉而由部署在上海或南京的緩存來受理,這樣請求的數據只需經過一跳或有限的幾跳就能到達請求端,有效利用帶寬並且降低主站壓力,對於電子商務網站和搜索引擎網站以及門戶網站,CDN的合理應用顯得尤為重要。
一般需要CDN服務的網站會選擇以下的組織方案:
1.通過租用的IDC提供額外的CDN服務;
2..購買專業的CDN服務商的服務;
3.自己組建CDN網絡;成本依次增高。
CDN設計目的是實現WEB內容的負載均衡,防止出現訪問請求熱點,延時響應等WEB請求通病。基於此,CDN的特點可以說有
1. 分布式存儲
2. 通過智能DNS解析或http重定向實現內容分發的負載均衡
3. 全局負載均衡管理與內容管理
二、CDN網絡結構
CDN網絡一般分為中心與邊緣節點兩部分,中心負責全局負載均衡管理與內容管理;
中心節點的功能如下:
1. 隨時監控邊緣節點的健康狀況(可用性,擁塞程度);
2. 根據邊緣節點到請求端的距離,以及邊緣節點的健康狀況,按一定的策略重定向請求;
3. 與客戶主站進行數據同步。
三、CDN工作原理
傳統的未加緩存服務的訪問過程:
- 用戶向瀏覽器提供要訪問的域名;
- 瀏覽器調用域名解析函數庫對域名進行解析,以得到此域名對應的IP地址;
- 瀏覽器使用所得到的IP地址,域名的服務主機發出數據訪問請求;
- 瀏覽器根據域名主機返回的數據顯示網頁的內容。
CDN網絡是在用戶和服務器之間增加Cache層, 如何將用戶的請求引導到Cache上獲得源服務器的數據,主要是通過接管DNS實現,訪問使用CDN緩存后的網站的過程:
- 用戶向瀏覽器提供要訪問的域名;
- 瀏覽器調用域名解析庫對域名進行解析,由於CDN對域名解析過程進行了調整,所以解析函數庫一般得到的是該域名對應的CNAME記錄,為了得到實 際IP地址,瀏覽器需要再次對獲得的CNAME域名進行解析以得到實際的IP地址;在此過程中,使用的全局負載均衡DNS解析,如根據地理位置信息解析對應的IP地址,使得用戶能就近訪問。
- 此次解析得到CDN緩存服務器的IP地址,瀏覽器在得到實際的IP地址以后,向緩存服務器發出訪問請求;
- 緩存服務器根據瀏覽器提供的要訪問的域名,通過Cache內部專用DNS解析得到此域名的實際IP地址,再由緩存服務器向此實際IP地址提交訪問請求;
- 緩存服務器從實際IP地址得得到內容以后,一方面在本地進行保存,以備以后使用,二方面把獲取的數據返回給客戶端,完成數據服務過程;
四、具體實例
1.用戶向瀏覽器輸入www.web.com這個域名,瀏覽器第一次發現本地沒有dns緩存,則向網站的DNS服務器請求;
2.網站的DNS域名解析器設置了CNAME,指向了www.web.51cdn.com,請求指向了CDN網絡中的智能DNS負載均衡系統;
3.智能DNS負載均衡系統解析域名,把對用戶響應速度最快的IP節點返回給用戶;
4.用戶向該IP節點(CDN服務器)發出請求;
5.由於是第一次訪問,CDN服務器會向原web站點請求,並緩存內容;
6.請求結果發給用戶。
當然很多細節沒有涉及到,比如第1步,首先向本地的DNS服務器請求。第5步,內容淘汰機制(根據TTL)等。但原理大體如此。
對於普通的Internet用戶來講,每個CDN節點就相當於一個放置在它周圍的WEB。通過全局負載均衡DNS的控制,用戶的請求被透明地指向離他最近的節點,節點中CDN服務器會像網站的原始服務器一樣,響應用戶的請求。由於它離用戶更近,因而響應時間必然更快。
每個CDN節點由兩部分組成:負載均衡設備和高速緩存服務器
負載均衡設備負責每個節點中各個Cache的負載均衡,保證節點的工作效率;同時,負載均衡設備還負責收集節點與周圍環境的信息,保持與全局負載DNS的通信,實現整個系統的負載均衡。CDN的管理系統是整個系統能夠正常運轉的保證。它不僅能對系統中的各個子系統和設備進行實時監控,對各種故障產生相應的告警,還可以實時監測到系統中 總的流量和各節點的流量,並保存在系統的數據庫中,使網管人員能夠方便地進行進一步分析。通過完善的網管系統,用戶可以對系統配置進行修改。
五、關鍵技術
CDN的關鍵技術主要有內容路由技術、內容分發技術、內容存儲技術、內容管理技術等。
具體的我就不深究了,如有機會接觸,再繼續深入。