CDN使用了哪些DNS技術?
這個問題挺大的。
剛畢業的時候我可能答得出來,可能回答會比較簡單,入了行之後發現挺複雜。所以姑且就談談教授講過的吧:
CDN一種比較重要的優化手段就是和DNS結合,讓用戶訪問延遲最小的節點。
一種比較簡單的方法是基於地理位置的routing,即,對於DNS請求總是返回距離請求者最近的節點。實現方法很多,不過最終都依賴於一個CIDER到地理位置的表。
這裡的地理位置,可以是經緯度,也可以是就近城市的代號。
DNS伺服器,接收到請求之後,會根據用戶IP找到最匹配的一項,並且計算距離這個用戶最近的Edge伺服器,將這個最優點的IP返回給用戶。
這種方法並不是最優的。因為地理位置上最近的兩個點,延遲可能反而很高。比如歐洲某些國家到美國東海岸的延時可能相當小。
或者某個網路服務提供商內部延遲比較小。北美自己的教育網內部延遲比較小。等等。
還有就是根據用戶AS號碼和AS之間的樣本延遲來估計延遲的。這種做法比較複雜:
比如,我有很多分布在世界各地的主機,這些主機之間可以周期性的計算延遲,這樣就能動態的獲得AS-AS之間的延遲。由於網路的特殊性質,這種方法比起前一種要準確得多。
Akamai據說就是用了這一種方法:
https://www.akamai.com/us/en/multimedia/documents/technical-publication/the-akamai-network-a-platform-for-high-performance-internet-applications-technical-publication.pdf
DNS對於CDN還有其他功用,比如負載均衡(load balancing)(使用RR或者WRR)和DNS failover。我不是很熟悉,就不多說了。
看到KBTIT的答案,我仔細的學習了一下。因為在真實的CDN中一些是沒有用到的或者是將要用到的。
題目是「 CDN使用了哪些DNS技術 」 。那麼我們從兩個方面講:
1、cdn是如何工作的。
2、用到的DNS都有哪些技術。
一、CDN是如何工作的?比如你上網瀏覽一幅經過加速的圖片,首先瀏覽器先發起圖片域名的解析,圖片是經過加速的,最終CDN的授權伺服器會接管這個詢問,根據運維的配置或者自動化的找出系統認為距離客戶端最合適的cache伺服器的IP地址。然後用戶向cache發起鏈接並下載圖片。如果此cache節點沒有此圖片的資源,它會向父層詢問,直到回源伺服器訪問,然後按照原路返回並保留存儲。等到下一次訪問(如果沒過期或者沒被擠出緩存)直接從cache下載。
二、我羅哩羅嗦的說了cdn工作的概要(當然真實比這個複雜點)。從中我們可以提煉出一些DNS的技術。
1、CNAME。
就是將域名指向另一個域名,再由另一個域名提供ip地址。一般用戶的資源做CDN加速都是通過CNAME的方式。比如打開http://360.com的網站,查看屬性找到圖片的域名:
我們利用nslookup工具看看此圖片的是否加速了。
我們利用nslookup工具看看此圖片的是否加速了。
發現圖片是經過加速的,而且是cname到zone :
發現圖片是經過加速的,而且是cname到zone : http://cloudcdn.net(快網CDN的接入域名)
2、A類型、負載均衡等技術:
從上圖看到域名有經過一層cname。這是智能調度層。然後是多個ip的答覆(負載均衡層)
3、DNS的edns-client-subnet
請查看智能DNS解析? - 計算機網路 問題的回答。
4、當然每個CDN公司都有自己的授權伺服器、而且支持異地熱備容災。保證調度的正確、安全。
綜述,CDN的dns調度主要使用了上述技術(如有遺漏,想起來再補充)。
呃,寫完發現問的CDN使用了哪些DNS技術,我這裡寫了一堆功能,就不刪除了,扔給大家看看吧...
1.將訪問切換到CDN,源站需將域名CNAME到對應的CDN域名,以使訪問通過CDN。2.GSLB(詳情請百度)。
3.回源,使用內部(非公網)DNS,當用戶首次訪問或數據過期,提供回源取數據的功能,內部DNS的原因是要避免DNS解析死循環。
@笑藍一方天 提了DNS中CNAME的應用,對Akamai加速的www.gap.com網站,可以用mac或者linux上dig命令查看詳細的解析過程。如下:
上網用戶訪問http://www.gap.com時,先將域名解析請求發給本地DNS伺服器,本地DNS伺服器如果沒有關於http://www.gap.com緩存,繼續遞歸發請求到.com根伺服器,最後DNS解析請求被轉發到gap的域名授權伺服器,在gap的授權伺服器上,它CNAME域名到了Akamai的頂級域名系統 www.gap.com.edgesuite.net. 然後此top level域名再次CNAME到low level 域名.http://akamai.net,最後給A記錄。中間的選擇和判斷,到最後的A記錄,看似簡單,實際上是一個智能的引導過程,奠定CDN的最重要的基礎 - 即引導最終用戶到網路最優的節點和伺服器。中間過程如果寫出來,那就是磚頭一樣的技術書籍,就不詳述了。。。另外補充一下,CDN中還有一類DNS的使用,即客戶的授權DNS伺服器直接採用CDN運營商的DNS伺服器,Akamai有Fast DNS解決方案,採用Any cast網路技術,提供快速、安全的DNS解析,可以防禦DDOS的攻擊。
可以通過DNS同時對多家CDN進行調度,分配,可以了解一下ZDNS,目前國內就這一家可以做到
1:根據發起訪問的位置信息進行解析:本地DNS解析IP位置信息,調度至下層CDN節點,沒有需要的內容,返回上層獲取內容,還是沒有就回源站;
2:dns解析域名,返回cname,根據cname進行與1一樣的解析。
3:劫持:網內劫持,搶先應答。
第一個DNS請求到中央的全局DNS,再將之分配到區域節點,再分到離你最近的CDN。
推薦閱讀: