最近橫著走同學(xué)貌似在研究CDN.為了威望早點到200.特寫一小文章.跟大家一起學(xué)習(xí).
我們先Google一下CDN的概念:
CDN 是一個經(jīng)策略性部署的整體系統(tǒng).能夠幫助用戶解決分布式存儲.負(fù)載均衡.網(wǎng)絡(luò)請求的重定向和內(nèi)容管理等問題.其目的是通過在現(xiàn)有的 Internet 中增加一層新的網(wǎng)絡(luò)架構(gòu).將網(wǎng)站的內(nèi)容發(fā)布到最接近用戶的網(wǎng)絡(luò)" 邊緣 ".使用戶可以就近取得所需的內(nèi)容.解決 Internet 網(wǎng)絡(luò)擁塞狀況.提高用戶訪問網(wǎng)站的響應(yīng)速度.從技術(shù)上全面解決由于網(wǎng)絡(luò)帶寬小.用戶訪問量大.網(wǎng)點分布不均等原因.解決用戶訪問網(wǎng)站的響應(yīng)速度慢的根本原因.
CDN是個很龐大的概念和體系.全世界CDN服務(wù)提供商屈指可數(shù). 我們熟悉的Google就是某CND的最大客戶.我們今天只選取其中一小部分來討論.
說了半天.看上去似乎很復(fù)雜.鑒于經(jīng)典的大多是搞WEB的.接觸的最多的是WEB服務(wù)器/數(shù)據(jù)庫等.既然是淺談.我就舉個簡單的例子.
比如你弄一網(wǎng)站.假設(shè)你有能力購買2臺服務(wù)器.作為WEB服務(wù).暫時我們認(rèn)為服務(wù)器本身不存在性能問題.一臺托管在北方的網(wǎng)通機房.一臺托管在南方的電信機房.2臺服務(wù)器內(nèi)容互為同步.則通過智能的DNS解析設(shè)備.將網(wǎng)通的用戶定位到北方網(wǎng)通的服務(wù)器上.將電信的用戶定位到南方電信的服務(wù)器上.這.就是最基礎(chǔ)的CDN.我的理解是 --- 廣域網(wǎng)的負(fù)載均衡.
2臺服務(wù)器放置問題我不想多談.有錢就行.2臺服務(wù)器內(nèi)容同步的方式很多.我也不想多談.今天主要是要談一下.如何實現(xiàn)讓網(wǎng)通的用戶去訪問放置在網(wǎng)通的服務(wù)器.電信的用戶去訪問放置在電信的服務(wù)器.
即如今很多服務(wù)提供商所謂的智能DNS解析.也就是互聯(lián)網(wǎng)鏈路的負(fù)載均衡.
(提問) 我們訪問一個域名.比如 www.95time.cn. 誰知道實際的訪問過程是怎么樣的? (獎勵) 誰知道的給100G.一組大棱光.一個源生虛空?沒人知道嗎?那不怪我了!
......
電信/網(wǎng)通.2條鏈路的負(fù)載均衡.我們先來談?wù)勥@個.因為這個是訪問者最直觀的體驗. 既然CDN的目的是為了提高用戶訪問網(wǎng)站的響應(yīng)速度.最直接的方法就是做互聯(lián)網(wǎng)鏈路的智能導(dǎo)向. 當(dāng)然.CDN也涉及多臺服務(wù)器負(fù)載均衡.應(yīng)用的負(fù)載均衡.包括中間件的應(yīng)用負(fù)載均衡.因為時間關(guān)系暫且不表.
當(dāng)我們將 www.95time.cn 輸入IE地址欄敲回車后.首先要去你的Local DNS做解析.什么是Local DNS?就是你本機網(wǎng)卡所設(shè)置的DNS服務(wù)器.比如我的是: 202.96.128.68.如果Local DNS沒有 www.Bluieidea.com 的Cache記錄.則Local DNS會詢問上級DNS服務(wù)器.注意.DNS的查詢結(jié)構(gòu)是樹狀的.最后查詢的DNS為root.即為root DNS.或者稱為根DNS.根DNS在全世界只有13臺.中國境內(nèi)沒有.當(dāng)root DNS接受到請求后.通過查詢獲得的結(jié)果一般是: Blueidea.com這個域的解析服務(wù)器為ns1.chinadns.com.要求你去詢問ns1.chinadns.com去做解析.ns1.chinadns.com是哪里來的?當(dāng)然是你申請注冊域名的機構(gòu)自己的DNS服務(wù)器.也就是你Blueidea.com這個域名的隸屬DNS.隸屬DNS獲得了你域名解析的請求.則查詢A記錄.返回Blueidea.com的IP地址給最初的PC Client端.完成了一次域名解析為IP地址的全部過程.
雖然很繞.但是如果能搞明白.那才能理解下面的關(guān)于智能DNS的技術(shù)原理. 上述DNS查詢的常規(guī)流程.基本上就是如下圖:
PC -> Local DNS -> Root DNS -> ns1.chinadns.com -> IP -> 返回給PC
智能DNS的工作原理即是在ns1.chinadns.com這一步.工作流程如下:
PC -> Local DNS -> Root DNS -> 智能DNS解析 -> 返回IP地址 -> 返回給PC
注意.上述的"返回IP地址"這一步.其實是根據(jù)PC的來源.智能的返回電信或者網(wǎng)通的IP地址.即如果請求解析的PC是電信線路的.則返回托管在南方電信機房的服務(wù)器的電信IP地址.反之.則返回托管在北方網(wǎng)通機房的網(wǎng)通的IP地址.
看到這里.出現(xiàn)了一個問題.如何判斷這個請求DNS的PC.他是電信線路還是網(wǎng)通線路呢?
有2個方法.一個聰明的.一個笨的.我們先說笨的方法.如果智能DNS有一張龐大的IP地址分配表.表里面有所有的電信IP地址段和所有的網(wǎng)通地址段.則可以通過查詢這個IP地址表來判斷.請求的PC是屬于哪個線路上的.這個方法是最直接.最高效.最穩(wěn)妥的方法.雖然的確是笨了點.但是請各位注意.往往笨的方法就代表著穩(wěn)定.代表著高可用性.所以.我很遺憾的告訴大家.基本上銀行.證券.金融.這些重要部門.都是使用的這種笨的方法.
另外一個聰明的方法.則是通過智能的動態(tài)檢測的方法.在智能DNS解析設(shè)備接受到PC的DNS請求的時候.將使用電信/網(wǎng)通的2條線路分別發(fā)送一個探測包.發(fā)送目標(biāo)可以為目標(biāo)PC的IP地址.不過更多的發(fā)送目標(biāo)為Local DNS.這個包可能是ICMP的PING包.也可能是反向DNS查詢的DNS包(TCP 53).當(dāng)2個包有回應(yīng)后.比較2個包的時間戳.延遲小的.則判定為優(yōu)先解析的鏈路.
說到這里.基本上把智能DNS解析的工作原理簡單的介紹了一下.當(dāng)然.實際環(huán)境中會有更復(fù)雜.更多方法更多手段來實現(xiàn).我寫這篇小文的目的.一來分享一下.二來混點威望.僅此而已.
CDN很龐大.我認(rèn)為此文主要是探討其中的一部分.即互聯(lián)網(wǎng)鏈路的負(fù)載均衡.也就是業(yè)內(nèi)稱為: 廣域網(wǎng)的全球負(fù)載均衡和應(yīng)用交付網(wǎng)絡(luò).
經(jīng)典論壇交流: http://bbs.blueidea.com/thread-2852595-1-2.html
本文鏈接:http://www.95time.cn/computer/net/2008/5744.asp
出處:藍(lán)色理想
責(zé)任編輯:bluehearts
◎進入論壇計算機技術(shù)版塊參加討論
|