HttpClient 的几个点


迁移自简书,格式可能未经校对。

越来越多的应用里需要依赖大量的对外请求(内部服务或第三方平台)。但是很多的 client 只有基本的请求,这在复杂的场景里根本无法应对各种问题,所以我试图整理一下之前遇到的坑,也是封装一个 httpClient 所需要支持的地方。

重试策略:

  • 立即重试

  • 延时重试

    • 动态延时,1s 2s 4s 8s …

频率限制

  • 全局 Pool

  • 针对同一服务下,排队

配置级别:

  • 全局

  • 服务级

    • 调用方

    • 服务方

  • Request

日志记什么:

  • 请求耗时

  • 请求信息

    • url = host + path

    • args = header + query + form

  • 请求结果

    • response header 一定得记

    • 如果结果是简单数据,比如 json,就全记下

    • 如果对方接口挂了,返回了 nginx 错误HTML,比如5xx,要记录

    • 如果是文本文件流,可以记录关键部分;如果是二进制,至少记下 md5 + size

  • TraceId(参考 https://www.jianshu.com/p/73346f667f3d)

Avatar
huiren
Code Artisan

问渠那得清如许,为有源头活水来

下一页
上一页
comments powered by Disqus