CDN和DNS區別


參考:https://blog.csdn.net/dc_programming/article/details/80811333

1.什么是cdn

cdn全稱是內容分發網絡。其目的是讓用戶能夠更快速的得到請求的數據。簡單來講,cdn就是用來加速的,他能讓用戶就近訪問數據,這樣就更更快的獲取到需要的數據。舉個例子,現在服務器在北京,深圳的用戶想要獲取服務器上的數據就需要跨越一個很遠的距離,這顯然就比北京的用戶訪問北京的服務器速度要慢。但是現在我們在深圳建立一個cdn服務器,上面緩存住一些數據,深圳用戶訪問時先訪問這個cdn服務器,如果服務器上有用戶請求的數據就可以直接返回,這樣速度就大大的提升了。

2.dns服務

要了解cdn就先要了解一下dns。當我們在瀏覽器中輸入一個域名時,首先需要將域名轉換為ip地址,再將ip地址轉換為mac地址,這樣才能在網絡上找到該服務器。我們先不看ip轉換mac地址的過程,先來看看是怎么將一個域名轉換為ip的。

當我們向dns服務器發起解析域名的請求時,dns服務器首先會查詢自己的緩存中有沒有該域名,如果緩存中存在該域名,則可以直接返回ip地址。如果緩存中沒有,服務器則會以遞歸的方式層層訪問。例如,我們要訪問www.baidu.com,首先我們會先向全球13個根服務器發起請求,詢問com域名的地址,然后再向負責com域名的名稱服務器發送請求,找到baidu.com,這樣層層遞歸,最終找到我們需要的ip地址。

3.dns與cdn的關系

剛才說到cdn實際上是一個就近訪問,那么現在有一個問題是,我們怎么知道用戶的所在位置從而給他分配最佳的cdn節點呢。這就需要dns服務來進行定位了。當我們通過使用dns服務的時候,可以根據他使用的LDNS服務器來進行一個定位,例如我們的調度服務器看到他是來自深圳電信的LDNS服務器,那么我們就認為該用戶來自深圳電信,然后調度服務器可以讓該用戶去訪問深圳電信的CDN服務器,這樣就讓用戶訪問到了最優的cdn節點。

通過dns服務我們可以很快的定位到用戶的位置,然后給用戶分配最佳cdn節點,但是這種調度方式存在一個問題,例如,當我 是北京聯通的用戶但是使用的卻是深圳電信的ldns的話,調度服務器會給我分配到深圳電信的cdn服務器,這樣就產生了錯誤的調度。

4.http調度方式

針對上面的問題,我們還有另一種調度方式——http調度。

當用戶訪問我們的服務器時,服務器先分析用戶的ip地址,然后服務器給用戶返回一個302重定向,將離用戶最近的服務器存在location中,用戶再去請求這個cdn服務器就能得到最佳的cdn節點。

這種調度方式的優點是他的定位更加准確,不會因為錯誤的ldns造成訪問偏差。但是他的缺點就是需要一次額外的http訪問,這樣首次訪問的延時就會比較高。所以如果是對大文件的請求,顯然采用http的調度方式比較合適,因為大文件的請求需要更多的時間,相比之下可以忽略這次http請求的時間,但是如果是一些小文件的請求,花費這個時間有時就有些得不償失了。

當然我們也可以將這兩種方式結合起來使用,先通過dns的方式來定位,然后通過http的方式來糾正偏差。

5.緩存的兩種方式

cdn中緩存了服務器上的部分資源。那么服務器怎么去更新cdn節點的緩存呢?這里有兩種方式,一種是服務器主動去更新緩存,cdn節點被動接受。另一種方式是當用戶請求的資源不存在時,cdn服務器向上游服務器發起請求,更新緩存,然后將數據返回給用戶,這種方式是cdn服務器主動,源站服務器被動。顯然第一種方式存在很多問題,例如很容易產生404等,所以一般采用第二種緩存方式。

6.cdn的整個工作過程

當用戶請求一個文件時,cdn的工作過程如下:

1.dns請求當地local DNS

2.當地local DNS遞歸的查詢服務器的gslb

3.服務器根據local DNS 分配最佳節點,返回ip

4.用戶獲得最佳接入ip,訪問最佳節點。

5.如果該節點沒有用戶想要獲取的內容,則通過內部路由訪問上一節點,直到找到文件或到達源站為止。

6.cdn節點緩存該數據,下次請求該文件時可以直接返回。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM