而对服务本身,也有一些常见的降级思路
- 返回默认值,这算是一种简单的情况
- 禁用可观测性组件,正常来说业务里充满了各种各样的埋点,这些埋点本身是会带来消耗的,性能瓶颈的时候可以考虑停用,或是降低采样率
- 同步转异步,即正常情况下,服务收到请求后会立马处理。但是在降级的情况下,服务收到一个请求之后只会返回一个代表已接收的响应。后续服务会异步开启线程处理,或是定时任务处理
- 简化流程:如果你处理一个请求需要很多步骤,后续如果有一些步骤不关键的话,可以考虑不执行,或者异步执行。例如在内容生产平台,一般新内容要被推送到推荐系统里面。那么在降级的情况下你可以不推,而后可以考虑异步推送过去,也可以考虑等系统恢复之后再推送过去
使用降级的情况
- 网站、APP之类的产品,在首页、核心页面有没有采取降级措施。如果采用了降级,降级前后的逻辑是什么样的
- 有没有使用降级来保护系统,如果有,需要了解清楚什么情况下会触发降级,降级前后的逻辑,怎么从降级中恢复过来
最佳面试策略是把降级作为构建高可用微服务架构的一个措施
A系统是我们公司的核心系统,主要职责是保障该系统的高可用,为了达到这个目标,合理运用了熔断、降级、隔离等措施
常见问题:
- 是否了解服务治理
- 如何提高系统可用性
- 如果系统负载高怎么办
- 依赖的下游服务或下游中间件崩溃了怎么办
同时为了展示亮点,需要记住后面给出的两个方案:读写服务降级写服务和快慢路径降级慢路径。非常建议参考这两个方案的思路,基于自己的实际业务情况设计自己独有的降级面试案例