天天看點

HTTP DNS原理及HTTPDNS排程實作方式

一、HTTPDNS介紹

​ 傳統DNS解析存在的問題在上一篇文章中已經解釋,那有沒有一種排程精準、成本低廉、配置友善的基于域名的流量排程系統呢?HTTPDNS就應運而生 。

​ 與傳統的 DNS 解析不同,HTTPDNS 是自己搭建基于 HTTP 協定的伺服器,利用 HTTP 協定與 DNS 伺服器互動,代替了傳統的基于 UDP 協定的 DNS 互動,繞開了營運商的 Local DNS,有效防止了域名劫持,提高域名解析效率。

​ 當用戶端需要 DNS 解析的時候,不再向 local 發送 DNS 查詢封包,而是直接通過請求直接通路 HTTPDNS 接口,此時DNS 伺服器端擷取的是真實用戶端 IP 而非 Local DNS 的 IP,能夠精确定位用戶端地理位置、營運商資訊,而服務端則根據用戶端的位置和所屬營運商,傳回就近的 IP 位址,進而有效改進排程精确性。

HTTP DNS原理及HTTPDNS排程實作方式
  • 用戶端直接通路HttpDNS接口,擷取業務在域名配置管理系統上配置的通路延遲最優的IP。(基于容災考慮,還是保留次選使用營運商LocalDNS解析域名的方式)
  • 用戶端向擷取到的IP後就向直接往此IP發送業務協定請求。以Http請求為例,通過在header中指定host字段,向HttpDNS傳回的IP發送标準的Http請求即可
二、HTTPDNS原理
HTTP DNS原理及HTTPDNS排程實作方式
  • 客戶向HTTPDNS服務叢集發起查詢請求,攜帶使用者域名和IP
  • HTTPDNS服務叢集查詢 CDN 内部排程系統(若内部排程系統查詢不到資料,目前傳回為空,後續考慮在中心叢集進行遞歸查詢),将域名最佳通路節點 IP 以 HTTP 響應的方式傳遞給用戶端
  • 用戶端,收到響應結果,向節點發起請求
  • 若用戶端向HttpDNS 叢集請求失敗,則啟用備選,走正常 DNS 解析過程,向 Local DNS 發起請求
  • LocalDNS 進行遞歸查詢
  • 最終傳回 DNS 結果
  • 用戶端拿到最優 IP 後,建立連接配接,發起正常通路操作
三、HTTPDNS優勢
  • 降低延遲

    縮短了查詢鍊路,不像 DNS 查詢那樣需要通路多台 DNS 伺服器才能得到最終的結果。

  • 域名防劫持

    使用HTTP(HTTPS)協定進行域名解析,域名解析請求直接發送至HTTPDNS伺服器,繞過營運商Local DNS,避免域名劫持問題。

  • 排程精準

    由于營運商政策的多樣性,其 Local DNS 的解析結果可能不是最近、最優的節點,HTTPDNS 能直接擷取用戶端 IP ,基于用戶端 IP 獲得最精準的解析結果,讓用戶端就近接入業務節點。

  • 實時生效

    域名解析結果變更時,HTTPDNS 服務沒有傳統DNS 服務多級緩存的影響,域名更新能夠更快地覆寫到全量用戶端。

  • 擴充性強

    HttpDNS提供可靠的域名解析服務,業務可将自有排程邏輯與HttpDNS傳回結果結合,實作更精細化的流量排程。比如指定版本的用戶端連接配接請求的IP位址,指定網絡類型的使用者連接配接指定的IP位址等。

  • 實作成本低廉

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

四、HTTPDNS 排程設計
  • 手機端可以擷取位置資訊,HTTPDNS可以根據位置資訊,選擇最佳節點傳回
  • 如果有多個節點,還會考慮錯誤率、請求時間、伺服器壓力、網絡狀況等,進行綜合選擇,而非僅僅考慮地理位置,要做到這一點,需要用戶端使用 HTTPDNS 傳回的 IP 通路業務應用。用戶端的 SDK 會收集網絡請求資料,如錯誤率、請求時間等網絡請求品質資料,并發送到統計背景,進行分析、聚合,以此檢視不同的 IP 的服務品質。
  • 在服務端,應用可以通過調用 HTTPDNS 的管理接口,配置不同服務品質的優先級、權重。HTTPDNS 會根據這些政策綜合地理位置和線路狀況算出一個排序,優先通路目前那些優質的、時延低的 IP 位址。
  • HTTPDNS 通過智能排程之後傳回的結果,也會緩存在用戶端。為了不讓緩存使得排程失真,用戶端可以根據不同的移動網絡營運商 WIFI 的 SSID 來分次元緩存。不同的營運商或者 WIFI 解析出來的結果會不同。
    HTTP DNS原理及HTTPDNS排程實作方式
    公衆号:程式設計之蟬 專注背景開發、CDN、算法、大資料,歡迎關注,閱讀最新更新
    HTTP DNS原理及HTTPDNS排程實作方式
參考

1、 計算機網絡 | 圖解 DNS & HTTPDNS 原理

2、[HTTPDNS原理](

繼續閱讀