常见问题

D+ 常见问答

1、什么是 D+?

      答:D+就是DNSPod研发的移动解析服务的专用名称。使用HTTP协议向D+服务器的80端口进行请求,代替传统的DNS协议向DNS服务器的53端口进行请求,绕开了运营商的Local DNS,从而避免了使用运营商Local DNS造成的劫持和跨网问题。

 

 

2、为什么要用D+?

      答:A、移动DNS的现状:运营商LocalDNS出口根据权威DNS目标IP地址进行NAT,或将解析请求转发到其他DNS服务器,导致权威DNS无法正确识别运营商的LocalDNS IP,引发域名解析错误、流量跨网。 

            B、域名被劫持的后果:网站无法访问(无法连接服务器)、弹出广告、访问到钓鱼网站等。解析结果跨域、跨省、跨运营商、国家的后果:网站访问缓慢甚至无法访问。

            C、D+是通过将移动APP及桌面应用的默认域名解析方式,替换为通过Http协议进行域名解析;以规避由LocalDNS服务异常所导致的用户网络接入异常。

 

 

3、D+的技术原理:

      答:A、客户端直接访问D+接口,获取域名的最优IP。(基于容灾考虑,建议保留使用运营商LocalDNS解析域名的方式作为备选。)

            B、客户端获取到业务IP后,就向直接往此IP发送业务协议请求。以Http请求为例,通过在header中指定host字段,向D+返回的IP发送标准的Http请求即可。

 

 

4、 D+的优势是什么?

      答:从原理上来讲,D+只是将域名解析的协议由DNS协议换成了Http协议,并不复杂。但是这一微小的转换,却带来了巨大的收益:

       A、根治域名解析异常:由于绕过了运营商的LocalDNS,用户解析域名的请求通过Http协议直接透传到了DNSPod的D+服务器IP上,用户在客户端的域名解析请求将不会遭受到域名解析异常的困扰。

       B、调度精准:D+能直接获取到用户IP,通过结合DNSPod自有专利技术生成的IP地址库以及测速系统,可以保证将用户引导的访问速度最快的IDC节点上。

       C、实现成本低廉:接入D+的业务仅需要对客户端接入层做少量改造,无需用户手机进行root或越狱;而且由于Http协议请求构造非常简单,兼容各版本的移动操作系统更不成问题;总而言之,就是以最小的改造成本,解决了业务遭受域名解析异常的问题,并满足业务精确流量调度的需求。

       D、扩展性强:D+提供可靠的域名解析服务,业务可将自有调度逻辑与D+返回结果结合,实现更精细化的流量调度。比如指定版本的客户端连接请求的IP地址,指定网络类型的用户连接指定的IP地址等。

 

 

5、使用D+能带来什么收益?

      答: 使用D+能有效地避免由于移动互联网用户所使用的LocalDNS异常导致的无法访问到您预期的最优接入点,最终导致用户访问您的业务出现异常。

 

 

6、D+的高可用性如何保证?

      答:为了保证高可用及提升用户体验,D+接入了BGP Anycast网络,与全国多个主流运营商建立了BGP互联,保证了各个运营商的用户能够快速地访问到D+服务;另外D+在多个数据中心进行了部署,任意一个节点发生故障时均能无缝切换到备份节点,保证用户解析正常。

 

 

7、D+服务如何保快速响应?

      答:D+通过了以下这几个方面来保证用户的访问体验:

            A、部署BGP Anycast网络:D+通过部署了BGP Anycast的网络架构,与全国Top 16的运营商(后续可无缝增加)建立了对等互联链路,保证了用户的请求无需绕行就能直接到达D+的服务器上。

            B、异地容灾,实时切换: D+在华北、华东、华南各地都部署了多个节点,单个节点发生故障时会立即自动切换,有效保证了服务的高可用。

 

 

8、我想接入D+服务,我该如何开始?

      答:A、对于原生移动APP及PC客户端类业务,请参考页面的“接入指南”页面。

             B、 对于Html5类应用或web应用,请与我们的客服联系。我们将根据您的实际情况制定具 体的接入方案。

 


9、D+ 是否提供 SDK 支持?

      答:目前我们官方提供了 C 版的 SDK,也可以参考第三方开源的 SDK。

             官方SDK:

             C版:https://github.com/DNSPod/dplus-c

             企业用户可以使用我们定制版的SDK,直接嵌入APP内即可直接使用(包含iOS和android版本),欢迎联系我们索取


             第三方SDK:
             新浪-安卓版(支持D+企业版加密功能):https://github.com/SinaMSRE/HTTPDNSLib
             七牛-安卓版(支持D+企业版加密功能):https://github.com/qiniu/happy-dns-android
             七牛-OC版(支持D+企业版加密功能):https://github.com/qiniu/happy-dns-objc


 

10、接入过程是怎么样的?

      答:A、Failed over策略

             虽然D+已经接入BGP Anycast,并实现了多地跨机房容灾。但为了保证在最坏的情况下客户端域名解析依然不受影响。建议采用以下的fail over策略:

             (1) 第一步先向D+发起域名查询请求

             (2) 如果D+查询返回的结果不是一个IP地址(结果为空、结果非IP、连接超时等),则通过本地LocalDNS进行域名解析。超时时间建议为5s。

 

           B、缓存策略

             移动互联网用户的网络环境比较复杂,为了尽可能地减少由于域名解析导致的延迟,建议在本地进行缓存。

             缓存规则如下:

             (1) 缓存时间:缓存时间建议采用查询得到域名TTL。在客户端向D+发起域名解析请求时,在请求的参数上带上ttl=1参数,如:http://119.29.29.29/d?dn=www.dnspod.cn&ttl=1则D+在返回结果时会带上TTL(这个TTL是递归服务器缓存的TTL)

             (2) 缓存更新:

                  缓存更新应在以下两种情形下进行:

                  i. 用户网络状态发生变化时:

                      移动互联网的用户的网络状态由3G切Wi-Fi,Wi-Fi切3G的情况下,其接入点的网络归属可能发生变化。所以用户的网络状态发生变化时,需要重新向D+发起域名解析请求,以获得用户当前网络归属下的最优指向。

                  ii. 缓存过期时:

                      当域名解析的结果缓存时间到期时,客户端应该向D+重新发起域名解析请求以获取最新的域名对应的IP。为了减少用户在缓存过期后重新进行域名解析时的等待时间,建议在75%TTL时就开始进行域名解析。如本地缓存的TTL为600s,那么在第600*0.75=450s时刻,客户端就应该进行域名解析。

      除了以上几点建议外,减少域名解析的次数也能有效的减少网络交互,提升用户访问体验。建议在业务允许的情况下,尽量减少域名的数量。如需区分不同的资源,建议通过url来进行区分。



11、对于客户端的改动,是否就是将请求URL中的域名替换成D+返回的IP地址就可以了?

      答:这个要取决于客户端的业务是否与host相关;

      (1)如果客户端的业务是与host无关的,比如是私有的协议或者是没有绑定host的http服务,那么就可以直接将D+返回的IP来替换URL中的域名;

      (2)如果客户端的业务是与host绑定的,比如是绑定了host的http服务或者是cdn的服务,那么在用D+返回的IP替换掉URL中的域名以后,还需要指定下Http头的Host字段。以curl为例,假设你要访问www.abc.com,通过D+解析出来的IP为192.168.0.111,那么通过这个方式来调用即可: curl -H "Host:www.abc.com" http://192.168.0.111/aaa.txt  





这条帮助是否解决了您的问题?

更多方案


销售离线留言

与售后在线聊天

提交工单