文档

DoH JSON API 接入最佳实践

更新时间:

本文介绍用户在客户端使用DoH JSON API的接入方案

DoH JSON API接入最佳实践流程

接入阿里公共DNS DoH JSON API过程中,客户端域名解析机制的流程参考如下:

image

最佳实践的设计策略

域名解析机制需要遵循以下设计策略:

兜底策略

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

1.先向阿里公共DNS发起域名查询请求。

2.如果阿里公共DNS查询返回结果的statusCode为非200、连接超时等,则通过本地 LocalDNS 进行域名解析。超时时间建议为3s。

缓存策略

为了尽可能地减少域名解析次数,建议在本地进行缓存。缓存规则如下:

1.缓存时间:缓存时间建议设置为60s至600s。

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

  • 用户网络状态发生变化时:客户端的网络状态由WWAN切换 Wi-Fi,Wi-Fi 切换WWAN的情况下,其接入点的网络归属可能发生变化,需要重新向阿里公共DNS发起域名解析请求,以获得用户当前网络归属下的最优指向。

  • 缓存过期时:当域名解析的结果缓存时间到期时,客户端应该向阿里公共DNS重新发起域名解析请求以获取最新的域名对应的 IP。为了使用户在缓存过期后尽早获取到最新的IP地址,建议使用定时器每间隔1min更新一下过期缓存。

IP优选策略

在向阿里公共DNS发起域名查询请求并获取到解析结果后可先将结果存入缓存,同时异步对解析结果进行测速(socket方式或ping方式)、排序,最后更新缓存中的数据,通过该策略实现IP优选。

注意事项

  • 设置的缓存 TTL 值不可太低(不可低于60s),防止频繁进行阿里公共DNS请求造成费用增加。

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

  • 请尽量将不同功能用同样域名,资源区分通过 url 来实现,减少域名解析次数从而降低费用。

  • 阿里公共DNS请求建议超时时间2s - 5s左右。

  • 本页导读 (0)