全部产品
云市场
云游戏
    HttpDns : 同步/异步接口区别及注意事项

HttpDns : 同步/异步接口区别及注意事项

更新时间:2020-02-03 10:24:12

从安全角度我们强烈建议用户使用异步解析接口。在 DDOS 攻击等特殊场景下,HTTPDNS 有可能会触发流量黑洞,此时同步接口就有可能出现短暂的请求解析超时等待,而异步接口的网络请求都是后台操作的,业务层面不会感知到请求超时的动作,能够做到对异常情况的冗余。

HTTPDNS SDK 中同步/异步解析接口区分:

  • Android 同步接口
  1. String getIpByHost(String host);
  2. String[] getIpsByHost(String host);
  • Android 异步接口
  1. String getIpByHostAsync(String host);
  2. String[] getIpsByHostAsync(String host);
  • iOS 同步接口 【备注:目前已下线同步接口】
  1. - (NSString *)getIpByHost:(NSString *)host;
  2. - (NSArray *)getIpsByHost:(NSString *)host;
  3. - (NSString *)getIpByHostInURLFormat:(NSString *)host;
  • iOS 异步接口
  1. - (NSString *)getIpByHostAsync:(NSString *)host;
  2. - (NSArray *)getIpsByHostAsync:(NSString *)host;
  3. - (NSString *)getIpByHostAsyncInURLFormat:(NSString *)host;

同步/异步接口主要区别:

  • 同步接口,阻塞调用线程,在调用线程上发起解析网络请求,请求完成后返回解析结果。
  • 异步接口,不阻塞调用线程,立即返回结果:有缓存,返回解析结果;没有缓存,返回nil并触发异步解析动作,另起新的线程发起解析网络请求。

【注意】

不要在主线程调用同步解析接口,阻塞主线程可能会导致应用 Crash 等不可知后果。

  • 比如 iOS App 启动时,在主线程调用同步解析接口,网络状况较差时导致启动时间过长,触发watchdog逻辑,导致 Crash(Termination Reason: Namespace SPRINGBOARD, Code 0x8badf00d)。