CDN

CDN:Content Delivery Network(內容分發網絡)

基本思路:儘可能避開互聯網上有可能影響數據傳輸速度和穩定性的瓶頸和環節,使內容傳輸的更快、更穩定。通過在網絡各處放置節點服務器所構成的在現有的互聯網基礎之上的一層智能虛擬網絡,CDN系統能夠實時地根據網絡流量和各節點的連接、負載狀況以及到用戶的距離和響應時間等綜合信息將用戶的請求重新導向離用戶最近的服務節點上。
目的:使用戶可就近取得所需內容,解決 Internet網絡擁擠的狀況,提高用戶訪問網站的響應速度。


服務模式

簡單地說,內容發佈網(CDN)是一個經策略性部署的整體系統,包括分佈式存儲、負載均衡、網絡請求的重定向和內容管理4個要件,而內容管理和全局的網絡流量管理(Traffic Management)是CDN的核心所在。通過用戶就近性和服務器負載的判斷,CDN確保內容以一種極爲高效的方式爲用戶的請求提供服務。

總的來說,內容服務基於緩存服務器,也稱作代理緩存(Surrogate),它位於網絡的邊緣,距用戶僅有"一跳"(Single Hop)之遙。同時,代理緩存是內容提供商源服務器(通常位於CDN服務提供商的數據中心)的一個透明鏡像。這樣的架構使得CDN服務提供商能夠代表他們客戶,即內容供應商,向最終用戶提供儘可能好的體驗,而這些用戶是不能容忍請求響應時間有任何延遲的。

應用舉例

目前,國內訪問量較高的大型網站如新浪、網易等,均使用CDN網絡加速技術,雖然網站的訪問巨大,但無論在什麼地方訪問都會感覺速度很快。而一般的網站如果服務器在網通,電信用戶訪問很慢,如果服務器在電信,網通用戶訪問又很慢。

它採取了分佈式網絡緩存結構(即國際上流行的web cache技術),通過在現有的Internet中增加一層新的網絡架構,將網站的內容發佈到最接近用戶的cache服務器內,通過DNS負載均衡的技術,判斷用戶來源就近訪問cache服務器取得所需的內容,解決Internet網絡擁塞狀況,提高用戶訪問網站的響應速度,如同提供了多個分佈在各地的加速器,以達到快速、可冗餘的爲多個網站加速的目的。

CDN服務最初用於確保快速可靠地分發靜態內容,這些內容可以緩存,最適合在網速龐大的網絡中存儲和分發,該網絡在幾十多個國家的十幾個網絡中的覆蓋CDN網絡服務器。

由於動態內容必須通過互聯網來傳輸,因此要提供快速的網絡體驗,以滿足當今用戶的要求,只能通過對互聯網流量的獨特視角來達到。必須使用先進技術來了解通過互聯網的最佳路由,充分利用這些最佳路由,加速通過互聯網協議的數據通訊,以改善用戶的網絡體驗。

主要特點

1、本地Cache加速 提高了企業站點(尤其含有大量圖片和靜態頁面站點)的訪問速度,並大大提高以上性質站點的穩定性
2、鏡像服務 消除了不同運營商之間互聯的瓶頸造成的影響,實現了跨運營商的網絡加速,保證不同網絡中的用戶都能得到良好的訪問質量。
3、遠程加速 遠程訪問用戶根據DNS負載均衡技術 智能自動選擇Cache服務器,選擇最快的Cache服務器,加快遠程訪問的速度
4、帶寬優化 自動生成服務器的遠程Mirror(鏡像)cache服務器,遠程用戶訪問時從cache服務器上讀取數據,減少遠程訪問的帶寬、分擔網絡流量、減輕原站點WEB服務器負載等功能。
5、集羣抗*** 廣泛分佈的CDN節點加上節點之間的智能冗餘機制,可以有效地預防******以及降低各種D.D.o.S***對網站的影響,同時保證較好的服務質量 。

關鍵技術

(1)內容發佈:它藉助於建立索引、緩存、流分裂、組播(Multicast)等技術,將內容發佈或投遞到距離用戶最近的遠程服務點(POP)處;
(2)內容路由:它是整體性的網絡負載均衡技術,通過內容路由器中的重定向(DNS)機制,在多個遠程POP上均衡用戶的請求,以使用戶請求得到最近內容源的響應;
(3)內容交換:它根據內容的可用性、服務器的可用性以及用戶的背景,在POP的緩存服務器上,利用應用層交換、流分裂、重定向(ICP、WCCP)等技術,智能地平衡負載流量;
(4)性能管理:它通過內部和外部監控系統,獲取網絡部件的狀況信息,測量內容發佈的端到端性能(如包丟失、延時、平均帶寬、啓動時間、幀速率等),保證網絡處於最佳的運行狀態。

CDN加速答疑:

1、CDN網站加速適合哪些網站?
以資訊內容爲主的網站,例如資訊網站、政府機構網站、行業平臺網站、商城等
以動態內容爲主的網站,例如論壇、博客、交友、SNS、網絡遊戲、搜索/查詢、金融等。
提供http下載的網站,例如軟件開發商、內容服務提供商、網絡遊戲運行商、源碼下載等
有大量流媒體點播應用的網站,例如:擁有視頻點播平臺的電信運營商、內容服務提供商、體育頻道、寬頻頻道、在線教育、視頻博客等。

