什么是熔断? 熔断有哪几种状态 断路器的工作原理、如何开启熔断?

什么是熔断? 熔断有哪几种状态 断路器的工作原理

一、什么是熔断

熔断机制是应对雪崩效应的一种微服务链路保护机制。当扇出链路的某个微服务不可用或者响应时间太长时,会进行服务降级,进而熔断该节点微服务的调用,快速返回“错误”的响应信息。当检测到该节点微服务调用响应正常后恢复调用链路。

在SpringCloud框架里熔断机制通过Hystrix实现,Hystrix会监控微服务间调用的状况,当失败的调用到一定阈值,缺省是5秒内调用20次,如果失败,就会启动熔断机制。熔断机制的注解是@HystrixCommand。

这种牺牲局部,保全整体的措施就叫做熔断

二、熔断有哪几种状态

熔断有三种状态:
1.Closed:关闭状态,所有请求都正常访问。

2.Open:打开状态,所有请求都会被降级。Hystix会对请求情况计数,当一定时间内失败请求百分比达到阈值,则触发熔断,断路器会完全打开。默认失败比例的阈值是50%,请求次数最少不低于20次。

3.Half Open:半开状态,open状态不是永久的,打开后会进入休眠时间(默认是5S)。随后断路器会自动进入半开状态。此时会释放部分请求通过,若这些请求都是健康的,则会完全关闭断路器,否则继续保持打开,再次进行休眠计时

实际上服务熔断 和 服务降级 没有任何关系,就像 java 和 javaScript
服务熔断,有点自我恢复的味道

服务熔断原理(断路器的原理):

    统计用户在指定的时间范围(默认10s)之内的请求总数达到指定的数量之后,如果不健康的请求(超时、异常)占总请求数量的百分比(50%)
    达到了指定的阈值之后,就会触发熔断。触发熔断,断路器就会打开(open),此时所有请求都不能通过。在5s之后,断路器
    会恢复到半开状态(half open),会允许少量请求通过,如果这些请求都是健康的,那么断路器会回到关闭状态(close).如果
    这些请求还是失败的请求,断路器还是恢复到打开的状态(open).

熔断器的使用

首先在启动类上开启服务熔断 @EnableCircuitBreaker //开启服务熔断
断路器的使用:
1.在指定请求方法上,开启熔断

@HystrixCommand(fallbackMethod = "handleCircuitBreaker",commandProperties = {
    
    
                    @HystrixProperty(name="circuitBreaker.enabled", value="true"),  // 是否开启断路器
                    @HystrixProperty(name="circuitBreaker.requestVolumeThreshold", value="10"),  //请求次数
                    @HystrixProperty(name="circuitBreaker.sleepWindowInMilliseconds", value="10000"), // 时间窗口期
                    @HystrixProperty(name="circuitBreaker.errorThresholdPercentage", value="60"),  			  // 失败率达到多少后跳闸
                    //整体意思:10秒内 10次请求,有6次失败,就跳闸
            })
           public String enableCircuitBreaker(Integer id){
    
    
               if(id < 0){
    
    
                   throw  new RuntimeException();
               }
               String uuid = UUID.randomUUID().toString();
               return "返回的uuid是:" + uuid;
           }
    2.使用XML的方式进行熔断的配置
       hystrix:
       command:
           default:
            circuitBreaker:
             enabled: true
              requestVolumeThreshold: 10
                sleepWindowInMilliseconds: 10000
                  errorThresholdPercentage: 60
服务限流

猜你喜欢

转载自blog.csdn.net/weixin_46310452/article/details/112908773