天天看點

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緩存後的網站的通路過程變為:

  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域名解析記錄中,由:

  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 的内容如下:

  2) /etc/named.conf中的内容為:

  3、Cache在CDN網絡中如果工作在伺服器加速模式,因為配置裡已經寫明加速伺服器的url,是以Cache直接比對使用者請求,到源伺服器獲得内容并緩存供下次使用;如果Cache工作在用戶端加速模式,Cache需要知道源伺服器的IP位址,是以CDN網絡維護和運作一個供Cache使用的DNS伺服器,解析域名的真實IP位址,如202.99.11.120 ,各域名的解析記錄與未加入CDN網絡之前一樣。

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

繼續閱讀