CDN架構和原理

問你個問題,如果源服務器掛了。後果會怎樣的?

用nginx還是用varnish還是squid,就要看cdn服務商自己的技術的要求了。

影響的會是用到該源的所有服務的所有用戶。

所以你們的源服務器最好是搞兩臺的,一臺主,平時cdn的二級回源,就回源這臺機器的。

一臺備,當主源出問題時,cdn的二級回源能自動回源到備機的。

通常swf、靜態頁面、圖片、音頻文件、遊戲場景素材這些都會放CDN的。我所知道的網宿,之前回源的IP是十幾個的

你將文件上傳到源服務器,以及對應的遊戲頁面更新的這文件的地址。當用戶去cdn下載這文件時,其實在cdn節點是沒這文件的內容的。這時cdn的節點會向二級回源節點去找,二級回源節點也沒有,就會請求向源服務器去下載,下載後,會將內容傳回給cdn節點,同時會在自己本地保存一份內容。cdn節點拿到文件後,就會將內容傳給用戶,同時也會將內容在本地存一份,這樣第一個用戶就已經拿到內容了。

有些內容的規則的緩存規則寫得不好,會導致每個用戶訪問的內容都要回源。這樣會導致回源的帶寬非常大,甚至將帶寬撐爆,也會導致用戶訪問時的響應非常慢的。

二級回源服務器也會保存(緩存)一份數據,供給其他cdn節點訪問用的。這樣源服務器的回源帶寬就會低很多了。

因爲處理的是靜態內容,所以不會消耗多少cpu的。只消耗帶寬以及磁盤空間而已的。

源服務器只要做正常的圖片的部署就行了。但要設定指定後續名的文件的過期時間。

通常如果mp3文件不怎麼更改的,將過期時間可以設置爲1個月或7天過期的。

等到了過期時間,在訪問時會回源做一次文件校驗,如果文件沒更改的,就返回303給客戶端,用戶就繼續訪問自己本地的緩存,或者是cdn節點就不需要再重新下載內容了。

當更改了這文件後,就更新一次後面的版本號。當作新內容來對待,這樣就不會出現用戶那邊訪問的還是老的內容的情況了。

沒這配置,cdn會用自己的內部規則來定義這過期時間,如果沒有的,訪問相同的內容,就會一直回源做文件校驗,這會導致回源帶寬變大,以及用戶的訪問也慢的。



http://davidbj.blog.51cto.com/4159484/1423732

介於cdn節點與源服務器之間的那層節點,就叫做二級回源節點。

也叫cdn的父節點。

相當於最外面的cdn的子節點的內容,會通過二級節點獲取。

但二級節點的內容,會回源服務器去獲取。

這麼說吧。用戶所訪問的cdn節點的圖片等靜態文件和資源,原來在cdn節點和二級節點都沒有,最終是要回源服務器來獲取這些圖片等靜態文件和資源的。

cdn的其中一個功能,就是會在內存裏緩存從源服務器拿到的圖片等靜態文件資源。

可以使用nginx、varnish、squid來做緩存的。

估計現在用nginx做的比較多。因爲比較簡單


這是用17ce解析img.baidu.com的百度的圖片服務器的域名的情況。這些IP,都是img.baidu.com這域名下的cdn的節點IP的。不同地區解析到的IP是不同的。

對應地區的用戶,就能解析到他最近的服務器的IP。這樣用戶在訪問圖片時速度就會快很多,因爲服務器就在用戶附近。

自己查一下cdn的整個架構是怎樣的就知道了。

爲了防止源服務器掛掉而導致圖片不能正常顯示的,通常源服務器是設置兩臺的。當有一臺源服務器掛掉。讓二級cdn節點回源另外一臺機器的。這樣就能保證圖片訪問一直都是正常的。

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