歡迎大家來到學習啦,小編為大家揭開CDN的神秘面紗,歡迎大家閱讀。
CDN 是一個經策略性部署的整體系統.能夠幫助用戶解決分布式存儲.負載均衡.網絡請求的重定向和內容管理等問題.其目的是通過在現有的 Internet 中增加一層新的網絡架構.將網站的內容發布到最接近用戶的網絡" 邊緣 ".使用戶可以就近取得所需的內容.解決 Internet 網絡擁塞狀況.提高用戶訪問網站的響應速度.從技術上全面解決由於網絡帶寬小.用戶訪問量大.網點分布不均等原因.解決用戶訪問網站的響應速度慢的根本原因.
CDN是個很龐大的概念和體系.全世界CDN服務提供商屈指可數.
我們熟悉的Google就是某CND的最大客戶.我們今天只選取其中一小部分來討論.
說了半天.看上去似乎很復雜.鑒於經典的大多是搞WEB的.接觸的最多的是WEB服務器/數據庫等.既然是淺談.我就舉個簡單的例子.
比如你弄一網站.假設你有能力購買2台服務器.作為WEB服務.暫時我們認為服務器本身不存在性能問題.一台托管在北方的網通機房.一台托管在南方的電信機房.2台服務器內容互為同步.則通過智能的DNS解析設備.將網通的用戶定位到北方網通的服務器上.將電信的用戶定位到南方電信的服務器上.這.就是最基礎的CDN.我的理解是 --- 廣域網的負載均衡.
2台服務器放置問題我不想多談.有錢就行.2台服務器內容同步的方式很多.我也不想多談.今天主要是要談一下.如何實現讓網通的用戶去訪問放置在網通的服務器.電信的用戶去訪問放置在電信的服務器.
即如今很多服務提供商所謂的智能DNS解析.也就是互聯網鏈路的負載均衡.
(提問) 我們訪問一個域名.比如 .. 誰知道實際的訪問過程是怎麼樣的?
(獎勵) 誰知道的給100G.一組大稜光.一個源生虛空?沒人知道嗎?那不怪我了!
......
電信/網通.2條鏈路的負載均衡.我們先來談談這個.因為這個是訪問者最直觀的體驗.
既然CDN的目的是為了提高用戶訪問網站的響應速度.最直接的方法就是做互聯網鏈路的智能導向.
當然.CDN也涉及多台服務器負載均衡.應用的負載均衡.包括中間件的應用負載均衡.因為時間關系暫且不表.
當我們將 . 輸入IE地址欄敲回車後.首先要去你的Local DNS做解析.什麼是Local DNS?就是你本機網卡所設置的DNS服務器.比如我的是: 202.96.128.68.如果Local DNS沒有 www.Bluieidea.com 的Cache記錄.則Local DNS會詢問上級DNS服務器.注意.DNS的查詢結構是樹狀的.最後查詢的DNS為root.即為root DNS.或者稱為根DNS.根DNS在全世界只有13台.中國境內沒有.當root DNS接受到請求後.通過查詢獲得的結果一般是: xuexila.com這個域的解析服務器為ns1.chinadns.com.要求你去詢問ns1.chinadns.com去做解析.ns1.chinadns.com是哪裡來的?當然是你申請注冊域名的機構自己的DNS服務器.也就是你xuexila.com這個域名的隸屬DNS.隸屬DNS獲得了你域名解析的請求.則查詢A記錄.返回xuexila.com的IP地址給最初的PC Client端.完成了一次域名解析為IP地址的全部過程.
雖然很繞.但是如果能搞明白.那才能理解下面的關於智能DNS的技術原理.
上述DNS查詢的常規流程.基本上就是如下圖:
PC -> Local DNS -> Root DNS -> ns1.chinadns.com -> IP -> 返回給PC
智能DNS的工作原理即是在ns1.chinadns.com這一步.工作流程如下:
PC -> Local DNS -> Root DNS -> 智能DNS解析 -> 返回IP地址 -> 返回給PC
注意.上述的"返回IP地址"這一步.其實是根據PC的來源.智能的返回電信或者網通的IP地址.即如果請求解析的PC是電信線路的.則返回托管在南方電信機房的服務器的電信IP地址.反之.則返回托管在北方網通機房的網通的IP地址.
看到這裡.出現了一個問題.如何判斷這個請求DNS的PC.他是電信線路還是網通線路呢?
有2個方法.一個聰明的.一個笨的.我們先說笨的方法.如果智能DNS有一張龐大的IP地址分配表.表裡面有所有的電信IP地址段和所有的網通地址段.則可以通過查詢這個IP地址表來判斷.請求的PC是屬於哪個線路上的.這個方法是最直接.最高效.最穩妥的方法.雖然的確是笨了點.但是請各位注意.往往笨的方法就代表著穩定.代表著高可用性.所以.我很遺憾的告訴大家.基本上銀行.證券.金融.這些重要部門.都是使用的這種笨的方法.
另外一個聰明的方法.則是通過智能的動態檢測的方法.在智能DNS解析設備接受到PC的DNS請求的時候.將使用電信/網通的2條線路分別發送一個探測包.發送目標可以為目標PC的IP地址.不過更多的發送目標為Local DNS.這個包可能是ICMP的PING包.也可能是反向DNS查詢的DNS包(TCP 53).當2個包有回應後.比較2個包的時間戳.延遲小的.則判定為優先解析的鏈路.
說到這裡.基本上把智能DNS解析的工作原理簡單的介紹了一下.當然.實際環境中會有更復雜.更多方法更多手段來實現.我寫這篇小文的目的.一來分享一下.二來混點威望.僅此而已.
CDN很龐大.我認為此文主要是探討其中的一部分.即互聯網鏈路的負載均衡.也就是業內稱為: 廣域網的全球負載均衡和應用交付網絡.