zoukankan      html  css  js  c++  java
  • hystrix熔断机制

    原理就是现场隔离,服务降级

    为每个微服务提供线程池,当线程池中的线程不够用时候,默认不采用排队,加速判定失败时间,用户通过线程池中线程访问服务,如果线程池已经满了,或者请求超时,就会降级处理

    服务降级发生情况:

          线程已经满了,

          请求超时(默认的请求超时时间是2s)

    用户请求故障的时候,不会阻塞,更不会无休止的等待,至少可以看到一个可以执行的结果,

    服务 的消费方引入依赖

    启动类上加上@EnableCircuitBreaker注解,配置文件中加上@SpringCloudApplication=@EnableCircuitBreaker+@SpringBootApplication+@EnableDiscoveryClient

    使用:

      1、对应的@RequestMapping注解上加上:@HystrixCommand(fallbackMethods="回滚函数名字")注意函数返回springbootapplication值值和参数列表和原来函数必须一致

      2、或者直接在controller类上面加上@DefaultProperties(defaultFallback=“方法”),因为统一的方法,所以参数列表不能再有值了,想要使用的时候对应的方法上加上@HystrixCommand

      定义超时时长@HystrixCommand(commandProperties={@HystrixProperties(key="excution.isolation.thread.timeoutInMilliseconds",value=2000)})

    或者pom文件中全局配置(这里的参数都能在源码包里找到)

    hystrix:
        command:
            default:
                execution:
                    isolation:
                        thread:
                            timeoutInMilliseconds: 3000

    default:可以是服务的名字或者方法,表示只对一个服务或者方法 配置

    熔断:

    状态机有三个状态:

    closed:关闭状态,所有请求都正常访问

    open状态:打开状态,所有请求都会被降级,Hystrix对请求情况统计,当一定时间请求的失败百分比达到阈值,熔断器就会打开,默认的比例是百分之五十,请求的次数不超过20

    half open:半开状态,熔断器打开后悔进入休眠(默认是5s)时间结束后会放行一部分的请求,若请求健康正常,熔断器就会进入关闭状态,否则熔断器就会继续打开,这样往复执行循环

     熔断器打开的时候,请求到达的时候直接回执行rollback方法

      

  • 相关阅读:
    代码质量管理平台SonarQube的安装、配置与使用
    IntelliJ IDEA优秀插件(编程通用)
    Helpers.parallel_bulk in Python not working?
    把mysql的数据导出成txt
    python从数据库获取全量数据的方法
    ylbtech-LanguageSamples-ExplicitInterface(显示接口)
    ylbtech-LanguageSamples-Events(事件)
    ylbtech-LanguageSamples-Delegates(委托)
    ylbtech-LanguageSamples-ConditionalMethods(条件方法)
    ylbtech-LanguageSamples-CommandLine(命令行参数)
  • 原文地址:https://www.cnblogs.com/feixiangdecainiao/p/10851393.html
Copyright © 2011-2022 走看看