HttpDns

·        全局精確流量調度新思路-HttpDNS服務詳解

分類: 系統架構 移動互聯網 TCP/IP協議 1838人閱讀 評論(0) 收藏 舉報

HttpDNSDNS移動應用域名系統流量調度

目錄(?)[+]

但凡使用域名來給用戶提供服務的互聯網企業,都或多或少地無法避免在有中國特色的互聯網環境中遭遇到各種域名被緩存、用戶跨網訪問緩慢等問題。那麼對於騰訊這樣的域名數量在10萬級別的互聯網公司來講,域名解析異常的情況到底有多嚴重呢?每天騰訊的分佈式域名解析監測系統在不停地對全國所有的重點LocalDNS進行探測,騰訊域名在全國各地的日解析異常量是已經超過了80萬條。這給騰訊的業務帶來了巨大的損失。爲此騰訊建立了專業的團隊與各個運營商進行了深度溝通,但是由於各種原因,處理效率及效果均不能達到騰訊各業務部門的需求。除了和運營商進行溝通,有沒有一種技術上的方案,能從根源上解決域名解析異常及用戶訪問跨網的問題呢?

一、問題根源:

要解決問題,我們得先得了解下現在國內各ISP的LocalDNS的基本情況。國內運營商LocalDNS造成的用戶訪問異常可以歸爲下三類:

1、域名緩存:

域名緩存很好理解,就是LocalDNS緩存了騰訊的域名的解析結果,不向騰訊權威DNS發起遞歸,示意圖如下:

爲何LocalDNS要把域名解析結果進行緩存呢?原因有以下幾個:

(1)保證用戶訪問流量在本網內消化:國內的各互聯網接入運營商的帶寬資源、網間結算費用、IDC機房分佈、網內ICP資源分佈等存在較大差異。爲了保證網內用戶的訪問質量,同時減少跨網結算,運營商在網內搭建了內容緩存服務器,通過把域名強行指向內容緩存服務器的IP地址,就實現了把本地本網流量完全留在了本地的目的。

(2)推送廣告:有部分LocalDNS會把部分域名解析結果的所指向的內容緩存,並替換成第三方廣告聯盟的廣告。

這種類型的行爲就是我們常說的域名緩存,域名緩存會導致用戶產生以下的訪問異常:

A、僅對80端口的http服務做了緩存,如果域名是通過https協議或其它端口提供服務的,用戶訪問就會出現失敗。比如支付服務、遊戲通過指定端口連接connect server服務等。

B、緩存服務器的運維水平參差不齊,時有出現緩存服務器故障導致用戶訪問異常的問題。

2、解析轉發:

除了域名緩存以外,運營商的LocalDNS還存在解析轉發的現象。解析轉發是指運營商自身不進行域名遞歸解析,而是把域名解析請求轉發到其它運營商的遞歸DNS上的行爲。正常的LocalDNS遞歸解析過程是這樣的:

而部分小運營商爲了節省資源,就直接將解析請求轉發到了其它運營的遞歸LocalDNS上去了:

這樣的直接後果就是騰訊權威DNS收到的域名解析請求的來源IP就成了其它運營商的IP,最終導致用戶流量被導向了錯誤的IDC,用戶訪問變慢。

3、LocalDNS遞歸出口NAT:

LocalDNS遞歸出口NAT指的是運營商的LocalDNS按照標準的DNS協議進行遞歸,但是因爲在網絡上存在多出口且配置了目標路由NAT,結果導致LocalDNS最終進行遞歸解析的時候的出口IP就有概率不爲本網的IP地址:

這樣的直接後果就是GSLB DNS收到的域名解析請求的來源IP還是成了其它運營商的IP,最終導致用戶流量被導向了錯誤的IDC,用戶訪問變慢。

二、現有的解決方案及存在的問題:

運營商的LocalDNS解析域名異常,給對用戶訪問騰訊業務的體驗造成了非常大的損害。那麼我們是如何處理這些域名解析異常的問題的呢?

1、實時監控+商務推動:

這種方案是目前騰訊的運營團隊一直在使用的方案。這種方案就是週期比較長,畢竟通過行政手段來推動運營商來解決這個問題是比較耗時的。另外我們通過大數據分析,得出的結論是Top 3的問題用戶均爲移動互聯網用戶。對於這部分用戶,我們有什麼技術手段可以解決以上的問題呢?

2、繞過自動分配DNS,使用114dns或Google public DNS:

這個方案看上去很美好,114dns是國內最大的中立緩存DNS,而Google又是秉承不作惡理念的互聯網工程帝國巨鱷,而且騰訊的權威DNS又支持edns-client-subnet功能,能直接識別使用Google publicDNS解析騰訊域名的用戶的IP地址,不會出現流量調度失效。但是問題來了:

(1)如何在用戶側構造域名請求:對於PC端的客戶端來說,構造一個標準的DNS請求包並不算什麼難事。但在移動端要向一個指定的LocalDNS上發送標準的DNS請求包,而且要兼容各種iOS和android的版本的話,技術上是可行的,只是兼容的成本會很高。

