这是高并发系统三大利器的最后一篇文章了,前面两篇如果没看的话可以先去看下前面的文章《高并发系统三大利器之限流》《高并发系统三大利器之缓存》。说到服务降级,大多数人可能会认为熔断和降级是一样的。我曾经也一度是这样认为的,直到有一天一个面试官问我熔断和降级有啥区别吗?我直接回答没啥区别,然后就让我回去等通知了,我才知道它们还是有区别的。我们先看下服务降级的定义:
服务降级是当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心任务的正常运行。
来源于百度百科。这些话看起来是不是不是很好理解,那么我们可以举个栗子:双十一的时候,我们买东西是不是都不允许修改购物地址,不允许发起退货,不允许退款还有很多服务都不可以用,只允许用户选择商品加入购物车付钱。那天只有一个目的就是让一些不是很重要的服务所占用的cpu
资源都让出来,给购物,付款这样的核心服务。这样的话,用户付款的速度就会越来越快,毕竟前多少名支付的用户是有免单机会的(大家都会挤在0点那一刻去付款)。**服务降级主要用于当整个微服务架构整体的负载超出了预设的上限阈值或即将到来的流量预计将会超过预设的阈值时,为了保证重要或基本的服务能正常运行,将一些 不重要 或 不紧急 的服务或任务进行服务的 延迟使用 或 暂停使用**。
降级就是为了解决资源不足和访问量增加的矛盾。
mq
延时处理。比如新用户注册送多少优惠券可以提示用户优惠券会24小时到达用户账号中,我们可以选择再凌晨流量较小的时候,批量去执行送券。Cache
的更新返回,然后通过mq异步扣减库存到DB
,保证最终一致性即可,此时可以将DB
降级为Cache
。说到服务熔断我们就得先了解下什么是**服务雪崩**。雪崩效应好比就是蝴蝶效应,说的都是一个小因素的变化,却往往有着无比强大的力量,以至于最后改变整体结构、产生意想不到的结果。
多个微服务之间调用的时候,比如A
服务调用了B
服务,B
服务调用了C
服务,然后C
服务由于机器宕机或者网略故障, 然后就会导致B
服务调用C
服务的时候超时,然后A
服务调用B服务也会超时,最终整个链路都不可用了,导致整个系统不可用就跟雪蹦一样。
说完了服务雪崩然后就可以说下服务熔断了。 **熔断机制是应对雪崩效应的一种微服务链路保护机制,在互联网系统中当下游的服务因为某种原因突然变得不可用或响应过慢,上游服务为了保证自己整体服务的可用性,暂时不再继续调用目标服务,直接快速返回,快速释放资源。如果目标服务情况好转则恢复调用**。
通俗点来说的话就是,比如我们以前大学的时候宿舍是不是不允许使用大功率电器,一旦使用大功率电器,电流过大,宿舍立马就会跳闸断电。因为已经超过了这个已经超过了电线所能承载的最大电流。如果不断电话的会导致火灾,然后整栋宿舍都会断电。宿舍停电之后要恢复来电的话需要到宿管那里解释下为什么突然停电了,上交大功率电器,一顿教育然后才会给你恢复供电。
降级虽说可人工干预,但在微服务架构下,完全靠人显然不可能,开关预置、配置中心都是必要手段;
站在巨人的肩膀上摘苹果:
https://blog.csdn.net/guwei9111986/article/details/51649240/
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。