zoukankan      html  css  js  c++  java
  • SpringCloud Hystrix熔断之线程池

    服务熔断

    雪崩效应:是一种因服务提供者的不可用导致服务调用者的不可用,并导致服务雪崩的过程。
    服务熔断:当服务提供者无法调用时,会通过断路器向调用方直接返回一个错误响应,而不是长时间的等待,避免服务雪崩。

    实际情景

    项目中使用的是服务消费者Feign、熔断器Hystrix。
    前端同时发起20次请求,后台的接口被调用了20次。每一次调用接口,都会在内部通过Feign进行服务消费,调用其他的服务提供者。
    同时还使用了Feign自带的Hystrix,进行服务熔断。
    经过测试,发现每次调用超过10次后,有些请求就被Hystrix瞬间熔断,并不是超时而触发的熔断。

    服务隔离

    Hystrix使用舱壁模式实现服务的隔离,使得服务之间不会产生影响,就算某个服务出现延迟过高的情况,也不会拖累其他服务。
    Hystrix的服务隔离有线程池隔离和信号量隔离。
    如果采用线程池隔离,Hystrix为每个依赖提供一个小的线程池(或信号)(默认10个线程),如果线程池已满调用将被立即拒绝。

    解决方法

    扩大Hystrix线程池的大小。可以通过设置依赖线程池默认大小,提高并发处理能力。

    hystrix:
      threadpool:
        default: 
          coreSize: 100        #线程池默认的大小
      command: 
        default: 
          execution: 
            timeout:
              enabled: true   #启用超时机制
            isolation: 
              thread: 
               timeoutInMilliseconds: 20000     #超时时间
    
    feign: 
      hystrix:
        enabled: true    #开启feign自带的hystrix
    

    参考资料:
    https://www.jianshu.com/p/819e5e574954
    https://github.com/Netflix/Hystrix/wiki/How-it-Works#Threads
    《SpringCloud微服务实战》

  • 相关阅读:
    D3D中的Alpha颜色混合(1)
    最小的MFC程序
    命名空间规则【内部】
    能登陆QQ,打不开网页
    .net重要的开源组件[更新中]
    validateRequest="false"属性及xss攻击
    RSS介绍
    Virtual、Override和New关键字的使用
    SQL语句精妙集合
    绝好的软件集合
  • 原文地址:https://www.cnblogs.com/expiator/p/10733208.html
Copyright © 2011-2022 走看看