(2)推動用戶修改配置極高:如果要推動用戶手動修改PC的DNS配置的話,在PC端和手機客戶端的WiFI下面還算勉強可行。但是要用戶修改在移動互聯網環境下的DNS配置,其難度不言而喻。

3、完全拋棄域名,自建connectcenter進行流量調度:

如果要採用這種這種方案的話,首先你就得要拿到一份準確的IP地址庫來判斷用戶的歸屬,然後再製定個協議搭個connect center來做調度,然後再對接入層做調度改造。這種方案和2種方案一樣,不是不能做,只是成本會比較高,尤其對於騰訊這種業務規模如此龐大的公司而言。

三、利用HttpDNS解決用戶域名解析異常:

既然上面的方案都存在那麼多的問題,那有沒有一種調度精準、成本低廉、配置方便的基於域名的流量調度系統呢?答案是肯定的。騰訊公司的GSLB 團隊推出了一種全新的域名解析調度系統:HttpDNS。HttpDNS是爲移動客戶端量身定做的基於Http協議和域名解析的流量調度解決方案,專治LocalDNS解析異常以及流量調度不準。詳細介紹如下:

(1)HttpDNS基本原理:

HttpDNS的原理非常簡單,主要有兩步:

A、客戶端直接訪問HttpDNS接口,獲取業務在域名配置管理系統上配置的訪問延遲最優的IP。(基於容災考慮,還是保留次選使用運營商LocalDNS解析域名的方式)

B、客戶端向獲取到的IP後就向直接往此IP發送業務協議請求。以Http請求爲例,通過在header中指定host字段,向HttpDNS返回的IP發送標準的Http請求即可。

(2)HttpDNS優勢:

從原理上來講,HttpDNS只是將域名解析的協議由DNS協議換成了Http協議,並不複雜。但是這一微小的轉換,卻帶來了無數的收益:

A、根治域名解析異常:由於繞過了運營商的LocalDNS,用戶解析域名的請求通過Http協議直接透傳到了騰訊的HttpDNS服務器IP上,用戶在客戶端的域名解析請求將不會遭受到域名解析異常的困擾。

B、調度精準:HttpDNS能直接獲取到用戶IP,通過結合騰訊自有專利技術生成的IP地址庫以及測速系統,可以保證將用戶引導的訪問最快的IDC節點上。

C、實現成本低廉:接入HttpDNS的業務僅需要對客戶端接入層做少量改造,無需用戶手機進行root或越獄;而且由於Http協議請求構造非常簡單,兼容各版本的移動操作系統更不成問題;另外HttpDNS的後端配置完全複用現有權威DNS配置,管理成本也非常低。總而言之,就是以最小的改造成本,解決了業務遭受域名解析異常的問題,並滿足業務精確流量調度的需求。

D、擴展性強:HttpDNS提供可靠的域名解析服務,業務可將自有調度邏輯與HttpDNS返回結果結合,實現更精細化的流量調度。比如指定版本的客戶端連接請求的IP地址,指定網絡類型的用戶連接指定的IP地址等。

當然各位可能會問:用戶將首選的域名解析方式切換到了HttpDNS,那麼HttpDNS的高可用又是如何保證的呢?另外不同運營商的用戶訪問到同一個HttpDNS的服務IP,用戶的訪問延遲如何保證?

爲了保證高可用及提升用戶體驗,HttpDNS通過接入了騰訊公網交換平臺的BGP Anycast網絡,與全國多個主流運營商建立了BGP互聯,保證了這些運營商的用戶能夠快速地訪問到HttpDNS服務;另外HttpDNS在多個數據中心進行了部署,任意一個節點發生故障時均能無縫切換到備份節點,保證用戶解析正常。

四、接入效果及未來展望:

當前HttpDNS已在騰訊內部接入了多個業務,覆蓋數億用戶,並已持續穩定運行超過一年時間。而接入了HttpDNS的業務在用戶訪問體驗方面都有了非常大的提升。以某個接入HttpDNS的業務爲例,該業務僅通過接入HttpDNS,在未做任何其它優化的情況下,用戶平均訪問延遲下降超過10%,訪問失敗率下降了超過五分之一,用戶訪問體驗的效果提升非常顯著。另外騰訊的HttpDNS服務除了在騰訊內部被廣泛使用以外,也受到了業務同行的肯定。國內最大的publicDNS服務商114dns在受到騰訊DNS的啓發下,也推出了HttpDNS服務。

在未來的日子裏,騰訊GSLB團隊將會在騰訊內部進一步推廣HttpDNS服務,並將在實際業務的需求下對HttpDNS服務進行升級,如提供更爲通用、安全、簡單的接入協議,進一步提升接入用戶的網絡訪問體驗等等。希望HttpDNS能爲各位在解決域名解析異常及全局流量調度失效方面提供一個簡單、可行的思路,也歡迎各位業界同行與騰訊一起,就如何進行更精準的全局流量調度方面進行更爲深入的討論。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章