帝网云是中国最专业的CDN及IDC综合服务提供商,自主研发的“EasyCDN”网络加速技术获得国家级认证,通过引入主动的内容管理层和全局负载均衡,并结合内容缓存等技术,提高响应速度和服务质量。1对1专席客服,7*24小时技术支持,数据可靠性达99%。

说明

客户端查询访问域名时,为了保证在最坏的情况下客户端域名解析依然不受影响。建议采用以下的LocalDNS和HttpDNS双重策略:
(1) 第一步先向HttpDNS接口发起HttpDNS服务器IP查询请求;
(2) 在HttpDNS服务器列表采用主备或者轮询模式选取一个IP,保证一个服务器IP无法访问请求下,能自动选取其他服务器IP进行访问,获取IP后发送http查询域名请求;
(3) HttpDNS返回查询结果,如果查询结果不是一个IP地址(结果为空、连接超时等),则通过本地localDNS进行域名解析。超时时间建议为5s。

附:若您使用的代理访问模式,不建议使用此版本HTTPDNS,请联系我们提供提供另外一套服务。

域名解析边缘IP

【功能】
   查询可服务指定用户IP的边缘IP。
【HTTP方法】
   使用GET方法。
【接口】
http(域名)接口
http://httpdnsapi.dwion.com/v3/api/httpdns/query?domain=dnion.test.com&client_ip=192.168.1.1&token=7e625303-1342-48d9-b65a-1f6583f211af
https(域名)接口
https://httpdnsapi.dwion.com/v3/api/httpdns/query?domain=dnion.test.com&client_ip=192.168.1.1&token=7e625303-1342-48d9-b65a-1f6583f211af
【请求参数说明】
参数名 必选 类型 说明
domain String 客户域名
client_ip String 客户出口IP
token String 授权验证码(联系我方获取)
【返回示例】
{
  "province": "jiangsu",
  "city": "nantong",
  "country": "china",
  "isp": "dianxin",
  "ips": [
    "192.168.0.1",
    "192.168.0.2",
    "192.168.0.3"
  ],
  "host": "test1.dnion.com",
  "ttl": 120,
  "scope": "192.168.0.4/16"
}
【返回参数说明】
参数名 类型 说明
province String 省份
city String 城市
isp String 运营商
host String 客户域名
ips String 边缘IP
ttl String Ttl值
scope String 权威对这个请求的覆盖范围,参考 edns0-subclient 请求,建议缓存地址段

域名解析所有边缘IP

【功能】
   查询可服务指定用户IP的所有边缘IP。
【HTTP方法】
   使用GET方法。
【接口】
http(域名)接口
http://httpdnsapi.dwion.com/v3/api/httpdns/direct?domain=dnion.test.com&client_ip=192.168.1.1&token=7e625303-1342-48d9-b65a-1f6583f211af
https(域名)接口
https://httpdnsapi.dwion.com/v3/api/httpdns/direct?domain=dnion.test.com&client_ip=192.168.1.1&token=7e625303-1342-48d9-b65a-1f6583f211af
【请求参数说明】
参数名 必选 类型 说明
domain String 客户域名
client_ip String 客户出口IP
token String 授权验证码(联系我方获取)
【返回示例】
{
  "province": "jiangsu",
  "city": "nantong",
  "country": "china",
  "isp": "dianxin",
  "ips": [
    "192.168.0.1",
    "192.168.0.2",
    "192.168.0.3"
  ],
  "host": "test1.dnion.com",
  "ttl": 120,
  "scope": "192.168.0.4/16"
}
【返回参数说明】
参数名 类型 说明
province String 省份
city String 城市
isp String 运营商
host String 客户域名
ips String 边缘IP
ttl String Ttl值
scope String 权威对这个请求的覆盖范围,参考 edns0-subclient 请求,建议缓存地址段

错误处理说明

用户业务使用HTTPDNS时,需要考虑出错兼容逻辑,主要包括异步请求、重试和降级。

【异步请求】
访问HTTPDNS服务时,应该使用异步请求的策略,避免解析延迟太大而对业务造成影响,特别是在网络环境异常或HTTPDNS服务IP异常不可用时,如果用同步访问,需要等待网络超时后才会返回解析失败,这个超时时间较大,必将会对业务的使用体验造成很大的影响。
 
异步请求策略:解析域名时,如果当前缓存中有TTL未过期的IP,可直接使用;如果没有,则立刻让此次请求降级走原生LocalDNS解析,同时另起线程异步发起HTTPDNS请求进行解析,更新缓存,这样后续解析域名时就能命中缓存。

【重试】
访问HTTPDNS服务解析域名时,如果请求HTTPDNS服务端失败,即HTTP请求没有返回,可以进行重试。
大部分情况下,这种访问失败是由网络原因引起的,重试可以解决。

【降级】
不管是因为什么原因,当通过HTTPDNS服务无法获得域名对应的IP时,都必须降级;使用标准的DNS解析,通过LocalDNS去解析域名。

综上,请求HTTPDNS但没有返回IP时,主要是因为“域名没有在控制台添加”或“域名本身不存在”,无论如何,如果通过HTTPDNS没有解析出IP,为保证业务请求正常,必须降级使用标准的DNS。

接入Demo示例

JAVADemo接入示例
//为了安全考虑,JDK默认限制不允许重新设置Host等一些请求头部字段,只有将以下系统属性设置为true才行
System.setProperty("sun.net.http.allowRestrictedHeaders", "true");
// 比如您要访问http://cloudcdn.dnion.com/,假设cloudcdn.dnion.com域名的解析结果是58.221.12.56。
// 一般情况下,使用IP的方式进行访问时,需要设置HTTP请求头的HOST字段为原来的域名。
String tartet = "http://58.221.12.56/";
String host = "cloudcdn.dnion.com";
URL url = new URL(tartet);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
// 设置HTTP请求头HOST字段为cloudcdn.dnion.com
conn.setRequestProperty("Host", host);