降级?熔断?都是啥意思,啥关系。
先说结论:降级是一种设计思想,在java层面就是一个接口,而熔断降级(服务不可用)是降级的不同实现方式,其他实现方式还有限流降级、超时降级。
什么是降级
什么是服务降级呢?降级主要有以下几种情况:
- 超时:当下游的服务因为某种原因响应过慢,下游服务主动停掉一些不太重要的业务,释放出服务器资源,增加响应速度!
- 限流:防止上游服务请求太多导致服务崩溃,所以限制请求的数量,来达到保护下游服务的目的,当请求的流量到达一定阈值时,直接拒绝多余的请求,执行降级逻辑。
- 不可用:当下游的服务因为某种原因不可用,上游主动调用本地的一些降级逻辑,避免卡顿,迅速返回给用户。
现在,相信你对这几个概念有了了解。就是以上三者(超时、限流、不可用)触发时,都会走同一个逻辑,那就是降级逻辑。
什么是熔断
什么是服务熔断?
熔断很好理解,就是一个断开的过程;
熔断就像是家里的保险丝一样,当电流达到一定条件时,比如保险丝能承受的电流是5A,如果你的电流达到了6A,因为保险丝承受不了这么高的电流,保险丝就会融化,这时候电路就会断开,起到了保护电器的作用;
在微服务里面也是一样,当下游的服务因为某种原因突然变得不可用或响应过慢,上游服务为了保证自己整体服务的可用性,不再继续调用目标服务,直接返回,快速释放资源。如果目标服务情况好转则恢复调用;
熔断和降级的关系
熔断,就是指断开服务之间的链接。
当下游的服务不可用时,那上游就不再调用下游服务,相当于断开链接(这一步就是熔断),然后上游服务再执行接下来的降级逻辑。(这一系列的操作称之为降级)
而当下游服务超时,即下游的服务因为某种原因响应过慢,下游服务主动停掉一些不太重要的业务,释放出服务器资源,增加响应速度,不能一直让上游等待,(这一系列的操作也称之为降级逻辑)
当上游服务请求太多,可能会导致下游服务崩溃,所以下游服务限制请求的数量,来保护下游服务正常运行,当请求的流量到达一定阈值时,直接拒绝多余的请求。(这一系列的操作也称之为降级逻辑)
既然不管怎样都会执行降级逻辑,这时候就可以理解为:降级是一种设计思想,在java层面就是一个接口,而超时、限流熔断是降级的不同实现方式,他们的关系如下图:
参考:https://blog.csdn.net/qq_27184497/article/details/119993725