在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:haohaozaici/HttpDNS开源软件地址:https://github.com/haohaozaici/HttpDNS开源编程语言:Java 100.0%开源软件介绍:http dns
使用HTTP请求和HTTPDNS服务,(在高可用情况下)替代传统DNS协议,解析DNS。 大部分内容节选至以下参考文章: Todo List
基础概念DNS: ISP: localDNS: IDC: ICP: GSLB: 全局负载均衡 DHCP: NAT: 根域、顶级域、二级域: 权威DNS: 递归DNS: 公共DNS: HTTPS 传统的域名解析面临的问题问题根源:ISP的LocalDNS解析域名异常 域名缓存LocalDNS缓存了腾讯的域名的解析结果,不向腾讯权威DNS发起递归。 为何LocalDNS要把域名解析结果进行缓存呢?原因有以下几个:
这种类型的行为就是我们常说的域名缓存,域名缓存会导致用户产生以下的访问异常:
解析转发除了域名缓存以外,运营商的LocalDNS还存在解析转发的现象。解析转发是指运营商自身不进行域名递归解析,而是把域名解析请求转发到其它运营商的递归DNS上的行为。正常的LocalDNS递归解析过程是这样的: 而部分小运营商为了节省资源,就直接将解析请求转发到了其它运营的递归LocalDNS上去了 这样的直接后果就是腾讯权威DNS收到的域名解析请求的来源IP就成了其它运营商的IP,最终导致用户流量被导向了错误的IDC,用户访问变慢。 LocalDNS递归出口NATLocalDNS递归出口NAT指的是运营商的LocalDNS按照标准的DNS协议进行递归,但是因为在网络上存在多出口且配置了目标路由NAT,结果导致LocalDNS最终进行递归解析的时候的出口IP就有概率不为本网的IP地址 这样的直接后果就是GSLB DNS收到的域名解析请求的来源IP还是成了其它运营商的IP,最终导致用户流量被导向了错误的IDC,用户访问变慢。 解析生效滞后部分业务场景下开发者对域名解析结果变更的生效时间非常敏感(这部分变更操作是开发者在权威DNS上完成的),比如当业务服务器受到攻击时,我们需要最快速地将业务IP切换到另一组集群上,这样的诉求在传统域名解析体系下是无法完成的。 Local DNS的部署是由各个地区的各个运营商独立部署的,因此各个Local DNS的服务质量参差不齐。在对域名解析缓存的处理上,各个独立节点的实现策略也有区别,比如部分节点为了节省开支忽略了域名解析结果的TTL时间限制,导致用户在权威DNS变更的解析结果全网生效的周期非常漫长(我们已知的最长生效时间甚至高达48小时)。这类延迟生效可能直接导致用户业务访问的异常。 HTTPDNS基本原理HttpDNS是为移动客户端量身定做的基于Http协议和域名解析的流量调度解决方案,专治LocalDNS解析异常以及流量调度不准。详细介绍如下: HttpDNS的原理非常简单,主要有两步:
优点
缺点延迟:HTTP DNS基于TCP协议请求响应时间更长,但可以使用缓存解析结果、预加载、懒加载等方式,异步处理httpDNS的请求时间。 实践方案移动APP的域名解析机制,新的流程参考如下: 需要注意的是,发起网络请求时,在本地无缓存,或缓存已过期的情况下,直接使用localDNS解析,并同时异步更新本地DNS缓存。 Failed over策略「降级」虽然HttpDNS已经接入BGP Anycast,并实现了多地跨机房容灾。但为了保证在最坏的情况下客户端域名解析依然不受影响。建议采用以下的fail over策略:
不管是因为什么原因,当通过HTTPDNS服务无法获得域名对应的IP时,都必须降级:使用标准的DNS解析,通过Local DNS去解析域名。 缓存策略移动互联网用户的网络环境比较复杂,为了尽可能地减少由于域名解析导致的延迟,建议在本地进行缓存。缓存规则如下:
除了以上几点建议外,减少域名解析的次数也能有效的减少网络交互,提升用户访问体验。建议在业务允许的情况下,尽量减少域名的数量。如需区分不同的资源,建议通过url来进行区分。 异步请求、懒加载异步请求策略:解析域名时,如果当前缓存中有TTL未过期的IP,可直接使用;如果没有,则立刻让此次请求降级走原生LocalDNS解析,同时另起线程异步地发起HTTPDNS请求进行解析,更新缓存,这样后续解析域名时就能命中缓存。
重试访问HTTPDNS服务解析域名时,如果请求HTTPDNS服务端失败,即HTTP请求没有返回,可以进行重试。 大部分情况下,这种访问失败是由于网络原因引起的,重试可以解决。 预解析在初始化阶段针对业务的热点域名在后台发起异步的HTTPDNS解析请求。这部分预解析结果在后续的业务请求中可以直接使用,进而消除首次业务请求的DNS解析开销,提升APP首页的加载速度。 HTTPS情况webview代理情况当存在中间HTTP代理时,客户端发起的请求中请求行会使用绝对路径的URL,在开启HTTPDNS并采用IP URL进行访问时,中间代理将识别您的IP信息并将其作为真实访问的HOST信息传递给目标服务器,这时目标服务器将无法处理这类无真实HOST信息的HTTP请求。 绝大多数场景下,在代理模式下关闭HTTPDNS功能。 注意事项
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论