Hystrix组件

Hystrix组件

Hystrix是什么?

Hystrix是用于处理分布式系统的延迟和容错的组件,在分布式系统中不可避免的会调用失败、超时、异常等。Hystrix能够保证一个依赖出问题的情况下,不会导致整体服务失败,避免级联故障发生(即服务雪崩),提高分布式系统的弹性。

服务雪崩

在微服务之间进行服务调用时,由于一个服务不可用导致级联故障的现象称为服务雪崩。雪崩效用描述为提供方不可用,导致消费方不可用并将不可用逐渐放大的过程。

服务熔断

熔断器时一种开关装置,在某个服务单元发生故障后,通过断路器故障监控异常条件触发,直接熔断整个服务。向服务方返回一个符合预期的、可处理的备选响应(FallBack)。保护服务调用方线程不会长时间被占用,避免故障在分布式系统中蔓延,乃至服务雪崩。如果目标服务情况好转,则恢复调用。服务熔断时解决服务雪崩的重要手段。

服务降级

当服务压力剧增时根据业务情况对一些服务和页面进行有策略的降级以缓解服务器压力,保障核心任务可用。也就是限制部分请求不可用,给与一个默认的返回。

添加Hystrix依赖及开启断路器
  • pom.xml中增加Hystrix依赖,3.0.0之后版本中netflix去除了hystrix,所以在这里指定版本。
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
    <version>2.2.9.RELEASE</version>
</dependency>
  • 启动类增加开启断路器注解 @EnableHystrix
断路器状态,半开与全开的条件:

服务熔断具体实现

在服务端接口上使用注解@HystrixCommand(defaultFallback = "defaultFallback")指定熔断时返回。

服务降级具体实现
  • 在调用端配置文件中开启feign与Hystrix关联配置
feign:
  circuitbreaker:
    enabled: true
  • 使用注解中fallback指定服务降级实现类 @FeignClient(value = "illriver-bbs-goods",fallback = TestFeignClientImpl.class)

  • 增加feign接口实现作为降级时返回

posted @ 2021-11-15 22:33  illriver  阅读(102)  评论(0)    收藏  举报