Spring Cloud Hystrix (熔断)

Spring Cloud Hystrix (熔断)

一、什么是熔断?为什么要熔断?

熔断就是类似一个保险丝一样的功能,当Hystrix判定下游服务不可用的时候,发生该服务的调用时,直接返回失败。

熔断对微服务来说是必须的,因为在Java中,每个HTTP请求都会开启一个新的线程,当下游服无法正常调用的时候,线程通常会阻塞,一直到Timeout结束,在并发量较大的时候,上游服务所在服务器很可能就会由于阻塞的线程将机器的资源耗尽,导致上游的服务一起挂掉

二、Hystrix是如何判断服务是可用的?

Spring Cloud一般是使用Hystrix作为断路器,它一共有三种状态:

  1. 关闭:起始状态,所有请求都可以通过,当错误请求达到一定的阈值时,状态转换为打开
  2. 打开:请求直接短路,返回失败响应信息,经过一段时间后,状态转换为半开
  3. 半开:该状态下,如果下次请求成功,则状态转换为关闭,反之转换为打开

状态转化的判定配置主要有以下三个:

hystrix:
  command:
    default:
      circuitBreaker:
        # hystrix打开多长时间之后尝试恢复(转为半开), 默认5s
        sleepWindowInMilliseconds: 5
        # 配置时间窗口内达到此数量的失败后,打开hystrix
        requestVolumeThreshold: 20
        # 失败率达到百分比之后,打开hystrix
        errorThresholdPercentage: 50
发布了19 篇原创文章 · 获赞 2 · 访问量 2448

猜你喜欢

转载自blog.csdn.net/Azhuzhu_chaste/article/details/105165072