這是 CDN 的一些粗略的概念。
用 CDN 最常見的兩個理由:
* 速度:下載者可以就近取得檔案。這對於小檔案 (css/javascript) 會有很大的幫助。(也許要解釋瀏覽器 HTTP 的運作,並抓一張 Firebug 的畫面分析?)
* 效率:因為下載者透過 CDN 下載,可以減少原始 server 的負荷。
另外還有其他的理由:
* 成本
* 安全:以分散架構對抗 DDoS 攻擊。
要決定使用者應該要到哪組 server 通常有這些方法:
* GeoDNS
* Anycast
* HTTP Redirect (會比較差)
這幾種不衝突,常見的是前兩者搭配著用。將 DNS server IP anycast,當下載者要抓某個 domain 時,近的 server 就會知道大致的區域。再配合 GeoDNS 判斷使用者的 IP address 適合到哪個 node。
不過這些問題對 HiNet 就很麻煩。(留到現場講)
再來就是 reverse proxy cache 所產生的問題,這個部份再想看看要怎麼寫。
前三大 CDN 服務提供者:
* Akamai
* Limelight Networks
* CDNetworks
其中 PIXNET 用的 Panther Express 前陣子被 CDNetworks 收購。
另外,很熱門的:
* Amazon CloudFront
Amazon CloudFront 有公開的價錢,Akamai 與 Limelight 也有可以參考的價錢:(只是參考用)
* Distributed Cloud (Akamai)
* Mosso Cloud Files (Limelight Networks)
其中 Akamai 國內有代理商 (併力科技)。
另外還有一些可以參考 Wikipedia 上的表。
要挑什麼 CDN 是依照需求而決定,我會談的是台灣的情況。
在台灣有「用戶」的 ISP 中,HiNet 與 TANet 的出國線路狀態是最差的,其他 ISP 的情況會好很多,所以測試的重點要放在這兩個 ISP。
以 影音來說,由於傳輸時間普遍會大於一秒,重點在於 bandwidth 而非 latency。所以到台灣抓與香港、日本,甚至到美國抓其實都 okay,只要 thoughtput 夠高就可以。以 1M 高畫質的影片換算,有穩定 150KB/sec 的速度其實就很順,如果是 600K 或是更低,有穩定的 100KB/sec 以上就 okay。
如果是 css/javascript,因為檔案很小,latency 就變得很重要。可以從台灣本地提供檔案通常是最好的 (<10ms),或是從日本、香港 (~20ms 到 30ms) 提供,如果 CDN 業者可以幫忙 gzip 會更好 (因為他們會處理 IE6 的一卡車問題)。
如果檔案是屬於下載性質,速度其實不是重點,重點在於成本的話,有些 CDN 業者有提供「經濟型網路」,通常是用北美較便宜的點提供下載。有一定的 commit 時會比 Amazon S3 的 USD$0.17/GB 便宜。
轉貼http://freemannote.blogspot.com/2009/03/content-delivery-network-cdn.html
沒有留言:
張貼留言