目录
面试题汇总
Q:为什么系统需要降级
分布式系统环境下,通常会有很多层的服务调用。由于网络原因或自身的原因,服务一般无法保证100%可用。如果一个服务出现了问题,调用这个服务就会出现线程阻塞的情况,由于服务与服务之间的依赖性,故障会传播,不可用沿请求调用链向上传递,会对整个微服务系统造成灾难性的严重后果,这就是服务故障的“雪崩效应”。
所以当第一个服务不可用时,调用方要及时降级,避免整个系统的故障
Q:如何设计一套降级方案
一套完整的降级方案需要回答三个问题
- 哪些业务可以降级
- 使用哪种方式进行降级
- 降级后该如何处理
举例:为微信抢红包设计一个降级方案,红包列表的展示属于抢红包的非核心链路,因此,对于列表展示,在业务压力较大的情况下,通过开关降级的方式,对头像等信息的读进行关闭,并展示一个静态的空白图像替代,从而完成降级。
Q:哪些业务可以降级
降级的功能点主要从服务端链路考虑,即根据用户访问的服务调用链路来梳理哪些需要降级,划分核心与非核心场景,以损失部分体验的代价,来换取整个业务链路的稳定性和持续可用。
故非核心的页面(推荐信息、热销榜等)、影像(头像、展示图等)、请求、功能进行降级
Q:有哪些降级策略
开关降级:通过配置开关,对功能进行启用关闭
超时降级:通过超时时间设置,对超时请求进行降级逻辑处理
熔断降级:通过设置熔断参数、熔断策略进行降级,并动态探测恢复
限流降级:通过设置限流参数,对流量进行限制
多级降级:根据业务场景配置多层降级
Q:有哪些降级逻辑
- 固定的默认值(如排队或重试等静态页面、空白图像等)
- 进入兜底逻辑
- 通过缓存处理
- 同步处理转异步处理
- 对功能或入口进行屏蔽