一、背景信息
在部分运营商线路尝试访问移动解析 HTTPDNS 服务主 IP 地址119.29.29.98失败时,可参考以下应对方案。
二、SDK 接入的影响以及应对方案
新版本 SDK 接入:
新版 iOS SDK v1.11.0,Android SDK v4.10.0将不受影响。该版本具备实时下发服务 IP 的能力,当出现服务 IP 不可用的情况,能够对服务 IP 进行替换,避免影响解析服务。
老版本 SDK 接入:
1. 解析成功率:当前 SDK 内部使用了 LocalDNS 和备份 IP 进行兜底,解析成功率不受影响。
2. 解析时延:SDK 会周期性尝试探测服务可用性,导致每十分钟解析时延会间歇性增加一次,如果您需要对解析时延进行优化,可采取调整 HTTPDNS SDK 的解析超时时间方案,可参考 HTTPDNS SDK解析时延优化方案。
3. 建议尽快升级至最新版 SDK:iOS SDK v1.11.0及以上(iOS SDK 发布动态),Android SDK v4.10.0及以上(Android SDK 发布动态)。
三、API 接入的影响以及应对方案
当服务 IP 不可用时,如您没有做好容灾,可能导致服务不可用。建议您尽快优化获取服务 IP 的方式,不再使用固定服务IP,通过“启动 IP 接口” 获取服务 IP,拿到服务 IP 后再请求 HTTPDNS 服务,具体步骤如下:
术语介绍
服务 IP:用于提供 HTTPDNS 解析服务的 IP,例如119.29.29.98。
启动 IP:用于调用 API,动态获取服务 IP 列表。
接入流程


1. 通过启动 IP,调用接口获取服务 IP 列表(接口使用方式后面有说明)。
2. 从 IP 列表中轮询/随机选择服务 IP ,发起解析请求。
3. 如果 IP 列表中,全部服务 IP 均调用失败,重新获取服务 IP 列表。
4. 定时调用启动 IP 更新服务 IP 列表(建议每12小时),保持服务 IP 列表的有效性,或者在特殊场景下进行调用,例如:
客户端冷启动时进行更新
切换网络环境时
获取 IP 列表接口说明
接口描述
接口请求地址:
http(s)://{启动IP}/conf?+ {请求参数}
。请求方式:POST 或 GET
1. HTTP 请求参数
参数名 | 参数含义 | 是否必选 | 取值 | 加密 | 说明 |
id | 用户标识(即授权 ID) | 是 | 1 - 100000 | 否 | 如果使用 AES、DES 加密方式,必须传入授权 ID,不需要进行加密。 |
alg | 选择使用何种算法 | 否 | [aes/des] | 否 | 默认使用 DES 算法,不同算法具有不同密钥。 |
HTTP 请求/返回示例
输入示例:
curl "http://{启动IP}/conf?id=xxxx"
解密后返回格式:
log:0|domain:0|ip:119.29.29.98;119.28.28.98|ttl:60
说明:
参数“ip”后面的结果为服务 IP,不同服务 IP 采用分号分隔,其余参数可以忽略。
2. HTTPS 请求参数
参数名 | 参数含义 | 是否必选 | 取值 | 加密 | 说明 |
token | 使用 HTTPS 方式的标识 | 是 | 整型数据 | 否 |
HTTPS 请求/返回 示例:
输入示例:
curl -S -s -k "https://{启动IP}/conf?token=xxxx"
返回格式:
log:0|domain:0|ip:119.29.29.98;119.28.28.98|ttl:60
说明:
参数“ip”后面的结果为服务 IP,不同服务 IP 采用分号分隔,其余参数可以忽略。
四、常见问题
1. 本次建议哪些用户需要升级?
SDK 接入的用户:当前 SDK 不是最新版的需要升级。最新版 SDK:iOS SDK v1.11.0及以上(iOS SDK 发布动态),Android SDK v4.10.0及以上(Android SDK 发布动态)。
API 接入的用户:未使用启动 IP 获取 HTTPDNS 服务 IP,需要升级 API 的调用方式。
2. 启动 IP 是否也有不可用的情况?
会有,但是当前启动 IP 区分提供给不同的客户,同时启动 IP 不用于实际解析业务,仅用于拉取服务IP,不可用的概率大大降低。
3. 本次是否强制升级,是否有升级截止时间?不升级会有什么后果?
本次升级是对用户的建议,不强制升级,没有时间限制。根据本文档第二、三点,如果用户有正常业务在使用 HTTPDNS SDK,解析时延可能会有影响;使用 API 调用,如果不升级,需要自己做好 localDNS 的兜底策略。
4. 启动 IP 建议如何使用,每次解析前还需要调用启动 IP 吗?是否会影响解析时延?
不必每次解析前都通过启动 IP 拉取一次解析的服务IP。可以采用定时调用的方式,启动 IP 更新服务 IP 列表(建议每12小时),保持服务 IP 列表的有效性,或者在特殊场景下进行调用,例如:客户端冷启动时进行更新、切换网络环境时。
5. 历史版本的 SDK 是否会停用?
不会停用,本次只是对客户的建议。为提高容灾性,建议尽快升级至最新版 SDK:iOS SDK v1.11.0及以上(iOS SDK 发布动态),Android SDK v4.10.0及以上(Android SDK 发布动态)。