想接入HttpDNS服务,项目中使用X5内核,看到X5内核已经对DNS做了优化了,还需要改造吗?

  • 回答 (3)
  • 关注 (0)
  • 查看 (355)

用户1229061用户1229061提问于
死者是小智回答于

接入HttpDNS过程中,需要改造移动APP的域名解析机制,新的流程参考如下:

改造过程中需要遵循以下两个设计策略:

1. Failed over策略

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

第一步先向HttpDNS发起域名查询请求

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

2. 缓存策略

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

缓存时间

缓存时间建议设置为120s至600s,不可低于60s。

缓存更新

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

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

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

缓存过期时:

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

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

3. 其他注意事项

改造APP中的需要关注的tips:

请尽量将不同功能用同样域名,资源区分通过url来实现,减少域名解析次数(用户体验好,容灾切换方便。多一个域名,即使域名已命中缓存,至少多100ms的访问延迟),新版本将很快支持批量域名解析

设置的缓存TTL值不可太低(不可低于60s),防止频繁进行HtppDNS请求。

接入HttpDNS的业务需要保留用户本地LocalDNS作为容灾通道,当HttpDNS无法正常服务时(移动网络不稳定或HttpDNS服务出现问题),可以使用LocalDNS进行解析,。

安卓程序中可能出现404错误,但浏览器中正常。可能为权限问题,或其他问题,参考 http://stackoverflow.com/questions/10835845/android-http-request-wierd-404-not-found-issuebytetohex&hextobyte,需自己实现接口,进行16进制字符串与字节的转换https问题,需在客户端hook客户端检查证书的domain域和扩展域看是否包含本次请求的host的过程,将IP直接替换成原来的域名,再执行证书验证。或者忽略证书认证,类似于curl -k参数。HttpDNS请求建议超时时间2-5s左右。在网络类型变化时,如4G切换到wifi,不同wifi间切换等,需要重新执行HttpDNS请求刷新本地缓存。

垃圾佬康哥程序猿回答于

应该是需要改造的把 楼主可以试验一下~

习惯痛苦看腾讯云笑笑就好回答于

可以尝试下tencent的内核优化的成果,不过还是感觉需要优化下的

可能回答问题的人

  • 腾讯云域名团队

    10 粉丝0 提问4 回答
  • Jobs

    0 粉丝0 提问2 回答
  • Hcchy

    腾讯云 · 产品经理 (已认证)

    5 粉丝0 提问6 回答

扫码关注云+社区

领取腾讯云代金券