考察目的
服务降级这个问题主要考察工作 5 年以上的同学。
主要考察求职者是否了解服务降级,以及在实际工作中是否有参与过相关的设计
服务降级本身就是一种兜底的设计方案,主要是出现在分布式架构的设计场景中。
问题难度不大,但是回答的时候逻辑性很重要。
问题分析
服务降级是一种提升系统稳定性和可用性的策略。
简单来说,就是当服务器压力增加的情况下,根据实际业务的需求和流量的情况,不对外提供部分服务 的功能。
从而释放服务器的资源去保证核心业务的正常运行。
服务降级有两种方式,一种是主动降级,一种是基于特定情况的被动降级。
- 主动降级:这种方式在大促的时候使用比较多,比如在电商平台中,核心服务是下单、支付。 所以一般会把非核心服务比如评论服务关闭掉,这样就使得评论服务不会占用计算资源,从而保证核心 服务的稳定运行
被动降级:它有两种主要的触发场景
- 熔断触发降级, 在一个请求链路中,为了避免某个服务节点出现故障导致请求堆积,造成资 源消耗时式的服务崩溃的问题,一般会采取熔断策略。
当触发了熔断机制以后,如果后续再向故障节点发起请求的时候,这个请求不会发送到故障节点上,而 是直接置为失败,这样就避免了请求堆积的问题。
而直接置为失败之后需要给到用户一个反馈,而这个反馈就是降级策略,就相当于给用户一个处理结果。 比如返回一个“系统繁忙”之类的信息。
- 限流触发降级,因为系统资源是有限的,为了避免高并发流量把系统压垮导致不可用问题,所 以我们会采取限流的策略去保护系统。通过限流去限制一部分用户的访问,然后保证整个系统 的稳定运行
同样,触发了限流之后,需要给到用户一个反馈,这个反馈同样也称为降级策略。
比如可以反馈“当前访问人数较多,请稍后再试”,或者让这些用户排队,并显示当前排队的情况等。 因此,降级带来的结果是使得用户的体验下降,但是却保证了系统的稳定性和可用性。
回答
服务降级其实就是降低服务的能力等级。
在高并发流量下,因为系统资源有限,导致系统无法为高并发流量提供稳定可靠的支撑。
所以我们可以把一些非核心服务下掉,或者提供一些默认的处理结果,把这些计算资源腾出来给到核心 服务去使用。
从而保证核心服务的稳定运行。