智能DNS及其工作原理: CDN实现原理
生活随笔
收集整理的這篇文章主要介紹了
智能DNS及其工作原理: CDN实现原理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
假設某網站 ,如www.a.com, 上海有服務器一臺,給的IP是1.1.1.1 ,北京有一臺,給的是2.2.2.2 處于不同IDC,要求實現上海的用戶訪問在上海的服務器, 而北京的用戶訪問到北京的服務器.
角色1 Client 上海電信用戶5.5.5.10
角色2 Client的DNS服務器 5.5.5.1 根據Client的網絡接入的方式不同,DNS服務器的IP地址是
不一樣的
角色3 a.com的soa dns,ip 3.3.3.3 由com. 授權,
角色4 www.a.com的2臺服務器, 上海的IP1.1.1.1 北京的2.2.2.2
角色5 上海的DNS服務器 1.1.1.10
角色6 北京的DNS服務器 2.2.2.10
在確定好所有的角色后,我們來看看這個工作過程以及解決方案
DNS解析分為遞歸與跌代.
假定上海電信dns 是遞歸查詢, 通過一個圖我們來說明智能解析過程. (請把該圖放大再看比較清楚)
因為遞歸查詢,那么情況比較復雜,因為 最終訪問到a.com dns 服務器的是上海電信dns服務器, 是Client DNS. 這樣只能判定Client DNS比較距離 上海或者北京比較近,而無法斷定Client
是距離那里比較近。
不過,由于網絡接入的方式不一樣,例如 網通的ADSL方式,其IP、DNS地址均由動態獲取,這樣此時 Client DNS服務器與Client應該是屬于相同運營商IP,這樣就能夠通過判定Client DNS地址來大約斷定Client所屬運營商所處地區,從而給予Client一個正確的IP地址解析。
但是假如某上海用戶手工指定DNS,恰好又指定了一個北京的遞歸查詢DNS服務器,這個時候,就比較麻煩了,因為沒有辦法得知Client的實際位置。
考慮此時是遞歸查詢,所知Client DNS的IP地址為北京IP,則a.com會解析北京服務器地址給該 Client DNS,那么Client作為上海用戶最終得到的IP將是 www.a.com = 2.2.2.2 (該地址為北京地址) ,這樣就會導致此用戶得到錯誤的服務器地址。
不過,好運的是,現在的大多數DNS服務器都是迭代查詢,因為沒有多少DNS服務器可以承受遞歸的流量,所以對于99%的用戶來說,都能得到正確的地址解析,從而正確的訪問服務器。
那么迭代查詢的情況又會如何呢?則最終向a.com詢問誰是 www.a.com的 ,將是Client.
這樣,a.com的DNS服務器將得到Client 的IP,再根據Client IP地址距離那里比較近,就可以決定返回www.a.com 的IP 1.1.1.1 還是 2.2.2.2; 但是這種工作模式的問題是必須選擇一個好的算法。為什么呢?
應為需要考慮到中國網絡的實際情況,南北電信分拆后,telecom與cnc之間的互相訪問非常慢, 例如 某上海網通用戶訪問位于上海電信的www.a.com.,其速度可能還不如去訪問位于北京網通的www.a.com.
關于如何解決這個問題,我已經再另外一個精華貼中有所解答,請大家參考在本論壇web子論壇中發表的文章
http://bbs.chinaunix.net/viewthread.php?tid=711346&extra=page%3D2
另外也可以使用靜態算法,通過收集Client IP是屬于某個地區的(上海還是北京),就可以決定返回某個IP地址,不過需要收集所有IP所處實際地區;目前網上已經有很多查詢ip地址是屬于某個地區的技術,看來這種方法還是有可能實現的。
目前手工配置DNS服務器來實現以上目的,好象沒有什么現成的程序能做到,需要自己開發一些相關工作流程腳本程序,以及收集電信、網通IP地址段,所處地區等,工作內容比較復雜。
好消息是,現在已經有相關的商業產品能夠做到這一點。 如果網站的級別已經到達需要做CDN的話,我想boss考慮問題時,錢應該不是首要問題了吧?
角色1 Client 上海電信用戶5.5.5.10
角色2 Client的DNS服務器 5.5.5.1 根據Client的網絡接入的方式不同,DNS服務器的IP地址是
不一樣的
角色3 a.com的soa dns,ip 3.3.3.3 由com. 授權,
角色4 www.a.com的2臺服務器, 上海的IP1.1.1.1 北京的2.2.2.2
角色5 上海的DNS服務器 1.1.1.10
角色6 北京的DNS服務器 2.2.2.10
在確定好所有的角色后,我們來看看這個工作過程以及解決方案
DNS解析分為遞歸與跌代.
假定上海電信dns 是遞歸查詢, 通過一個圖我們來說明智能解析過程. (請把該圖放大再看比較清楚)
因為遞歸查詢,那么情況比較復雜,因為 最終訪問到a.com dns 服務器的是上海電信dns服務器, 是Client DNS. 這樣只能判定Client DNS比較距離 上海或者北京比較近,而無法斷定Client
是距離那里比較近。
不過,由于網絡接入的方式不一樣,例如 網通的ADSL方式,其IP、DNS地址均由動態獲取,這樣此時 Client DNS服務器與Client應該是屬于相同運營商IP,這樣就能夠通過判定Client DNS地址來大約斷定Client所屬運營商所處地區,從而給予Client一個正確的IP地址解析。
但是假如某上海用戶手工指定DNS,恰好又指定了一個北京的遞歸查詢DNS服務器,這個時候,就比較麻煩了,因為沒有辦法得知Client的實際位置。
考慮此時是遞歸查詢,所知Client DNS的IP地址為北京IP,則a.com會解析北京服務器地址給該 Client DNS,那么Client作為上海用戶最終得到的IP將是 www.a.com = 2.2.2.2 (該地址為北京地址) ,這樣就會導致此用戶得到錯誤的服務器地址。
不過,好運的是,現在的大多數DNS服務器都是迭代查詢,因為沒有多少DNS服務器可以承受遞歸的流量,所以對于99%的用戶來說,都能得到正確的地址解析,從而正確的訪問服務器。
那么迭代查詢的情況又會如何呢?則最終向a.com詢問誰是 www.a.com的 ,將是Client.
這樣,a.com的DNS服務器將得到Client 的IP,再根據Client IP地址距離那里比較近,就可以決定返回www.a.com 的IP 1.1.1.1 還是 2.2.2.2; 但是這種工作模式的問題是必須選擇一個好的算法。為什么呢?
應為需要考慮到中國網絡的實際情況,南北電信分拆后,telecom與cnc之間的互相訪問非常慢, 例如 某上海網通用戶訪問位于上海電信的www.a.com.,其速度可能還不如去訪問位于北京網通的www.a.com.
關于如何解決這個問題,我已經再另外一個精華貼中有所解答,請大家參考在本論壇web子論壇中發表的文章
http://bbs.chinaunix.net/viewthread.php?tid=711346&extra=page%3D2
另外也可以使用靜態算法,通過收集Client IP是屬于某個地區的(上海還是北京),就可以決定返回某個IP地址,不過需要收集所有IP所處實際地區;目前網上已經有很多查詢ip地址是屬于某個地區的技術,看來這種方法還是有可能實現的。
目前手工配置DNS服務器來實現以上目的,好象沒有什么現成的程序能做到,需要自己開發一些相關工作流程腳本程序,以及收集電信、網通IP地址段,所處地區等,工作內容比較復雜。
好消息是,現在已經有相關的商業產品能夠做到這一點。 如果網站的級別已經到達需要做CDN的話,我想boss考慮問題時,錢應該不是首要問題了吧?
轉載于:https://blog.51cto.com/xfgushi/157816
總結
以上是生活随笔為你收集整理的智能DNS及其工作原理: CDN实现原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计模式--责任链模式(COR)
- 下一篇: IT基础结构-1.DC-DNS-安装