Hystrix的原理(一)

1.服务雪崩

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

2.服务熔断

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

a.当满足一定的阈值的时候(默认10秒内超过20个请求次数)
b.当失败率达到一定的时候(默认10秒内超过50%的请求失败)
c.到达上阈值,断路器将会开启
d.当开启时,所有请求都不会进行转发
e.一段时间之后(默认是5秒),这个时候断路器是半开状态,会让其中一个请求进行转发。如果成功,断路器关闭。
若失败,继续开启。重复d和e

3.服务降级

定义: 服务压力剧增的时候根据当前的业务情况及流量对一些服务和页面有策略的降级,以此缓解服务器的压力,以保证核心任务的进行。
同时保证部分甚至大部分任务客户能得到正确的响应。也就是当前的请求处理不了或者出错了,给一个默认的返回。

通俗讲:当网站|服务流量突然增加时,为了保证系统核心服务正常运行,有策略关闭系统中边缘服务,以保证核心服务正常运行

4.降级和熔断总结

1.共同点:

  • 目的很一致,都是从不可用性可靠性着想,为了防止系统的整体缓慢甚至崩溃,采用的技术手段;
  • 最终表现类似,对于两者来说,最终让用户体验到的是某些功能暂时不可达或不可用;
  • 粒度一般都是服务级别,当然,业界也有不少更细粒度的做法,比如做到数据持久层(允许查询,不允许增删改);
  • 自治性要求很高,熔断模式一般都是服务基于策略的自动触发,降级虽说可人工干预,但在微服务架构下,完全靠人显然不可能,
    开关预置、配置中心都是必要手段;

2.异同点

  • 触发原因不太一样,服务熔断一般是某个服务(下游服务)故障引起,而服务降级一般是从整体负荷考虑;
  • 管理目标的层次不一样,熔断其实是一个框架级别的处理,每个微服务都需要(无层次之分),而降级一般需要对业务有层次之分
    (比如降级一般是从最外围服务边缘服务开始)
    3.总结
  • 熔断比会触发降级,所以熔断也是降级一种,区别在于熔断是对调用链路的保护,而降级是对系统过载的一种保护处理
上一篇:springcloud- Hystrix:服务熔断(七)


下一篇:Hystrix服务降级、熔断