大话SpringCloud---谈谈我理解的服务熔断与服务降级

最近在学习Hystrix这个组件,一说这个组件,就离不开两个概念了,服务熔断&&服务降级

这两个概念特别容易弄混了,特别是钻牛角尖的朋友。先来说一下服务降级.

  • 服务降级

    这里拿一个看到的例子,平时当“双十一”来临的时候,我们知道阿里的淘宝天猫等电商平台会遭受到大流量的冲击。而服务器资源有限,访问量却是近乎“无限”的。于是我们需要取舍。控制甚至关闭一些其他服务,来为电商腾出更多的资源。比如暂时关闭蚂蚁森林等,来腾出更多的服务器资源给目前更重要的电商模块所使用。

    服务降级就是如此,从整个分布式系统的可用性来考虑。当可能会出现一些使整个系统变慢甚至宕机的情况时,牺牲掉其他相对不重要的服务,来腾出资源给重要的服务。

    当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理或换种简单的方式处理,从而释放服务器资源以保证核心交易正常运作或高效运作。

    在拿一个例子,以我们的LOL为例哈~中期基本所有的经济资源都会让给输出位,不是说其他位置不重要,只是相对来说,输出位需要发育,需要更多的经济,这样后期打出高额输出,所以要拿多一点资源。这里也是一个服务降级的表现。

接着说一下另外一个概念:

  • 服务熔断

    这个就比较容易理解了。都说了是熔断,那就是不给你用啦,整个断掉了,怎么用?

    开个玩笑,还是讲一个例子,夏天我们在家里开着空调,吃着西瓜很爽。接着你又打开了电视,电脑,各个房间的空调等等。这时你们家突然跳闸了,因为大功率电器太多了!电路里面的一个东西,叫“熔断器”,它为了电路的安全,自动跳闸,强制地不给你用了。

    扫描二维码关注公众号,回复: 11465785 查看本文章

    服务熔断正是如此。在一个微服务开发中,当系统规模大了之后,服务A会调用服务B,服务B又跑去调用服务C,服务C…就是调用关系错中复杂,这种现象也叫做“扇出”。

    但是如果某一个调用依赖出现了问题,比如程序出错、超时、机房着火等等。那么整个调用就会卡着这里了,会导致客户端那边可能一直在等,同时又有别的线程进来,别的线程也卡在这里等着。最终导致线程越来越多,没必要地占用了大量的服务器资源,最后发生雪崩效应

    服务熔断解决这一可能的情况,当某个调用依赖出错时,它会迅速响应错误出去或者响应一个程序员自己编写的友好页面。大家可能会发现,服务熔断之后,系统进行了服务降级。没错,当熔断出现时,系统返回了一个友好页面给客户端,这也是一个服务降级的表现。

    以“12306”为例,当碰到高并发访问时,铁路查询模块使用不了,这时系统会自动熔断相关的服务,并返回一个友好页面,上面写着“不好意思,系统繁忙,请稍后再试。”

    为什么是稍后呢?因为它自己会回来的。当这个服务进入到熔断状态之后,系统会不定时的继续“偷偷”调用相关服务接口,当发现这些接口可以通过时,就会把该服务连回来,关闭其熔断状态。

猜你喜欢

转载自blog.csdn.net/Jokeronee/article/details/107460689
今日推荐