【第10期】springcloud: 雪崩效应hystrix

一、雪崩效应hystrix的演变流程

image
image
image
image

二、雪崩原因

造成雪崩的原因可归纳为如下三个:

1)服务提供者不可用(硬件故障、程序bug、缓存击穿、用户大量请求)

2)重试加大流量(用户重试、代码逻辑重试)

3)服务调用者不可用(同步等待造成的资源耗尽)

最终的结果就是一个服务不可用,导致一系列服务的不可用,而往往这种后果是无法预料的。

三、如何解决灾难性雪崩效应?

1)降级:超时降级、资源不足时(线程或信号量)降级,降级后可以配合降级接口返回托底数据。实现一个fallback方法,当请求后端服务出现异常时,可以使用fallback 方法返回的值。

2)隔离(线程池隔离和信号量隔离):限制调用分布式服务的资源使用,某一个调用的服务出现问题不会影响其他服务调用。

  1. 融断:当失败率(如因网络故障/超时造成的失败率高)达到阀值自动触发降级,熔断器触发的快速失败会进行快速恢复。

  2. 缓存:提供了请求缓存。

  3. 请求合并:提供请求合并。

后续会对雪崩的解决方案逐一讲解,敬请期待。。

你可能感兴趣的:(【第10期】springcloud: 雪崩效应hystrix)