簡單cdn

第七章 簡單cdn

                                                            作者:田逸([email protected])

7.1 cdn概述

 

Cdn是Content Delivery Network首字母縮寫,譯成中文就是內容分發網絡。使用cdn技術的主要目的在於增加訪問速度、解決南北互聯(中國適用)、提高用戶體驗等等。Cdn歷史上最有名的事件:當屬關於克林頓醜聞的斯塔爾報告被放在互聯網,因下載該報告的人太多,最終導致服務器癱瘓。該事件直接促使cdn的誕生。

 

最早的商業cdn服務可能誕生於1999年,但本人聞之cdn這個業務則是2005年的事情了。到了2006年的春天,我有幸得到一個cdn設計方面的工作,這纔有機會全面瞭解cdn原理、設計、部署以及運營等。

 

 

7.1.1 爲什麼需要使用cdn

 

1、  解決網站高流量、大併發的問題。我們知道,任何一個物理設備,其負載都有一個極限。爲了應對訪問量突增,使用cdn服務是一個好的系統擴容方案。

2、  解決南北互聯問題。我國的網絡是劃江而治的格局,因爲利益之爭,各網絡服務商之間並不是通力協作,而是採取各種手段相互限制。這就導致各網之間的互聯互通存在很大的問題,具體表現爲:電信的用戶訪問放置在網通機房的服務器,響應時間特別長,反之亦然。使用cdn技術,可以讓電信的用戶訪問電信的內容緩存服務器,網通的用戶訪問網通的內容緩存服務器。通過這樣一種策略,繞開了運行商之間人爲設置的障礙。

3、  訪問加速。Cdn採用緩存技術,把訪問對象緩存起來,有的技術甚至能把對象緩存到內存(如varnish),這在效果上表現出來就是訪問加速。

4、  降低總體運營成本。在一些互聯互通比較好的第三方BGP機房,其帶寬費高達300-400//月,而二、三線城市單線接入的帶寬費100M一年的費用才5萬左右。使用cdn運營方案,我們把源站放在BGP機房,而把緩存服務器放置在帶寬費用較低的其它地方。因爲cdn的大部分流量被轉移到緩存服務器上,源站只有較小的訪問請求,因此總體運營成本大幅降低。

5、  提高網站的可用性。源站的訪問量變得很小,這意味着源站系統有更低的負載,更低的磁盤i/o,除故障的機率大大降低。對於緩存服務器,多個服務器做成集羣,保證整個系統的高可用。

6、  ddos***。***負載被分配到不同的物理服務器,客觀上起到防ddos的作用。

 

7.1.2 cdn適用的場合

 

任何一門技術,都有一定的適用範圍,cdn也不另外。實踐證明,cdn對於靜態對象的加速和發佈具有很好的效果,但對於動態的網站,則效果不佳。爲了使用cdn技術所帶來的好處,我們可以通過動態內容靜態化、靜態內容分離(如動態站點裏的圖片)等方式,來加速訪問和增強用戶體驗。

 

有哪些對象是靜態可緩存的呢?這包括html頁面文件、視頻文件、js文件、css文件、exe文件、圖片文件(jpeggifpng等)等。

 

7.1.3 cdn的組成

 

Cdn是一種組合技術,它包括源站、緩存服務器、智能dns、客戶端等幾個部分。

 

源站指發佈內容的原始站點。新增、刪除和更改網站的文件,都是在源站上進行的;緩存服務器抓取的對象也全部來自於源站。

 

緩存服務器是直接提供給用戶訪問的站點資源,有一個或數個服務器組成;當一個用戶發起訪問時,他的訪問請求被智能dns定位到離他較近的緩存服務器。如果訪問所需的內容沒有被緩存,則緩存服務器向鄰近的緩存服務器或直接向源站抓取內容,然後再返還給用戶;如果用戶所請求的內容剛好在緩存裏面,則直接把內容返還給用戶。

 

智能dns是整個cdn的核心,它負責根據用戶的來源,將其訪問請求轉向到離用戶較近或較合適的緩存服務器如把長沙電信的用戶請求轉向到長沙電信機房的緩存服務器。實現智能dns的一種技術是:bind view,在bind 9以後的版本,都應該支持view 視圖這個功能。另外還有一個次一點的方案,即dns輪詢方式。

 

客戶端即普通發起訪問的用戶,一般的訪問方式是瀏覽器。這個不再做說明。

 

除了前面列舉的組件外,還有一個可選項目,即用來進行內部域名以及源站的域名解析。因爲是可選的,因此也可以通過使用本地hosts指定主機名來代替。不過有一點需要注意,內部域名系統不能使用合法註冊的域名服務器,也即在互聯網上,找不到這個域名系統的NS記錄。爲什麼呢?請繼續往下看。

 

接下來,我們以圖示來總結一下cdn各組件間的關係。
 
 
 
 
 
7-1展示了兩種比較典型的訪問場景,這兩種場景,基本上能反應這個cdn的工作全貌:

 

場景一:當“A網用戶”訪問被cdn加速的站點 http://www.formyz.cn時,從本地的dns查詢域名,最終可能在全局智能dns服務器得到域名所對應的ip地址,即本圖所示“A網的緩存服務器”的ip;接着“A網用戶”瀏覽器向“A網的緩存服務器”發起訪問請求,幸運的是所需的默認頁面文件index.htm正好被緩存在“A網的緩存服務器”裏,於是緩存服務器立即返還數據,完成一次訪問請求。

 

場景二:當“B網用戶”訪問被cdn加速的站點 http://www.formyz.cn時,從本地的dns查詢域名,最終可能在全局智能dns服務器得到域名所對應的ip地址,即本圖所示“B網的緩存服務器”的ip;接着“B網用戶”瀏覽器向“B網的緩存服務器”發起訪問請求,但是緩存服務器並沒有緩存默認頁面文件index.html,它需要先從源站取得這個對象,緩存並把內容返還給“B網用戶”。“B網緩存服務器”通過“內部dns”知道源站在哪裏。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章