Java 业务开发常见错误 100 例(二)

发布时间 2023-11-17 10:05:41作者: 上海小墨子

HTTP调用:超时、重试、并发

需要考虑的三点:

  1. 首先,框架设置的默认超时是否合理;
  2. 其次,考虑到网络的不稳定,超时后的请求重试是一个不错的选择,但需要考虑服务端接口的幂等性设计是否允许我们重试;
  3. 最后,需要考虑框架是否会像浏览器那样限制并发连接数,以免在服务并发很大的情况下,HTTP 调用的并发数限制成为瓶颈。

超时:

  • 连接超时参数 ConnectTimeout,让用户配置建连阶段的最长等待时间;

             通常在毫秒级最多到秒级,不可能需要十几秒甚至几十秒,不合适配置的特别长;

  • 读取超时参数 ReadTimeout,用来控制从 Socket 上读取数据的最长等待时间。

    第一个误区:认为出现了读取超时,服务端的执行就会中断。

            第二个误区:认为读取超时只是 Socket 网络层面的概念,是数据传输的最长耗时,故将其配置得非常短,比如 100 毫秒。

            第三个误区:认为超时时间越长任务接口成功率就越高,将读取超时参数配置得太长。

Feign 和 Ribbon 配合使用,你知道怎么配置超时吗:

  略,后续补上