美文网首页
Spring Cloud Hyxtrix 初探

Spring Cloud Hyxtrix 初探

作者: 夹胡碰 | 来源:发表于2021-04-23 14:35 被阅读0次

    1. Hyxtrix 作用

    • 熔断
    • 降级
    • 限流
    • 超时

    2. Hyxtrix 实现模式

    1) 线程池

    模式采用这种实现,线程池隔离采用的是自己独立的线程池替代Web容器的线程池,来自己实现服务的熔断、限流、超时。

    2) 信号量

    信号量隔离采用的Web容器的线程池,自己本身相当于一个计数器,可以用来限流。

    3. Hyxtrix 限流实现

    • 线程池,可以通过线程数+队列大小限制
    hystrix.threadpool.default.coreSize
    hystrix.threadpool.default.maxQueueSize
    hystrix.threadpool.default.queueSizeRejectionThreshold
    hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds
    
    • 信号量,可以设置最大并发请求数
    hystrix.command.default.execution.isolation.semaphore.maxConcurrentRequests
    

    4. Hyxtrix 超时实现

    • 线程池 本身支持超时,future.get(timeout)就可以了
    • 信号量 采用HystrixTime去监测任务

    Hystrix在任务启动时会启动另外一个线程HystrixTime去监测任务。如果在TimeOut时间内,任务未完成,对于线程池模式,会把执行任务的线程设置为中断;对于信号量模式,Hystrix不会对执行任务的线程做任何操作。然后再使用HystrixTime线程去执行fallback逻辑。

    5. Hyxtrix 降级

    就是实现fallback逻辑。

    6. Hyxtrix 熔断

    1.当满足一定的阈值的时候(默认10秒内超过20个请求次数)
    2.当失败率达到一定的时候(默认10秒内超过50%的请求失败)
    3.到达以上阈值,断路器将会开启
    4.当开启的时候,所有请求都不会进行转发
    5.一段时间后(默认是5秒),这个时候断路器是半开状态,会让其中一个请求进行转发。如果成功,断路器会关闭,若失败,继续开启。重复4和5。

    参考

    1. hystrix线程池隔离的原理与验证
    2. Hystrix信号量模式支持超时时间吗

    相关文章

      网友评论

          本文标题:Spring Cloud Hyxtrix 初探

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