明年金三银四的Java面试内容押题:请你说一下你对服务降级的理解,看看你能回答的上来吗?
一、参考资料
【明年金三银四的Java面试内容押题:请你说一下你对服务降级的理解,看看你能回答的上来吗?】 https://www.bilibili.com/video/BV1V1BYBLEFN/?share_source=copy_web&vd_source=855891859b2dc554eace9de3f28b4528
二、笔记总结
1、问题解答
服务降级是一种提升系统稳定性和可用性的策略。
简单来说就是当服务器压力增加的时候,根据实际业务需求和流量的情况,不对外提供部分服务的功能,从而释放服务器资源去保证核心服务正常运行。
服务降低有两种方式,主动降级和特定情况下的被动降级。
主动降级:
- 比如关闭系统的非核心服务,非核心服务不在占用计算资源,保证核心服务的稳定运行。
被动降级_熔断触发降级:
- 在一个请求链路中,为了避免某个节点出现故障导致请求堆积,造成资源浪费,使用服务崩溃的问题,一般会采取熔断策略。
- 当触发熔断策略后,后续再有请求发送到故障节点,这个请求不会发送到固定节点上,而是直接置为失败,这样就避免了请求堆积的问题。
- 降级策略,直接置为失败后给用户一个反馈, 比如返回系统繁忙的信息。
被动降级_限流触发降级:
- 因为系统资源是有限的,为了避免高并发流量把系统压垮导致不可用的问题,所以采取限流策略去保护系统。
- 同过限流,限制了一部分用户的访问,保证了系统的稳定运行。
- 降级策略,给限流的用户一个反馈,比如当前访问人员较多请稍后再试,或者让这些用户排队并显示排队情况。
降级带来的结果,使用户的体验度下降但是保证了系统的稳定性和可靠性。
2、面试题回答
- 服务降级其实就是降低服务的能力等级。
- 在高并发流量下,因为系统资源有限,导致系统无法为高并发流量提供稳定可靠的支撑。
- 所以我们可以把一些非核心服务下掉,或者提供一些默认的处理结果,把计算资源腾出来给核心服务去使用,从而保证核心服务稳定运行。