个人理解:
在请求某一个服务时,由于超时、错误或者其他异常,为了防止客户长时间等待并能够对此异常、错误及时返回一个预期处理,进一步防止服务雪崩,这个操作叫做服务降级。(可以在客户端做降级,也可以在服务端做降级)
而熔断是指,在一定时间内的一定请求次数中,如果发生降级(异常、错误)的概率超过阈值时,就将该服务(某一方法)直接砍掉,禁用一段时间,在该时间段内,无论请求成功与否,均返回fallback方法,即服务始终处于降级状态。在该时间段过去后,如果有成功的请求出现,在将此服务恢复过来。
![](https://img.haomeiwen.com/i13259451/d4912bb343d7e675.png)
可见,熔断和降级的关系可以理解为:
1.熔断是由一定量的降级(错误/异常)所触发的,即量变引起质变。
2.降级不一定熔断,熔断一定降级。
可以举一个简单的例子,就像你去面试,面试官问了你一个问题,你没有回答上来,你只好找一个接口(类似降级)糊弄过去,接着面试官在一个小时内问了你10个问题,你有7个问题都没有答上来,你自己都不好意思再找接口搪塞过去,觉得自己还是先放弃(类似熔断)好了,下去再好好准备准备,下次再来面试,争取10个问题能答出至少8个。
下面是熔断的一个执行流程(可见熔断机制有三种状态):
![](https://img.haomeiwen.com/i13259451/5129c15301cac873.png)
网友评论