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方法

      

  • 相关阅读:
    linux systemctl 命令详解
    nginx 与 php-fpm 通信配置
    yum Install PHP 7 on CentOS 7 (英文-转载)
    解决在idea中创建spring boot项目start.spring.io初始化失败的问题
    MongoDB学习5:模型设计和设计模式
    MongoDB学习4:MongoDB复制集机制和原理,搭建复制集
    `curl -L` 解决 GitHub 的 raw.githubusercontent.com 无法连接问题
    用 Hugo 快速搭建博客
    针对多系统时间不一致
    kali 下的邮件发送工具 swaks
  • 原文地址:https://www.cnblogs.com/feixiangdecainiao/p/10851393.html
Copyright © 2011-2022 走看看