本文介绍如何在通过 HTTP API 接入火山引擎移动解析(HTTPDNS)时,获取最低的解析延时,同时保障您的业务安全。移动解析 HTTPDNS 推荐您使用默认集成方案。您也可以尝试备选集成方案,使用 Anycast IP 地址或动态 IP 地址调用 HTTP API。
说明
推荐您使用客户端 SDK。如果您由于实际情况限制无法接入客户端 SDK,您可以使用 HTTP API。
使用 httpdns.volcengineapi.com
作为请求域名,调用 解析一个或多个域名 API。
如果通过域名依然无法获取解析结果,您需要通过 Local DNS 服务器获取解析结果。
使用 Anycast IP 地址发起直连请求调用 解析一个或多个域名 API。
说明
Anycast IP 地址接入功能处于公测阶段,暂不对外公开。您可以 提交工单 联系我们获取 Anycast IP 地址。
如果通过 Anycast IP 地址无法获取解析结果,您需要准备以下降级策略:
httpdns.volcengineapi.com
域名调用 解析一个或多个域名 API。您可以参见以下步骤集成 HTTP API。
说明
获取最佳的 HTTPDNS 服务端 IP 地址 API 处于公测阶段,目前默认关闭。如果您希望体验该功能,可以 提交工单 联系我们开启该 API。
调用 获取最佳的 HTTPDNS 服务端 IP 地址 API,获取最佳的 HTTPDNS 服务端 IP 地址。
GET https://httpdns.volcengineapi.com/svc_meta?account_id={account_id}?sign={sign}?svc_meta_ts={svc_meta_ts}?timestamp={timestamp}
HTTPDNS 服务端会返回以下结果。
{ "svc_meta": { "main_domains": [ "1.1.1.1", "2.2.2.2", "3.3.3.3" ], "backup_domains": [ "4.4.4.4" ] }, "ts": 1676777261000, "update_interval_min": 30 }
您需要通过 IP 直连请求 调用 解析一个或多个域名 API,按照以下顺序向 获取最佳的 HTTPDNS 服务端 IP 地址 API 返回的 IP 地址发送轮询请求。
main_domains
中的主 IP 地址尝试发送请求。从第一个 IP 地址开始,到最后一个 IP 地址结束。建议每个 IP 地址尝试两次。您可以根据实际需要确定尝试的次数。main_domains
中的主 IP 地址都无法返回解析结果,您需要尝试 backup_domains
中的备 IP 地址。从第一个备 IP 地址开始,到最后一个备 IP 地址结束。GET https://{ip_address}/resolve?domain={domain}?account_id={account_id}?sign={sign}?timestamp={timestamp}?type={type}?ip={ip}?appid={appid}
如果解析成功,您可以在返回值的 ips
参数中获取解析结果。
{ "cip": "1.1.1.1", "host": "www.example.com", "ips": [ "1.1.1.1", "2.2.2.2", "3.3.3.3", "4.4.4.4", "5.5.5.5", "6.6.6.6" ], "ttl": 52 }
如果所有的 IP 地址都无法正常返回解析结果,您需要准备以下降级策略:
httpdns.volcengineapi.com
域名调用 解析一个或多个域名 API。您还可以通过缓存解析记录的方式减少向 HTTPDNS 服务端发送请求的次数。解析记录会过期。因此,您需要在解析记录过期时,调用 解析一个或多个域名 API 获取新的解析记录并刷新您的缓存。
客户端 SDK 已经实现了完善的解析记录过期管理和缓存管理。您可以参见 工作原理。
如果您使用动态 IP 地址,建议您按照 获取最佳的 HTTPDNS 服务端 IP 地址 返回的 update_interval_min
参数(单位为分钟)定时获取最新的服务端 IP 地址。