2、CDN加速是對網站所在服務器加速,還是對其域名加速?
  CDN是隻對網站的某一個具體的域名加速。如果同一個網站有多個域名,則訪客訪問加入CDN的域名獲得加速效果,訪問未加入
  CDN的域名,或者直接訪問IP地址,則無法獲得CDN效果。

3、CDN和鏡像站點比較有何優勢?
  A.CDN對網站的訪客完全透明,不需要訪客手動選擇要訪問的鏡像站點,保證了網站對訪客的友好性。
  B.CDN對每個節點都有可用性檢查,不合格的節點會第一時間剔出,從而保證了極高的可用率,而鏡像站點無法實現這一點。
  C.CDN部署簡單,對原站基本不做任何改動即可生效。

4、CDN和雙線機房相比有何優勢?
  常見的雙線機房只能解決網通和電信互相訪問慢的問題,其它ISP(譬如教育網,移動網,鐵通)互通的問題還是沒得到解決。
  而CDN是訪問者就近取數據,而CDN的節點遍佈各ISP,從而保證了網站到任意ISP的訪問速度。另外CDN因爲其流量分流到各節點的原理,天然獲得抵抗網絡***的能力。

5、CDN使用後,原來的網站是否需要做修改,做什麼修改?
  一般而言,網站無需任何修改即可使用CDN獲得加速效果。只是對需要判斷訪客IP程序,才需要做少量修改。

6、爲什麼我的網站更新後,通過CDN後看到網頁還是舊網頁,如何解決?
  由於CDN採用各節點緩存的機制,網站的靜態網頁和圖片修改後,如果CDN緩存沒有做相應更新,則看到的還是舊的網頁。爲了解
  決這個問題,CDN管理面板中提供了URL推送服務,來通知CDN各節點刷新自己的緩存。
  在URL推送地址欄中,輸入具體的網址或者圖片地址,則各節點中的緩存內容即被統一刪除,並且當即生效。
  如果需要推送的網址和圖片太多,可以選擇目錄推送,輸入 http://www.kkk.com/news 即可以對網站下news目錄下所有網頁和圖片進行了刷新。
7、能不能讓CDN不緩存某些即時性要求很高的網頁和圖片?
  A、只需要使用動態頁面,asp,php,jsp等動態技術做成的頁面不被CDN緩存,無需每次都要刷新。
  B、或者採用一個網站兩個域名,一個啓用CDN,另外一個域名不用CDN,對即時性要求高的頁面和圖片放在不用CDN的域名下。

8、網站新增了不少網頁和圖片,這些需要使用URL推送嗎?
  後來增加的網頁和圖片,不需要使用URL推送,因爲它們本來就不存在緩存中。

9、啓用CDN後,什麼時候生效?
  最快1個小時即可生效,慢則8個小時生效。如果超過12個小時,還未生效,則應是操作流程有誤,多半是沒有指定的流程進行操作。

10、網站用CDN後,有些地區反映無法訪問了,怎麼辦?
  CDN啓用後,訪客不能訪問網站有很多種可能,可能是CDN的問題,也可能是源站點出現故障或者源站點被關閉,還可能是訪客自
  己所在的網絡出現問題,甚至我們實際故障排除中,還出現過客戶自己計算機中毒,導致無法訪問網站。
  客戶報告故障時,可隨時聯繫我們24小時技術部進行處理。


專業CDN服務商,代表企業:藍汛、帝聯科技等
提供CDN服務的IDC 運營商代表企業:網宿科技、世紀互聯等
電信運營商,代表企業:中國電信、原中國網通
自建CDN的互聯網企業,代表企業:優酷,百度等
國外CDN服務商,代表企業:Akamai、Limelight Networks等
免費自助CDN,國內的Webluker,國外的cloudflare

CDN 的工作原理

CDN的基本原理爲反向代理,反向代理(Reverse Proxy)方式是指以代理服務器來接受internet上的連接請求,然後將請求轉發給內部網絡上的服務器,並將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現爲一個節點服務器。通過部署更多的反向代理服務器,來達到實現多節點CDN的效果。

在描述CDN的實現原理,讓我們先看傳統的未加緩存服務的訪問過程,以便了解CDN緩存訪問方式與未加緩存訪問方式的差別:
CDN
  由上圖可見,用戶訪問未使用CDN緩存網站的過程爲:
  1)、用戶向瀏覽器提供要訪問的域名;
  2)、瀏覽器調用域名解析函數庫對域名進行解析,以得到此域名對應的IP地址;
  3)、瀏覽器使用所得到的IP地址,域名的服務主機發出數據訪問請求;
  4)、瀏覽器根據域名主機返回的數據顯示網頁的內容。
  通過以上四個步驟,瀏覽器完成從用戶處接收用戶要訪問的域名到從域名服務主機處獲取數據的整個過程。CDN網絡是在用戶和服務器之間增加Cache層,如何將用戶的請求引導到Cache上獲得源服務器的數據,主要是通過接管DNS實現,下面讓我們看看訪問使用CDN緩存後的網站的過程:
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服務器時,還需要維護一臺授權服務器,控制哪些域名可以進行緩存,而哪些又不進行緩存,以免發生開放代理的情況。

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億美元。網絡流媒體的發展還將剌激這個市場的需求。

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羣協同工作。

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