1. 前言php
Internet的高速發展,給人們的工做和生活帶來了極大的便利,對Internet的服務品質和訪問速度要求愈來愈高,雖然帶寬不斷增長,用戶數量也在不斷增長,受Web服務器的負荷和傳輸距離等因數的影響,響應速度慢仍是常常抱怨和困擾。解決方案就是在網絡傳輸上利用緩存技術使得Web服務數據流能就近訪問,是優化網絡數據傳輸很是有效的技術,從而得到高速的體驗和品質保證。html
網絡緩存技術,其目的就是減小網絡中冗餘數據的重複傳輸,使之最小化,將廣域傳輸轉爲本地或就近訪問。互聯網上傳遞的內容,大部分爲重複的Web/FTP數據,Cache服務器及應用Caching技術的網絡設備,可大大優化數據鏈路性能,消除數據峯值訪問形成的結點設備阻塞。Cache服務器具備緩存功能,因此大部分網頁對象(Web page object),如html, htm, php等頁面文件,gif,tif, png, bmp等圖片文件,以及其餘格式的文件,在有效期(TTL)內,對於重複的訪問,沒必要從原始網站從新傳送文件實體,只需經過簡單的認證(Freshness Validation)- 傳送幾十字節的Header,便可將本地的副本直接傳送給訪問者。因爲緩存服務器一般部署在靠近用戶端,因此能得到近似局域網的響應速度,並有效減小廣域帶寬的消耗。據統計,Internet上超過80%的用戶重複訪問20%的信息資源,給緩存技術的應用提供了先決的條件。緩存服務器的體系結構與Web服務器不一樣,緩存服務器能比Web服務器得到更高的性能,緩存服務器不只能提升響應速度,節約帶寬,對於加速Web服務器,有效減輕源服務器的負荷是很是有效的。前端
高速緩存服務器(Cache Server)是軟硬件高度集成的專業功能服務器,主要作高速緩存加速服務,通常部署在網絡邊緣。根據加速對象不一樣,分爲客戶端加速和服務器加速,客戶端加速Cache部署在網絡出口處,把常訪問的內容緩存在本地,提升響應速度和節約帶寬;服務器加速,Cache部署在服務器前端,做爲Web服務器的前置機,提升Web服務器的性能,加速訪問速度。若是多臺Cache加速服務器且分佈在不一樣地域,須要經過有效地機制管理Cache網絡,引導用戶就近訪問,全局負載均衡流量,這就是CDN內容傳輸網絡的基本思想。數據庫
2.什麼是CDN?瀏覽器
CDN的全稱是Content Delivery Network,即內容分發網絡。其目的是經過在現有的Internet中增長一層新的網絡架構,將網站的內容發佈到最接近用戶的網絡」邊緣」,使用戶能夠就近取得所需的內容,解決Internet網絡擁塞情況,提升用戶訪問網站的響應速度。從技術上全面解決因爲網絡帶寬小、用戶訪問量大、網點分佈不均等緣由,解決用戶訪問網站的響應速度慢的根本緣由。緩存
狹義地講,內容分發佈網絡(CDN)是一種新型的網絡構建方式,它是爲能在傳統的IP網發佈寬帶豐富媒體而特別優化的網絡覆蓋層;而從廣義的角度,CDN表明了一種基於質量與秩序的網絡服務模式。簡單地說,內容發佈網絡(CDN)是一個經策略性部署的總體系統,包括分佈式存儲、負載均衡、網絡請求的重定向和內容管理4個要件,而內容管理和全局的網絡流量管理(Traffic Management)是CDN的核心所在。經過用戶就近性和服務器負載的判斷,CDN確保內容以一種極爲高效的方式爲用戶的請求提供服務。總的來講,內容服務基於緩存服務器,也稱做代理緩存(Surrogate),它位於網絡的邊緣,距用戶僅有」一跳」(Single Hop)之遙。同時,代理緩存是內容提供商源服務器(一般位於CDN服務提供商的數據中心)的一個透明鏡像。這樣的架構使得CDN服務提供商可以表明他們客戶,即內容供應商,向最終用戶提供儘量好的體驗,而這些用戶是不能容忍請求響應時間有任何延遲的。據統計,採用CDN技術,能處理整個網站頁面的70%~95%的內容訪問量,減輕服務器的壓力,提高了網站的性能和可擴展性。安全
與目前現有的內容發佈模式相比較,CDN強調了網絡在內容發佈中的重要性。經過引入主動的內容管理層的和全局負載均衡,CDN從根本上區別於傳統的內容發佈模式。在傳統的內容發佈模式中,內容的發佈由ICP的應用服務器完成,而網絡只表現爲一個透明的數據傳輸通道,這種透明性表如今網絡的質量保證僅僅停留在數據包的層面,而不能根據內容對象的不一樣區分服務質量。此外,因爲IP網的」盡力而爲」的特性使得其質量保證是依靠在用戶和應用服務器之間端到端地提供充分的、遠大於實際所需的帶寬通量來實現的。在這樣的內容發佈模式下,不只大量寶貴的骨幹帶寬被佔用,同時ICP的應用服務器的負載也變得很是重,並且不可預計。當發生一些熱點事件和出現浪涌流量時,會產生局部熱點效應,從而使應用服務器過載退出服務。這種基於中心的應用服務器的內容發佈模式的另一個缺陷在於個性化服務的缺失和對寬帶服務價值鏈的扭曲,內容提供商承擔了他們不應幹也幹很差的內容發佈服務。服務器
縱觀整個寬帶服務的價值鏈,內容提供商和用戶位於整個價值鏈的兩端,中間依靠網絡服務提供商將其串接起來。隨着互聯網工業的成熟和商業模式的變革,在這條價值鏈上的角色愈來愈多也愈來愈細分。好比內容/應用的運營商、託管服務提供商、骨幹網絡服務提供商、接入服務提供商等等。在這一條價值鏈上的每個角色都要分工合做、各司其職才能爲客戶提供良好的服務,從而帶來多贏的局面。從內容與網絡的結合模式上看,內容的發佈已經走過了ICP的內容(應用)服務器和IDC這兩個階段。IDC的熱潮也催生了託管服務提供商這一角色。可是,IDC並不能解決內容的有效發佈問題。內容位於網絡的中心並不能解決骨幹帶寬的佔用和創建IP網絡上的流量秩序。所以將內容推到網絡的邊緣,爲用戶提供就近性的邊緣服務,從而保證服務的質量和整個網絡上的訪問秩序就成了一種顯而易見的選擇。而這就是內容發佈網(CDN)服務模式。CDN的創建解決了困擾內容運營商的內容」集中與分散」的兩難選擇。無疑對於構建良好的互聯網價值鏈是有價值的,也是不可或缺的。網絡
3.CDN新應用和客戶架構
目前的CDN服務主要應用於證券、金融保險、ISP、ICP、網上交易、門戶網站、大中型公司、網絡教學等領域。另外在行業專網、互聯網中均可以用到,甚至能夠對局域網進行網絡優化。利用CDN,這些網站無需投資昂貴的各種服務器、設立分站點,特別是流媒體信息的普遍應用、遠程教學課件等消耗帶寬資源多的媒體信息,應用CDN網絡,把內容複製到網絡的最邊緣,使內容請求點和交付點之間的距離縮至最小,從而促進Web站點性能的提升,具備重要的意義。CDN網絡的建設主要有企業建設的CDN網絡,爲企業服務;IDC的CDN網絡,主要服務於IDC和增值服務;網絡運營上主建的CDN網絡,主要提供內容推送服務;CDN網絡服務商,專門建設的CDN用於作服務,用戶經過與CDN機構進行合做,CDN負責信息傳遞工做,保證信息正常傳輸,維護傳送網絡,而網站只須要內容維護,再也不須要考慮流量問題。
CDN可以爲網絡的快速、安全、穩定、可擴展等方面提供保障。
IDC創建CDN網絡,IDC運營商通常須要有分部各地的多個IDC中心,服務對象是託管在IDC中心的客戶,利用現有的網絡資源,投資較少,容易建設。例如某IDC全國有10個機房,加入IDC的CDN網絡,託管在一個節點的Web服務器,至關於有了10個鏡像服務器,就近供客戶訪問。寬帶城域網,域內網絡速度很快,出城帶寬通常就會瓶頸,爲了體現城域網的高速體驗,解決方案就是將Internet網上內容高速緩存到本地,將Cache部署在城域網各POP點上,這樣造成高效有序的網絡,用戶僅一跳就能訪問大部分的內容,這也是一種加速全部網站CDN的應用。
4.CDN 的工做原理
在描述CDN的實現原理,讓咱們先看傳統的未加緩存服務的訪問過程,以便了解CDN緩存訪問方式與未加緩存訪問方式的差異:
由上圖可見,用戶訪問未使用CDN緩存網站的過程爲:
1)、用戶向瀏覽器提供要訪問的域名;
2)、瀏覽器調用域名解析函數庫對域名進行解析,以獲得此域名對應的IP地址;
3)、瀏覽器使用所獲得的IP地址,域名的服務主機發出數據訪問請求;
4)、瀏覽器根據域名主機返回的數據顯示網頁的內容。
經過以上四個步驟,瀏覽器完成從用戶處接收用戶要訪問的域名到從域名服務主機處獲取數據的整個過程。CDN網絡是在用戶和服務器之間增長Cache層,如何將用戶的請求引導到Cache上得到源服務器的數據,主要是經過接管DNS實現,下面讓咱們看看訪問使用CDN緩存後的網站的過程:
經過上圖,咱們能夠了解到,使用了CDN緩存後的網站的訪問過程變爲:
1)、用戶向瀏覽器提供要訪問的域名;
2)、瀏覽器調用域名解析庫對域名進行解析,因爲CDN對域名解析過程進行了調整,因此解析函數庫通常獲得的是該域名對應的CNAME記錄,爲了獲得實際IP地址,瀏覽器須要再次對得到的CNAME域名進行解析以獲得實際的IP地址;在此過程當中,使用的全局負載均衡DNS解析,如根據地理位置信息解析對應的IP地址,使得用戶能就近訪問。
3)、這次解析獲得CDN緩存服務器的IP地址,瀏覽器在獲得實際的IP地址之後,向緩存服務器發出訪問請求;
4)、緩存服務器根據瀏覽器提供的要訪問的域名,經過Cache內部專用DNS解析獲得此域名的實際IP地址,再由緩存服務器向此實際IP地址提交訪問請求;
5)、緩存服務器從實際IP地址得獲得內容之後,一方面在本地進行保存,以備之後使用,二方面把獲取的數據返回給客戶端,完成數據服務過程;
6)、客戶端獲得由緩存服務器返回的數據之後顯示出來並完成整個瀏覽的數據請求過程。
經過以上的分析咱們能夠獲得,爲了實現既要對普通用戶透明(即加入緩存之後用戶客戶端無需進行任何設置,直接使用被加速網站原有的域名便可訪問),又要在爲指定的網站提供加速服務的同時下降對ICP的影響,只要修改整個訪問過程當中的域名解析部分,以實現透明的加速服務,下面是CDN網絡實現的具體操做過程。
1)、做爲ICP,只須要把域名解釋權交給CDN運營商,其餘方面不須要進行任何的修改;操做時,ICP修改本身域名的解析記錄,通常用cname方式指向CDN網絡Cache服務器的地址。
2)、做爲CDN運營商,首先須要爲ICP的域名提供公開的解析,爲了實現sortlist,通常是把ICP的域名解釋結果指向一個CNAME記錄;
3)、當須要進行sorlist時,CDN運營商能夠利用DNS對CNAME指向的域名解析過程進行特殊處理,使DNS服務器在接收到客戶端請求時能夠根據客戶端的IP地址,返回相同域名的不一樣IP地址;
4)、因爲從cname得到的IP地址,而且帶有hostname信息,請求到達Cache以後,Cache必須知道源服務器的IP地址,因此在CDN運營商內部維護一個內部DNS服務器,用於解釋用戶所訪問的域名的真實IP地址;
5)、在維護內部DNS服務器時,還須要維護一臺受權服務器,控制哪些域名能夠進行緩存,而哪些又不進行緩存,以避免發生開放代理的狀況。
5.CDN的技術手段
實現CDN的主要技術手段是高速緩存、鏡像服務器。可工做於DNS解析或HTTP重定向兩種方式,經過Cache服務器,或異地的鏡像站點完成內容的傳送與同步更新。DNS方式用戶位置判斷準確率大於85%,HTTP方式準確率爲99%以上;通常狀況下,各Cache服務器羣的用戶訪問流入數據量與Cache服務器到原始網站取內容的數據量之比在2:1到3:1之間,即分擔50%到70%的到原始網站重複訪問數據量(主要是圖片,流媒體文件等內容);對於鏡像,除數據同步的流量,其他均在本地完成,不訪問原始服務器。
鏡像站點(Mirror Site)服務器是咱們常常能夠看到的,它讓內容直截了當地進行分佈,適用於靜態和準動態的數據同步。可是購買和維護新服務器的費用較高,另外還必須在各個地區設置鏡像服務器,配備專業技術人員進行管理與維護。大型網站在隨時更新各地服務器的同時,對帶寬的需求也會顯著增長,所以通常的互聯網公司不會創建太多的鏡像服務器。
高速緩存手段的成本較低,適用於靜態內容。Internet的統計代表,超過80%的用戶常常訪問的是20%的網站的內容,在這個規律下,緩存服務器能夠處理大部分客戶的靜態請求,而原始的WWW服務器只需處理約20%左右的非緩存請求和動態請求,因而大大加快了客戶請求的響應時間,並下降了原始WWW服務器的負載。根據美國IDC公司的調查,做爲CDN的一項重要指標 —— 緩存的市場正在以每一年近100%的速度增加,全球的營業額在2004年將達到45億美圓。網絡流媒體的發展還將剌激這個市場的需求。
6.CDN的網絡架構
CDN網絡架構主要由兩大部分,分爲中心和邊緣兩部分,中心指CDN網管中心和DNS重定向解析中心,負責全局負載均衡,設備系統安裝在管理中心機房,邊緣主要指異地節點,CDN分發的載體,主要由Cache和負載均衡器等組成。
當用戶訪問加入CDN服務的網站時,域名解析請求將最終交給全局負載均衡DNS進行處理。全局負載均衡DNS經過一組預先定義好的策略,將當時最接近用戶的節點地址提供給用戶,使用戶可以獲得快速的服務。同時,它還與分佈在世界各地的全部CDNC節點保持通訊,蒐集各節點的通訊狀態,確保不將用戶的請求分配到不可用的CDN節點上,其實是經過DNS作全局負載均衡。
對於普通的Internet用戶來說,每一個CDN節點就至關於一個放置在它周圍的WEB。經過全局負載均衡DNS的控制,用戶的請求被透明地指向離他最近的節點,節點中CDN服務器會像網站的原始服務器同樣,響應用戶的請求。因爲它離用戶更近,於是響應時間必然更快。
每一個CDN節點由兩部分組成:負載均衡設備和高速緩存服務器
負載均衡設備負責每一個節點中各個Cache的負載均衡,保證節點的工做效率;同時,負載均衡設備還負責收集節點與周圍環境的信息,保持與全局負載DNS的通訊,實現整個系統的負載均衡。
高速緩存服務器(Cache)負責存儲客戶網站的大量信息,就像一個靠近用戶的網站服務器同樣響應本地用戶的訪問請求。
CDN的管理系統是整個系統可以正常運轉的保證。它不只能對系統中的各個子系統和設備進行實時監控,對各類故障產生相應的告警,還能夠實時監測到系統中總的流量和各節點的流量,並保存在系統的數據庫中,使網管人員可以方便地進行進一步分析。經過完善的網管系統,用戶能夠對系統配置進行修改。
理論上,最簡單的CDN網絡有一個負責全局負載均衡的DNS和各節點一臺Cache,便可運行。DNS支持根據用戶源IP地址解析不一樣的IP,實現就近訪問。爲了保證高可用性等,須要監視各節點的流量、健康情況等。一個節點的單臺Cache承載數量不夠時,才須要多臺Cache,多臺Cache同時工做,才須要負載均衡器,使Cache羣協同工做。