开发者社区> 问答> 正文

HTTPDNS SDK同步/异步接口区别及注意事项有哪些?

从安全角度我们强烈建议用户使用异步解析接口。在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)。

展开
收起
猫饭先生 2017-10-20 13:59:21 1584 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
从 SDK 到编解码:视频直播架构解析 立即下载
跨平台的云服务SDK需要什么 立即下载
一个跨平台的云服务SDK需要什么 立即下载