動態DNS

今天看了一篇攜程移動端性能優化的文章(https://mp.weixin.qq.com/s?__biz=MzA4MzEwOTkyMQ==&mid=2667377051&idx=1&sn=3030c1a7d234c202342e5b2eea424320&chksm=84f320d5b384a9c31b15462fd2bfc1dfec33540dfeaf7835548385d63377a1874a1effac8520&mpshare=1&scene=1&srcid=0108yHIIjLxa0Sijimy6D1CU&key=dc8f4bb13741a2a42386901e3689d96013b5b7229f38643e876f9fecb09d76fd02e165bca5fa46aec1936c99a34b50cf4d1dd3d758147ef30035b8fcf83df377b787c665f0fe4b932e488ed5368d5029&ascene=0&uin=MTI1OTQxMjE3NA%3D%3D&devicetype=iMac+MacBookPro11%2C5+OSX+OSX+10.12.2+build(16C67)&),發現如下一句話:

由于攜程 App 大部分網絡服務主要基于 TCP 連接,為了將 DNS 時間降至最低,我們采取了動態 IP 優化策略算法,即內置了 Server IP 列表,該列表可以在 App 啟動服務中下發更新。App 啟動后的首次網絡服務會從 Server IP 列表中取一個 IP 地址進行 TCP 連接,同時 DNS 解析會并行進行,DNS 成功后,會返回最適合用戶網絡的 Server IP,那么這個 Server IP 會被加入到 Server IP 列表中被優先使用。

此外,Server IP 列表是有權重機制的,DNS 解析返回的 IP 很明顯具有最高的權重,每次從 Server IP 列表中取 IP 會取權重最高的 IP。列表中 IP 權重也是動態更新的,根據連接或服務的成功失敗來動態調整,這樣即使 DNS 解析失敗,用戶在使用一段時間后也會選取到適合的 Server IP。


后來領導解釋說這個就是動態DNS的實現機制,后來搜索一下才明白這里面的原來。

動態DNS負載均衡

今天在看云風的鐵路訂票系統的簡單設計 時,看到他提到通過動態DNS實現負載均衡;感覺自己對負載均衡這塊一直是模模糊糊,有必要補補鈣。

動態DNS(英語:Dynamic DNS,簡稱D-DNS)是一種把互聯網域名指往可變IP地址的系統。簡單的說,動態域名可以在你的電腦每次上網得到新的IP之后,自動設置了新域名的指向,使網上其他任何人訪問該域名時,始終能定向到你機器的最新的正確IP上去,從而使得人們能使用一個能記憶的,對用戶來說是永遠不變的域名來訪問你那臺IP每天都在變化的機器。從而也就能實現了將個人電腦變成可以供任何人訪問的“服務器”了。

當然,我所關心的是動態DNS技術在負載均衡方面的應用,那么讓我們看看其實現原理:

DNS負載均衡技術的實現原理是在DNS服務器中為同一個主機名配置多個IP地址,在應答DNS查詢時,DNS服務器對每個查詢將以DNS文件中主機記錄的IP地址按順序返回不同的解析結果,將客戶端的訪問引導到不同的機器上去,使得不同的客戶端訪問不同的服務器,從而達到負載均衡的目的。

主要優點

這種技術的主要缺點如下:

第一,技術實現比較靈活、方便,簡單易行,成本低,適用于大多數TCP/IP應用。不需要網絡專家來對之進行設定,或在出現問題時對之進行維護。

第二,對于Web應用來說,不需要對代碼作任何的修改。事實上,Web應用本身并不會意識到負載均衡配置,即使在它面前。

第三,Web服務器可以位于互聯網的任意位置上。

主要缺點

DNS負載均衡技術在具有以上優點的時候,其缺點也非常明顯,主要表現在:

第一,不能夠按照Web服務器的處理能力分配負載。DNS負載均衡采用的是簡單的輪循負載算法,不能區分服務器之間的差異,不能反映服務器的當前運行狀態。所以DNS服務器將Http請求平均地分配到后臺的Web服務器上,而不考慮每個Web服務器當前的負載情況。如果后臺的Web服務器的配置和處理能力不同,最慢的 Web服務器將成為系統的瓶頸,處理能力強的服務器不能充分發揮作用。不能做到為性能較好的服務器多分配請求,甚至會出現客戶請求集中在某一臺服務器上的情況。

第二,不支持高可靠性,DNS負載均衡技術沒有考慮容錯。如果后臺的某臺Web服務器出現故障,DNS服務器仍然會把DNS 請求分配到這臺故障服務器上,導致不能響應客戶端。

第三,可能會造成額外的網絡問題。為了使本DNS服務器和其他DNS服務器及時交互,保證DNS數據及時更新,使地址能隨機分配,一般都要將DNS的刷新時間設置的較小,但太小將會使DNS流量大增造成額外的網絡問題。

第四,一旦某個服務器出現故障,即使及時修改了DNS設置,還是要等待足夠的時間(刷新時間)才能發揮作用,在此期間,保存了故障服務器地址的客戶計算機將不能正常訪問服務器。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,948評論 18 139
  • 【摘要】 面對大量用戶訪問、高并發請求,海量數據,可以使用高性能的服務器、大型數據庫,存儲設備,高性能Web服務器...
    靜修佛緣閱讀 4,600評論 0 24
  • 最近,終于要把《WEB請求處理系列》提上日程了,一直答應小伙伴們給分享一套完整的WEB請求處理流程:從瀏覽器、Ng...
    七寸知架構閱讀 31,753評論 27 253
  • 一、什么是負載均衡 首先我們先介紹一下什么是負載均衡:負載平衡(Load balancing)是一種計算機網絡技術...
    小流江海閱讀 1,020評論 0 2
  • 上一篇《WEB請求處理一:瀏覽器請求發起處理》,我們講述了瀏覽器端請求發起過程,通過DNS域名解析服務器IP,并建...
    七寸知架構閱讀 81,233評論 21 356