在微服务中,当持续的请求大量的失败时,线程堆积导致服务器不堪重负,就会出现雪崩事件,这时候我们就要采取措施,进行熔断与服务降级,下面先说这三者的概念
雪崩
假如有三个微服务A、B、C,一个请求的执行过程是A->B->C,当B请求C出现大量错误(即错误)到达一定的阈值,服务不堪重负C服务崩溃了,那么B任然在不停地请求C,就会有大量的线程堆积,慢慢地B也崩了,随后A也崩了,这就是雪崩效应
![](https://img-blog.csdnimg.cn/20190214093053824.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01lbmdEaUxfeWw=,size_16,color_FFFFFF,t_70)
熔断
当下游的服务因为某种原因突然变得不可用或响应过慢,上游服务为了保证自己整体服务的可用性,不再继续调用目标服务,直接返回,快速释放资源。如果目标服务情况好转则恢复调用(hytrix自动测试请求,请求在阈值内恢复调用)。
服务降级
- 当下游的服务因为某种原因响应过慢,下游服务主动停掉一些不太重要的业务,释放出服务器资源,增加响应速度!
- 当下游的服务因为某种原因不可用,上游主动调用本地的一些降级逻辑,避免卡顿,迅速返回给用户!
服务降级有很多种降级方式!如开关降级、限流降级、熔断降级!