實現簡單的httpDNS的一種思路

互聯網公司,基本都有針對DNS域名解析的優化處理。有些公司甚至會構建本身的智能 DNS 解析系統,來解決 LocalDNS 存在的一系列問題,如域名劫持、調用精度和實時性等。html

現現在,HttpDNS 已經成爲一種比較經常使用優化方案之一。HttpDNS 是基於 http 協議具備 DNS 域名解析能力的一種服務,如今各大雲廠商都已經構建了本身的 HttpDNS 服務。如阿里雲 HttpDNS騰訊雲 HttpDNS等。python

HttpDNS 原理分析

HttpDNS 的原理很是簡單:api

  • 客戶端訪問 HttpDNS 解析接口,HttpDNS 根據客戶端 IP,從業務提早在域名配置管理系統中配置好的 IP 中根據必定的策略選擇最優 IP 返回。若沒有,則返回原域名,走運營商 LocalDNS 解析域名的方式;
  • 客戶端再向獲取到的 IP 發送業務協議請求便可。以 Http 請求爲例,經過在 header 中指定 host 字段,向該 IP 發送標準的 Http 請求便可。

HttpDNS 將域名解析過程顯式的體現了出來。繞過 LocalDNS 的域名遞歸解析過程,這樣就直接避免了 LocalDNS 的一系列問題。服務器

經過 HttpDNS 原理,能夠看出 HttpDNS 須要高度的可用,很容易成爲整個系統的瓶頸。除此以外,還須要一個高效的域名解析配置管理系統來作域名解析和選優策略的管理。markdown

HttpDNS 的一種簡單實現思路

下面咱們來探討另外一種簡單的實現方式,利用本身可控的 DNS 系統和 dig 命令來實現簡單 HttpsDNS 服務。oop

思路以下:學習

  • 一、將域名和 ip 的配置在公司自建 DNS 或第三方的 DNS 系統配置好,可實現地區或運營商的動態調用。
  • 二、開發 http api 服務,用來提供域名查詢服務接口。
  • 三、在 http api 服務接口業務邏輯中,拿到客戶端的 IP,經過以下命令查詢域名的解析 IP,返回該 IP 便可。
dig @ns服務器 www.baidu.com +subnet=客戶端ip
複製代碼

該方式利用了 DNS 系統的動態調度功能和域名 IP 的管理功能,結合 Http api 服務提供 Http 協議的 DNS 解析能力。繞過了 LocalDNS 的遞歸查詢,解決了 DNS 劫持問題和精度問題。優化

該方式,只是一個簡單的思路探索,其中還有不少細節的問題須要深究。DNS 解析是業務系統的一個強依賴服務,可用性和穩定性不容忽視。阿里雲

好了,今天的分享就到這裏,歡迎留言探討!spa

關注公衆號「碼農吳先生」, 可第一時間獲取最新文章。回覆關鍵字「go」「python」獲取我收集的學習資料,也可回覆關鍵字「小二」,加我 wx 拉你進技術交流羣,聊技術聊人生~

相關文章
相關標籤/搜索