CDN(內容分發網絡)技術原理

  1. 前言

  Internet的高速發展,給人們的工作和生活帶來了極大的便利,對Internet的服務品質和訪問速度要求越來越高,雖然帶寬不斷增加,用戶數量也在不斷增加,受Web服務器的負荷和傳輸距離等因數的影響,響應速度慢還是經常抱怨和困擾。解決方案就是在網絡傳輸上利用緩存技術使得Web服務數據流能就近訪問,是優化網絡數據傳輸非常有效的技術,從而獲得高速的體驗和品質保證。

  網絡緩存技術,其目的就是減少網絡中冗餘數據的重複傳輸,使之最小化,將廣域傳輸轉爲本地或就近訪問。互聯網上傳遞的內容,大部分爲重複的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羣協同工作。

  7. CDN 示例

  商業化的CDN網絡是用於服務性質的,高可用性等要求非常高,有專業產品和CDN網絡解決方案,本文主要從理論角度,理解CDN的實現過程,並利用已有網絡環境和開源軟件做實際配置,更深刻理解CDN的具體工作過程。

  Linux 是開放源代碼的免費操作系統,已經成功應用於許多關鍵領域。Bind是Unix/FreeBSD/Linux等類Unix平臺上非常有名DNS服務程序,Internet上超過60%的DNS運行的是bind。Bind的最新版本是9.x,用的比較多的是8.x,bind 9有很多新特性,其中一項是根據用戶端源地址對同一域名解析不同的IP地址,有了這種特性,能把用戶對同一域名的訪問,引導到不同地域節點的服務器上去訪問。Squid是Linux等操作系統上有名的Cache引擎,與商業Cache引擎相比,Squid的性能比較低,基本功能工作原理與商業Cache產品是一致的,作爲試驗,是非常容易配置運行起來。以下簡要介紹CDN的配置流程。

  1、要加入CDN服務的網站,需要域名(如www.linuxaid.com.cn, 地址202.99.11.120)解析權提供給CDN運營商,Linuxaid的域名解析記錄只要把www主機的A記錄改爲CNAME並指向cache.cdn.com即可。cache.cdn.com是CDN網絡自定義的緩存服務器的標識。在/var/named/linuxaid.com.cn域名解析記錄中,由:


www             IN      A       202.99.11.120
改爲
www IN CNAME cache.cdn.com.

  2、CDN運營商得到域名解析權以後,得到域名的CNAME記錄,指向CDN網絡屬下緩存服務器的域名,如cache.cdn.com,CDN網絡的全局負載均衡DNS,需要把CNAME記錄根據策略解析出IP地址,一般是給出就近訪問的Cache地址。

  Bind 9的基本功能可以根據不同的源IP地址段解析對應的IP,實現根據地域就近訪問的負載均衡,一般可以通過Bind 9的sortlist選項實現根據用戶端IP地址返回最近的節點IP地址,具體的過程爲:

  1) 爲cache.cdn.com設置多個A記錄,/var/named/cdn.com 的內容如下:


$TTL 3600
@ IN SOA ns.cdn.com. root.ns.cdn.com. (
2002090201 ;Serial num
10800 ;Refresh after 3 hours
3600 ;Retry
604800 ;Expire
1800 ;Time to live
)
IN NS ns
www IN A 210.33.21.168
ns IN A 202.96.128.68
cache IN A 202.93.22.13 ;有多少個CACHE地址
cache IN A 210.21.30.90 ;就有多少個CACHE的A記錄
cache IN A 211.99.13.47

  2) /etc/named.conf中的內容爲:


options {
directory "/var/named";
sortlist {
#這一段表示當在本地執行查詢時
#將按照202.93.22.13,210.21.30.90,211.99.13.47的順序返回地址
{ localhost;
{ localnets;
202.93.22.13;
{ 210.21.30.90; 211.99.13.47; };
};
};
#這一段表示當在202/8地址段進行DNS查詢時
#將按照202.93.22.13,210.21.30.90,211.99.13.47的順序返回地址
{ 202/8;
{ 202.93.22.13;
{ 210.21.30.90; 211.99.13.47; };
};
};
#這一段表示當在211/8地址段進行DNS查詢時
#將按照211.99.13.47,202.93.22.13,210.21.30.90的順序返回地址,
#也就是211.99.13.47是最靠近查詢地點的節點
{ 211/8;
{ 211.99.13.47;
{ 202.93.22.13; 210.21.30.90; };
};
};
{ 61/8;
{ 202.93.22.13;
{ 210.21.30.90; 211.99.13.47; };
};
};
};
};
zone "." {
type hint;
file "root.cache";
};
zone "localhost" {
type master;
file "localhost";
};
zone "cdn.com" {
type master;
file "cdn.com";
};

  3、Cache在CDN網絡中如果工作在服務器加速模式,因爲配置裏已經寫明加速服務器的url,所以Cache直接匹配用戶請求,到源服務器獲得內容並緩存供下次使用;如果Cache工作在客戶端加速模式,Cache需要知道源服務器的IP地址,所以CDN網絡維護和運行一個供Cache使用的DNS服務器,解析域名的真實IP地址,如202.99.11.120 ,各域名的解析記錄與未加入CDN網絡之前一樣。

  4、工作在CDN網絡中緩存服務器必須工作在透明方式,對於Squid來說,需要設置以下參數:


httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

摘自:http://www.it.com.cn/f/server/076/21/433995.htm

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章