实现简单的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 拉你进技术交流群,聊技术聊人生~

相关文章
相关标签/搜索