美文网首页
10 HTTP 调用: 超时,重试,并发

10 HTTP 调用: 超时,重试,并发

作者: 滔滔逐浪 | 来源:发表于2023-10-08 08:56 被阅读0次

    与执行本地的方法不同,进行HTTP 调用本质上是通过 HTTP 协议进行一次网络请求。
    网络请求必然有超时的可能性,因此我们必须考虑到这三点。
    首先 ,框架设置的默认超时是否合理;
    其次: 考虑到网络的不稳定,超时后的请求重试是一个不错的选择,但是考虑到服务端接口的幂等性设计是否允许我们重试。
    最后 需要考虑框架是否会像浏览器那样限制并发连接数,以免在服务并发很大的情况下,http的调用的并发数限制称为瓶颈。 springCloud 是java 微服务架构的代表性框架

    如果使用Spring Cloud 进行微服务开发,就会使用feign进行声明式的服务调用

    如果不使用spring Cloud,而直接使用Springboot 进行微服务开发的话,可能会直接使用java 中最常用的HTTP 客户端 Apache HttpClient 进行服务调用

    连接超时代表建立TCP连接的时间,读取超时代表了等待远程返回数据的时间,也包括远端程序处理的时间。

    在解决连接超时问题时,我们要搞清楚连的是谁

    在遇到读取超时问题的时候,我们要综合考虑下游服务的服务标准和自己的服务标准,设置合适的读取超时的时间

    此外 ,在使用诸如 Spring Cloud Feign 等框架时务必确认,连接和读取超时参数是否正确生效。

    对于重试,因为 HTTP 协议认为Get 请求是数据查询操作,是无状态的,又考虑到网络出现丢包是比较常见的事情,有些代理服务器会自动重试Get/Head 请求。

    如果接口设计不支持幂等,需要关闭自动重试,但, 更好的解决方案是,遵从HTTP 协议的建议来使用合适的http 方法。

    来源于 Java 核心技术面试精讲

    相关文章

      网友评论

          本文标题:10 HTTP 调用: 超时,重试,并发

          本文链接:https://www.haomeiwen.com/subject/jblvbdtx.html