看到了以前dnspod的同事发布了一个httpdns的服务,突然记起了来,奶罩最一开始的设想,就是要在手机app里面集成一个httpdns的服务,在当时想法还是很时尚的。  随着腾讯大量的使用httpdns后,紧接着dnspod也发布了类似的产品了。   


原文地址是 xiaorui.cc ,能不能别被爬了。。。。

xiaorui.cc

xiaorui.cc

xiaorui.cc


部分内容转自:     http://www.arey.cn/article/show/19

一些大点的互联网公司如果想提高旗下产品的用户体验,也就是全局调度,但受限于运营商和第三方递归服务提供商,只能通过自身的递归监测系统和商务能力去改变。

对于互联网公司不满意运营商和第三方递归服务提供商,其原因主要有两点

1、 大部分递归服务器不支持智能解析(谷歌扩展协议),其实现在支持edns的递归,没几家…. 国外的都支持,国内的貌似就阿里和114支持dns扩展协议

2、运营商ISP其DNS服务的处理能力比较差,网络时延和服务质量都不能令互联网公司满意

3、一些小区宽带往往没有自建递归节点,而是将DNS请求转发到第三方服务提供商;

4、即使有第三方服务提供商能够提供智能解析、满足时延要求,例如8.8.8.8,但是运营商可能会封杀该服务器或者进行DNS劫持。


那么咱们再来说说 httpdns的整个流程:

HttpDNS的原理非常简单,主要有两步:
A、客户端直接访问HttpDNS的接口,获取你在配置系统中,现在最优质的IP,返回给用户。
B、客户端向获取到的IP后就向直接往此IP发送业务协议请求。以Http请求为例,通过在header中指定host字段,向HttpDNS返回的IP发送标准的Http请求即可。



咱们的标题是如何搞一个dns服务,是基于http协议的。    也看了dnspod的api接口,貌似没什么太多的附带参数, 可以加一个ttl的值。

周六周天用tornado和redis做一个简单的httpdns,对于请求应该是支持get和post的,get应对与普通的访问,post是应对那种批量的查询,支持json body的请求体。 

对于返回什么ip,肯定是经过你自己的调度运算,或者是类dns view。除此之外还可以在header里面加一个max-age当做超时的ttl,通知用户是否命中http dns cache等等   


关于上面所说的python实现httpdns的代码还没写  , 那么我这边就httpdns提前先总结下:

      httpdns其实不算是dns,单纯的看字眼,好家伙…. 是http协议的dns,大家看了上面的介绍,以及朋友圈里面关于腾讯httpdns的使用,会发现httpdns是个调度系统…  某种意义上来说,只能dns也是调度系统。  记得在乐视的时候,用户的访问节点就是靠一部分的httpdns来控制的,通过这个接口不仅能传递edns-client-subnet的数据,而且可以各个区域的cdn热度及全局负载情况进行下一步的调度。 




对Python及运维开发感兴趣的朋友可以加QQ群 : 478476595 !!!
{ 2000人qq大群内有各厂大牛,常组织线上分享及沙龙,对高性能及分布式场景感兴趣同学欢迎加入该QQ群 }

另外如果大家觉得文章对你有些作用!   帮忙点击广告. 一来能刺激我写博客的欲望,二来好维护云主机的费用.
如果想赏钱,可以用微信扫描下面的二维码. 另外再次标注博客原地址  xiaorui.cc  ……   感谢!
暂无相关产品

2则回应给“设想用python实现类httpdns的dns服务”

  1. devopser说道:

    然后呢,就没有然后了?

发表评论