天天進步一點點——負載均衡之DNS域名解析

轉載請說明出處:http://blog.csdn.net/cywosp/article/details/38017027算法


    在上一篇文章(http://blog.csdn.net/cywosp/article/details/38014581)中講到了使用HTTP重定向來實現server的負載均衡,本文則解說還有一種實現server集羣的負載均衡方案——DNS域名解析。
    DNS(Domain Name System)是因特網的一項服務,它做爲域名和IP地址相互映射的一個分佈式數據庫,能夠令人更方便的訪問互聯網。人們在經過瀏覽器訪問站點時僅僅需要記住站點的域名就能夠,而不需要記住那些不太easy理解的IP地址。在DNS系統中有一個比較重要的的資源類型叫作主機記錄也稱爲A記錄,A記錄是用於名稱解析的重要記錄,它將特定的主機名映射到相應主機的IP地址上。假設你有一個本身的域名,那麼要想別人能訪問到你的站點,你需要到特定的DNS解析服務商的server上填寫A記錄,過一段時間後,別人就能經過你的域名訪問你的站點了。DNS除了能解析域名以外還具備負載均衡的功能,如下是利用DNS工做原理處理負載均衡的工做原理圖:
                
    由上圖可以看出,在DNSserver中應該配置了多個A記錄,如:
      www.apusapp.com IN A 114.100.20.201;
      www.apusapp.com IN A 114.100.20.202;
      www.apusapp.com IN A 114.100.20.203;
所以,每次域名解析請求都會依據相應的負載均衡算法計算出一個不一樣的IP地址並返回,這樣A記錄中配置多個server就可以構成一個集羣,並可以實現負載均衡。上圖中,用戶請求www.apusapp.com,DNS依據A記錄和負載均衡算法計算獲得一個IP地址114.100.20.203,並返回給瀏覽器,瀏覽器依據該IP地址,訪問真實的物理server114.100.20.203。所有這些操做對用戶來講都是透明的,用戶可能僅僅知道www.apusapp.com這個域名。

    DNS域名解析負載均衡有例如如下長處:
1. 將負載均衡的工做交給DNS,省去了站點管理維護負載均衡server的麻煩。
2. 技術實現比較靈活、方便,簡單易行,成本低,使用於大多數TCP/IP應用。
3. 對於部署在server上的應用來講不需要進行不論什麼的代碼改動就能夠實現不一樣機器上的應用訪問。
3. server可以位於互聯網的任何位置。
4. 同一時候不少DNS還支持基於地理位置的域名解析,即會將域名解析成距離用戶地理近期的一個server地址,這樣就可以加速用戶訪問,改善性能。

    同一時候,DNS域名解析也存在例如如下缺點:
1. 眼下的DNS是多級解析的,每一級DNS均可能緩存A記錄,當某臺server下線以後,即便改動了A記錄,要使其生效也需要較長的時間,這段時間,DNS任然會將域名解析到已下線的server上,終於致使用戶訪問失敗。
2. 不能夠按server的處理能力來分配負載。DNS負載均衡採用的是簡單的輪詢算法,不能區分server之間的差別,不能反映server當前執行狀態,因此其的負載均衡效果並不是太好。
3. 可能會形成額外的網絡問題。爲了使本DNSserver和其它DNSserver及時交互,保證DNS數據及時更新,使地址能隨機分配,通常都要將DNS的刷新時間設置的較小,但過小將會使DNS流量大增形成額外的網絡問題。

    其實,大型站點老是部分使用DNS域名解析,利用域名解析做爲第一級負載均衡手段,即域名解析獲得的一組server並不是實際提供服務的物理server,而是相同提供負載均衡server的內部server,這組內部負載均衡server再進行負載均衡,請請求發到真實的server上,終於完畢請求。



參考:
[1] http://zh.wikipedia.org/zh/%E5%9F%9F%E5%90%8D%E7%B3%BB%E7%BB%9F
[2] http://blog.csdn.net/flynetcn/article/details/3733574
[3] 《大型站點技術架構——核心原理與案例分析》
相關文章
相關標籤/搜索