• 超时和重试机制


    超时:如果不设置超时时间,慢请求累积导致连锁反应,造成应用雪崩。超时主要处理的是网络连接和读写超时

    重试:重试次数不能太多,否则会把请求数放大数倍,应该和熔断、快速失败机制配合

    6.2 代理层超时与重试

      6.2.1 Nginx

      提供了 客户端超时设置、DNS解析超时设置、代理超时设置、Lua相关超时设置

    6.3 Web容器超时

      比如Tomcat 8.5

      1. 建立连接和接收请求之间的等待超时时间,默认60秒

      2. 从客户端读取请求数据的超时时间,默认60秒

      3. Servlet3异步请求超时时间,默认30秒

      4. 文件上传超时时间

      5. http长连接超时时间

    6.4 中间件客户端超时与重试

    6.5 数据库客户端超时

      数据库连接池超时设置

    6.6 NoSQL客户端超时

      比如redis获取连接池连接的超时时间和读超时时间

    6.7 业务超时

      1. 任务型:订单超时未支付,通过Worker定期扫描数据库更改状态。

      2. 服务调用型:远程调用超时,设置调用的等待时间

    6.8 前端Ajax超时

      在请求时带上timeout参数设置超时时间

    6.9 总结

      通过配置超时时间,防止因为依赖系统超时而拖垮自己的服务。

      当出现多级依赖关系,如A调用B,B调用C,那么超时时间一般应该是A>B>C,否则可能会一直重试。

      超时之后的处理策略:

        重试:等待并重试,重试其他分组/机房服务

        托底:返回历史数据/缓存数据

        等待页/错误页

      对于写服务,如果对方不支持幂等,则不应该重试。

      对于重试时间的设置,太短会造成大量失败的重复请求,太长会影响用户体验。

        

    人生就像蒲公英,看似自由,其实身不由己。
  • 相关阅读:
    订餐系统之微信点餐
    Alfred工具
    使用密码记录工具keepass来保存密码
    一步一步实战扩展 ASP.NET Route,实现小写 URL、个性化 URL
    提高性能,抛弃反射
    -串行化与反串行化
    JavaScript 命名空间
    .net SoapHeader验证
    [置顶] Android Sensor系统剖析(4.0)(下)
    VirtualBox虚拟机下Windows登录密码破解方法(阿里云推荐码:1WFZ0V,立享9折!)
  • 原文地址:https://www.cnblogs.com/walker993/p/14698093.html
Copyright © 2020-2023  润新知