标签:img zoj 定时 细粒度 目标 面试官 业务 有一个 通过
引言这是高并发系统三大利器的最后一篇文章了,前面两篇如果没看的话可以先去看下前面的文章《高并发系统三大利器之限流》《高并发系统三大利器之缓存》。说到服务降级,大多数人可能会认为熔断和降级是一样的。我曾经也一度是这样认为的,直到有一天一个面试官问我熔断和降级有啥区别吗?我直接回答没啥区别,然后就让我回去等通知了,我才知道它们还是有区别的。我们先看下服务降级的定义:
服务降级是当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心任务的正常运行。
来源于百度百科。这些话看起来是不是不是很好理解,那么我们可以举个栗子:双十一的时候,我们买东西是不是都不允许修改购物地址,不允许发起退货,不允许退款还有很多服务都不可以用,只允许用户选择商品加入购物车付钱。那天只有一个目的就是让一些不是很重要的服务所占用的
cpu
资源都让出来,给购物,付款这样的核心服务。这样的话,用户付款的速度就会越来越快,毕竟前多少名支付的用户是有免单机会的(大家都会挤在0点那一刻去付款)。服务降级主要用于当整个微服务架构整体的负载超出了预设的上限阈值或即将到来的流量预计将会超过预设的阈值时,为了保证重要或基本的服务能正常运行,将一些 不重要 或 不紧急 的服务或任务进行服务的 延迟使用 或 暂停使用。
降级就是为了解决资源不足和访问量增加的矛盾。服务降级方式
- 延迟服务:定时任务处理、或者
mq
延时处理。比如新用户注册送多少优惠券可以提示用户优惠券会24小时到达用户账号中,我们可以选择再凌晨流量较小的时候,批量去执行送券。- 页面降级:页面点击按钮全部置灰,或者页面调整成为一个静态页面显示“系统正在维护中,。。。。”。
- 关闭非核心服务:比如电商关闭推荐服务、关闭运费险、退货退款等。保证主流程的核心服务下单付款就好。
- 写降级:比如秒杀抢购,我们可以只进行
Cache
的更新返回,然后通过mq异步扣减库存到DB
,保证最终一致性即可,此时可以将DB
降级为Cache
。- 读降级:比如多级缓存模式,如果后端服务有问题,可以降级为只读缓存,这种方式适用于对读一致性要求不高的场景。
服务熔断
服务雪崩
说到服务熔断我们就得先了解下什么是服务雪崩。雪崩效应好比就是蝴蝶效应,说的都是一个小因素的变化,却往往有着无比强大的力量,以至于最后改变整体结构、产生意想不到的结果。
多个微服务之间调用的时候,比如A
服务调用了B
服务,B
服务调用了C
服务,然后C
服务由于机器宕机或者网略故障, 然后就会导致B
服务调用C
服务的时候超时,然后A
服务调用B服务也会超时,最终整个链路都不可用了,导致整个系统不可用就跟雪蹦一样。
标签:img zoj 定时 细粒度 目标 面试官 业务 有一个 通过
原文地址:https://blog.51cto.com/14836615/2526042