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

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

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

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

  • Android 同步接口

String getIpByHost(String host);
String[] getIpsByHost(String host);
  • Android 异步接口

String getIpByHostAsync(String host);
String[] getIpsByHostAsync(String host);
  • iOS 同步接口 【备注:目前已下线同步接口】

- (NSString *)getIpByHost:(NSString *)host;
- (NSArray *)getIpsByHost:(NSString *)host;
- (NSString *)getIpByHostInURLFormat:(NSString *)host;
  • iOS 异步接口

- (NSString *)getIpByHostAsync:(NSString *)host;
- (NSArray *)getIpsByHostAsync:(NSString *)host;
- (NSString *)getIpByHostAsyncInURLFormat:(NSString *)host;

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

  • 同步接口,阻塞调用线程,在调用线程上发起解析网络请求,请求完成后返回解析结果。

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

【注意】

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

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

阿里云首页 相关技术圈