Spring Cloud全解析:熔断之Hystrix简介



Hystrix简介

多个微服务之间调用的时候,微服务A调用微服务B,微服务B调用微服务C,如果微服务C出现问题或者响应时间过长,就会导致微服务A占用越来越多的系统资源,进而导致系统崩溃,称为服务雪崩,其是由于提供者不可用导致消费者不可用,并将不可用逐渐放大的过程

如何防止雪崩呢?

  • 为网络请求设置超时
  • 使用断路器模式

Hystrix是什么

Hystrix是由Netflix开源的一个用于处理分布式系统的延迟和容错的开源库,在分布式系统,许多依赖不可避免的会调用失败,比如超时、异常等,Hystrix能够保证在一个依赖出问题的情况下,不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性,"断路器"本身是一种开关装置,当某个服务单元发生故障之后,通过断路器的故障监控,向调用方返回一个符合预期的、可处理的备选响应(FallBack),而不是长时间等待或抛出调用方无法处理的异常,保证了调用方的线程不会被长时间的占用,从而避免了故障在分布式系统中的蔓延,乃至雪崩

Hystrix基于命令模式,Command是在Receiver和Invoker之间添加的中间层,Command实现了对Receiver的封装,通过继承HystrixCommand来封装

public abstract class HystrixCommand<R> extends AbstractCommand<R> implements HystrixExecutable<R>, HystrixInvokableInfo<R>, HystrixObservable<R>
  // 重写run方法,用于执行业务逻辑
  protected abstract R run() throws Exception;
  // 一般还需要重写getFallback 用于降级
  protected R getFallback() {
   
        throw new UnsupportedOperationException("No fallback available.");
    }

}

一个HystrixCommand实例只能调用一次

如何做到的容错?

  • 包裹请求 使用HystrixCommand包裹对外部依赖的调用逻辑,每个命令在独立的线程/信号量中执行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拾光师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值