白话:服务降级与熔断的区别

DD的博客全面升级,阅读体验更佳(尤其是系列教程),后续不再通过这里发布新文章,而是改到 www.didispace.com 发布啦,奔走相告!点击直达~

虽然之前在《Spring Cloud构建微服务架构》系列文章中介绍了Hystrix服务降级Hystrix断路器的概念。但是,还是一直收到这样的提问:降级与熔断区别是什么?并且在很多交流过程中,发现有不少童鞋对降级和熔断的概念有混淆的情况。所以,这篇博文准备换一种方式来说说这两个概念,以帮助读者更好的理解之前两篇文章中介绍的这两个重要知识。

下面通过一个日常的故事来说明一下什么是服务降级,什么是熔断。

故事的背景是这样的:由于小强在工作中碰到一些问题,于是想请教一下业界大牛小壮。于是发生了下面的两个场景:

小强在拿起常用手机拨号时发现该手机没有能够拨通,所以就拿出了备用手机拨通了某A的电话,这个过程就叫做降级(主逻辑失败采用备用逻辑的过程)。

由于每次小壮的解释都属于长篇大论,不太容易理解,所以小强每次找小壮沟通的时候都希望通过常用手机来完成,因为该手机有录音功能,这样自己可以慢慢消化。由于上一次的沟通是用备用电话完成的,小强又碰到了一些问题,于是他又尝试用常用电话拨打,这一次又没有能够拨通,所以他不得不又拿出备用手机给某A拨号,就这样连续的经过了几次在拨号设备选择上的“降级”,小强觉得短期内常用手机可能因为运营商问题无法正常拨通了,所以,再之后一段时间的交流中,小强就不再尝试用常用手机进行拨号,而是直接用备用手机进行拨号,这样的策略就是熔断(常用手机因短期内多次失败,而被暂时性的忽略,不再尝试使用)。

通过上面的故事,读者是否可以更容易地理解降级与熔断的区别和关系呢?其实这里还有一个知识点并没有提及,那就是在熔断之后,主逻辑的自动恢复,该内容其实在之前的Hystrix断路器一文中详细的描述,有兴趣的读者不妨回头看一下这篇文章的内容。