调度服务接口

1. 前言

调度接口是 HTTPDNS 高可用架构的核心组件,负责根据客户端地理位置和网络状况,智能分配最优的解析服务节点。通过调度接口,客户端可以获取就近、健康的服务 IP 列表,实现高性能的域名解析服务。

以下将详细介绍调度接口的使用方法,包括接口形式、参数配置、安全机制和响应处理,主要内容为:

  • 接口形式:介绍调度接口的基本形式和 URL 构造方法

  • 参数说明:详细说明调度接口的参数配置,包括必选参数和可选参数

  • 请求加签:阐述请求签名机制,提升调度请求的安全性

  • API响应说明:说明 API 响应格式和错误处理机制

  • 服务 IP 更新机制:提供服务 IP 更新策略和最佳实践建议

2. 接口形式

调度接口支持通过 HTTP 或 HTTPS 进行访问,接口形式如下:

  • 服务 URLhttp(s)://{启动接入点}/{account_id}/ss? + {请求参数}

  • 请求方式:GET

说明
  • 使用HTTPS协议时,证书校验 Host 需手动指定 resolvers.httpdns.aliyuncs.com

  • {启动接入点} 参考启动接入点文档,选择合适的启动接入点

  • {account_id} 是您的账号 ID,可以在开发配置获取

  • {请求参数} 调度的额外控制,参考下面的参数说明部分

3. 参数说明

调度接口通过请求参数控制调度策略和安全机制。您可以灵活设置参数,实现基础调度、签名验证等功能。

3.1 参数列表

参数名

描述

必选

加签

取值示例

account_id

账户 ID,在 URL 路径中指定

100000

region

调度区域,指定服务集群地理位置

• cn:中国内地集群(默认)

• hk:中国香港集群

• sg:新加坡集群

• us:美国集群

• de:德国集群

• global:全局就近调度

cn

n

签名随机数,16 进制字符串,长度最小为8,最长为16

abcdef2345

t

签名有效期时间戳,当前时间 + 有效时间(秒),有效时间建议设置为 30-300 秒

1632912372

s

HMAC-MD5 签名,32 位十六进制字符串

de7be63a9f19cf11e9d455d7d4f23cb4

3.2 请求参数示例

  • 指定区域调度请求

GET https://{启动IP}/{account_id}/ss?region=cn&n=abcdef2345&t=1632912372&s=de7be63a9f19cf11e9d455d7d4f23cb4 HTTP/1.1
  • 按照客户端就近调度请求

GET https://{启动IP}/{account_id}/ss?region=global&n=abcdef2345&t=1632912372&s=de7be63a9f19cf11e9d455d7d4f23cb4 HTTP/1.1

4. 请求签名(可选)

为提高调度请求的安全性,建议启用请求签名功能。签名机制可以防止请求被篡改。

4.1 签名算法

  • 算法:HMAC-MD5

  • 密钥:加签密钥,可以在开发配置获取

  • 输入:按照 {n}-{secret}-{t} 格式构造的字符串

  • 输出:32 位小写十六进制字符串

4.2 签名步骤

  1. 生成随机数 n:16 进制字符串,长度 8-16 位

  2. 获取有效时间戳 t:当前时间 + 有效时间(秒),有效时间建议 30-300 秒

  3. 构造签名字符串:按照 {n}-{secret}-{t} 格式拼接

  4. 计算签名:使用 HMAC-MD5 算法计算签名值

4.3 签名示例

假设:

  • 随机数 n = abcdef2345

  • SecretKey = 123456

  • 时间戳 t = 1632912372

  • 区域 region = cn

签名计算过程

签名字符串 = "abcdef2345-123456-1632912372"
s = HMAC-MD5("123456", "abcdef2345-123456-1632912372")
  = "de7be63a9f19cf11e9d455d7d4f23cb4"

最终请求

GET https://{启动IP}/{account_id}/ss?region=cn&n=abcdef2345&t=1632912372&s=de7be63a9f19cf11e9d455d7d4f23cb4 HTTP/1.1

5. API 响应说明

调度接口返回的响应包含服务 IP 列表和相关元数据,下面将详细介绍成功响应的数据结构、字段含义以及各种错误情况的处理方法。

5.1 响应格式

请求成功时,HTTP 响应状态码为 200,响应结果用 JSON 格式表示:

{
  "service_ip": [
    "203.107.1.xx",
    "106.xxx.1.xx"
  ],
  "service_ipv6": [
    "64:ff9b::xxx:121",
    "64:ff9b::xxx:122"
  ]
}

5.2 响应字段说明

字段名

描述

service_ip

解析服务的 IPv4 接入点列表

service_ipv6

解析服务的 IPv6 接入点列表

5.3 错误响应

请求失败时,HTTP 响应状态码为 4xx/5xx,响应结果用 JSON 格式表示:

{
  "code": "MissingArgument"
}

常见错误码

错误码

HTTP状态码

描述

MissingArgument

400

缺少必要参数

TimeOutOfSync

400

时间偏差过大,需根据响应头 Date 校准

InvalidNonce

400

随机数格式不正确

InvalidTimestamp

403

时间戳格式不正确

AccountNotExists

403

账户不存在或被禁用

InternalError

500

服务端内部错误

6. 总结

本文详细介绍了 HTTPDNS 调度接口的使用方法和技术细节,包括接口形式、参数配置、安全机制和响应处理等关键环节。通过调度接口,开发者可以获取最优的解析服务 IP 列表。在获取解析服务 IP 列表后,即可进行具体的域名解析操作, 参考域名解析接口