動態DNS

weixin_33890499發表於2017-01-08

今天看了一篇攜程移動端效能優化的文章(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設定,還是要等待足夠的時間(重新整理時間)才能發揮作用,在此期間,儲存了故障伺服器地址的客戶計算機將不能正常訪問伺服器。

相關文章