对于这块有点分不清楚 查阅相关资料和博客 记录一下自己的理解
服务A 调用 服务B >>> 服务A=上游 , 服务B=下游
场景1、上游调用下游的服务因为某些原因调不通了,那么上游服务就调上游自己本地备用的逻辑吧。
例:上游服务调下游服务好长时间了都没有响应,直到超过设置的超时时间,那就不死等了,你下游的服务调不通,我调个自己的本地备用服务完成这次请求并且给用户return个合理解释 “网络异常,请稍后再试” (* ̄︶ ̄)。
场景2、上游调用下游的服务因为某些原因 好多次 都调不通了,那下游这个服务基本是废了,熔断器直接把下游服务隔断吧,别浪费上游时间了,隔断之后,俺上游就不去尝试调你了,直接调俺本地备用的就完事了。
例: 这个场景就是熔断。
前几次的请求, 当下游服务异常的时候, 就是场景1;每次请求上游都会去调下游,直到我得到了下游反馈的异常信息(超时等),我才会去调上游备用的服务(return “网络异常,请稍后再试”)。
后边接着一个又一个的请求啊 , 我就接着调啊调,调啊调......
直到我调用了 20个请求,其中有50%失败时,就是场景2,也就是发生了熔断或者说熔断器开启了。这个时候下游的服务就被熔断器隔断了,后续再有请求过来,调下游服务直接返回失败,不再调远程服务,直接调上游备用服务返回信息完事了。直到5s钟之后,熔断器变成半开状态,熔断器放开了一个口子去调下游服务,这又回到了场景1;之后调用 看看下游服务好了吗 能调通了吗!如果下游服务还是废的,那我熔断器再打开吧,把下游服务再给隔断,再次回到了场景2(熔断状态);如果下游服务能调通 , 则熔断器关闭,恢复正常调用。
总结: 降级有多种方式,熔断是其中之一。
主要参考此篇:https://www.cnblogs.com/rjzheng/p/10340176.html
原文:https://www.cnblogs.com/mutumango/p/11349468.html