Posted on

CDN – 內容傳遞網路

CDN(內容傳遞網路)

在wiki上的解釋是:
內容傳遞網路(Content delivery network或Content distribution network,常簡寫成CDN)是指一種透過網際網路互相連接的電腦網路系統,提供高效能、可擴展性、及低成本的網路將內容傳遞給使用者。

簡單來說,CDN就是在全球各地怖署節點,讓使用者可以就近從最近節點取得快取檔案,像是我們架網站時,可把一些共用的如JQuery函式庫、靜態圖片等檔案放置到CDN伺服器(如這篇文章: [JQuery]使用CDN來載入JQuery)來加快網站的讀取速度。也可以避免被攻擊者使用DDos的方式來癱瘓伺服器。

CDN的功能及優點包括

  1. 高效能:CDN可以讓使用者「就近取得檔案」,內容提供者事先將檔案推到全球的 CDN 節點,在台灣的下載者儘量從台灣取得檔案,在日本或香港的下載者也儘量從當地的伺服器取得檔案。並且因為下載者透過 CDN 下載靜態元件,可以減少原始 server 的負荷。
    ps: 要決定使用者到那個節點要決定使用者應該要到哪組 server 通常有這些方法:

    1. GeoDNS
    2. Anycast
    3. HTTP Redirect (會比較差)
  2. 高可靠度:當今天主要網站當機了,使用者可以從CDN的備援網站去讀取檔案,不至於讓整個網站癱瘓。也可以避免DDos的大量機器人攻擊來癱瘓網站。
  3. 低成本:因為內容提供者不需要在一個 data center 上建立非常粗的水管。舉例來說,如果傳遞需要 100Gbps 的流量,利用 CDN 架構(將資料提供者分散在世界各地),每個 data center 也許只需要 5Gbps 的流量。由於十個 10Gbps 網路與 100Gbps 網路的成熟度不同,成本也會不相同。

CDN提供的服務者包括Akamai、Amazon CloudFront等等(請見下圖)


這是我從別的網站找來的CDN運作示意圖
原本我們讀取網站的模式如下圖,我們會先去和DNS從網址要到伺服器ip,
再去用ip和我們的網頁伺服器讀取網頁內容

clip_image010
使用CDN的架構後,使用者用網址和DNS伺服器要ip位置時,
CDN的DNS伺服器會從使用者所傳來的資訊,去判別離使用者最近的CND節點,
然後使用者再去和該CDN伺服器要取檔案,
因此當某個節點壞掉時,網站還是可以藉有其他節點去正常運作

clip_image012

下面有一些我找的資源

  1. 淺談私有 CDN(內容傳遞網路)佈署 :http://blog.lyhdev.com/2012/02/cdn.html
  2. 免費的雲端加速代理網路-CloudFlare:http://blog.soft.idv.tw/?p=1110
  3. 內容傳遞網路 :http://zh.wikipedia.org/wiki/內容傳遞網路
  4. Amazon CloudFront (CDN) – 內容傳遞網路 : http://ten2.tw/blog/amazon-cloudfront-cdn/
  5. CDN服務提供者:http://blog.gslin.org/archives/2009/03/09/1965