1. 前言
在客户端接入概述,您已了解到HTTPDNS 通过 HTTP 协议提供域名解析服务,有效解决 DNS 劫持、提升解析精度和稳定性。我们优先推荐使用官方 SDK 接入,但在功能深度定制、特殊网络环境适配等特定场景下,您可能无法直接使用 SDK,此时需要通过 HTTP API 方式自行实现域名解析。通过 HTTP API 接入 HTTPDNS 包括以下步骤:
开通HTTPDNS服务
添加待解析域名
获取开发配置(包括Account ID、密钥等)
获取启动接入点
调用调度接口
执行域名解析
解析服务IP列表动态更新
其中,前三步属于控制台操作,如果您还没有完成对应操作,可以参考产品使用流程,后四步属于HTTP API接入的流程,本文将介绍基于 HTTP API 实现高可用 DNS 的核心概念和流程。
2. 核心概念
调度服务:智能路由服务组件,基于客户端来源 IP 地址进行地理位置和网络拓扑分析,返回最优的解析服务节点列表,实现负载均衡和就近接入。
解析服务:域名解析执行引擎,提供标准的 DNS 查询功能,将域名转换为对应的 IP 地址,支持 A 记录、AAAA 记录解析类型。
启动接入点:预配置的服务发现端点,包含 IP 地址和域名两种形式,用于建立与调度服务的初始连接,获取动态分配的解析服务节点列表。
服务 IP:调度服务分配的解析服务器地址,经过智能调度算法选择的最优节点,用于执行实际的域名解析请求。
3. 接入步骤
HTTP API 的工作流程包含四个关键步骤,形成完整的高可用 DNS 解析链路:
获取启动接入点 - 在应用内置多个启动接入点(IP 地址和兜底域名),作为访问调度服务的入口
调用调度接口 - 通过启动接入点调用调度服务接口,获取就近、健康的服务 IP 列表用于后续解析
执行域名解析 - 使用获取到的服务 IP 调用域名解析接口,完成具体的域名到 IP 地址映射
动态更新机制 - 在特定条件下(App 启动、网络切换、定期更新、解析失败)自动更新服务 IP 列表,确保服务持续可用
说明建议App冷启动时进行更新
建议切换网络环境时进行更新
建议每8小时至少更新一次
当服务IP列表经过重试发现都无法解析时,立即更新
这套流程设计的核心优势在于通过多接入点 + 动态调度实现高可用 DNS 解析:
多接入点保障:通过内置多个启动接入点保障服务可达性,避免单点故障影响整体服务
动态调度优化:通过调度接口动态获取最优服务 IP,实现就近访问和故障转移
它既能够实现 HTTPDNS 服务本身防 DNS 劫持 (IP 直连,不依赖Local DNS),也能在部分服务 IP 被封禁、遭受高强度 DDoS 攻击、面临极端自然灾害等场景下保证服务的高可用。
4. 最佳实践
基于 HTTP API 实现高性能、高可用的 HTTPDNS 客户端是一项具有相当技术挑战的工作。开发者需要处理多层次的复杂性:从启动接入点的冗余管理、调度服务的智能调用,到解析结果的本地缓存和故障转移机制,每个环节都需要精心设计和实现。为降低实现门槛和实现难度,您可以参考最佳实践建议。
5. 网络库适配
通过HTTP API 获取到 DNS 解析结果后,还需要将这些 IP 地址正确应用到应用的网络库中,实现 HTTP/HTTPS 请求的 IP 直连。为了简化开发者的集成工作,HTTPDNS 已经对主流网络库进行了深度适配:
Android 平台:OkHttp、HttpClient、HttpURLConnection 等网络库的完整适配方案
iOS 平台:NSURLSession、AFNetworking、Alamofire 等网络库的集成指导
HarmonyOS 平台:系统原生网络 API 和主流第三方网络库的适配实现
这些适配方案不仅解决了 IP 直连的技术难题,还处理了 HTTPS SNI、证书校验、Host 头设置等关键技术细节,确保在复杂网络环境下的稳定性和安全性。
如需了解具体的网络库集成实现,请参考相应平台的详细文档:
上述网络库适配方案展示的域名解析流程是采用 HTTPDNS SDK 完成的。若要应用到您的具体业务场景,请将 SDK 调用替换为基于 HTTP API 的域名解析实现。
6. 总结
本文介绍了基于 HTTP API 实现高可用 HTTPDNS 解析的核心架构和实现流程。为了进一步了解基于具体实现细节,建议参考以下相关文档:启动接入点、调度服务接口、域名解析接口和最佳实践建议。