SpringCloud微服务 熔断

服务降级的分类

  • (1)服务降级分类两类
    》自动降级
    超时、失败次数、故障、限流
    A:配置好超时时间
    B:不稳的的api调用次数达到一定数量进行降级
    C:调用的远程服务出现故障
    (dns、http服务错误状态码、网络故障、Rpc服务异常),直接进行降级。
    》人工降级
    秒杀、双十一大促降级非重要的服务

服务降级-超时降级

  • (1)修改Hystrix对请求超时的判断时间
    》》默认为两秒
    》》也可以修改
    注解配置 方法上
    @HystrixCommand(commandProperties = {@HystrixProperty(name =“execution.isolation.thread.timeoutInMilliseconds” ,value =“2000” )})
    属性配置 application.properties
    hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=2000

服务熔断介绍

  • (1)什么是服务熔断?
    为了防止整个系统的故障,而采用了一些保护措施
    一般是某个服务异常引起的,相当于“保险丝”,当某个异常条件被触发,直接熔断整个服务,不是等到此服务超时
    A调B,B很慢的话,A也很慢。熔断让A不再调用B,而改成调用C ( 退路方法)

服务熔断和服务降级的异同

  • (1)相同点:
    》从可用性和可靠性触发,为了防止系统崩溃
    》最终让用户体验到的是某些功能暂时不能用
  • (2)不同点:
    》服务熔断一般是下游服务故障导致的,而服务降级一般是从整体系统负荷考虑,由调用方控制
    》触发原因不同

熔断状态机模型(了解)

  • (1)读音
    circuit 美[ˈsɜːrkɪt]
  • (2)状态机有3个状态:
    》Closed:关闭状态(断路器关闭),所有请求都正常访问。
    》 Open:打开状态(断路器打开),所有请求都会被降级。Hystrix会对请求情况计数,当一定时间内失败请求百分比达到阈值,则触发熔断,断路器会完全打开。默认失败比例的阈值是50%,请求次数最少不低于20次。
    》 Half Open:半开状态,不是永久的,断路器打开后会进入休眠时间(默认是5S)。随后断路器会自动进入半开状态。此时会释放部分请求通过,若这些请求都是健康的,则会关闭断路器,否则继续保持打开,再次进行休眠计时
    在这里插入图片描述

服务熔断的配置

  • (1)三个参数
    hystrix.command.default.circuitBreaker.errorThresholdPercentage=50 hystrix.command.default.circuitBreaker.requestVolumeThreshold=20 hystrix.command.default.circuitBreaker.sleepWindowInMilliseconds=5000
    //错误率,默认50%
    //滑动窗口的大小,默认为20
    //过多长时间,熔断器再次检测是否开启,默认为5000,即5s钟
    每当20个请求中,有50%失败时,熔断器就会打开,此时再调用此服务,将会直接返回失败,不再调远程服务。直到5s钟之后,重新检测该触发条件,判断是否把熔断器关闭,或者继续打开。
    达到熔断之后,那么后面它就直接不去调该微服务

测试

http://localhost:81/consumer/1 失败
http://localhost:81/consumer/8 正常

猜你喜欢

转载自blog.csdn.net/qq_40711092/article/details/110178987