MST

星途 面试题库

面试题:业务高峰期微服务熔断与降级的策略设计

假设你负责的微服务系统处于业务高峰期,经常出现部分服务响应缓慢的情况。请设计一套适合的微服务熔断与降级协同策略,包括如何确定熔断阈值、降级规则,以及在不同场景下如何切换策略。
17.0万 热度难度
后端开发微服务架构

知识考点

AI 面试

面试题答案

一键面试

熔断阈值确定

  1. 基于响应时间
    • 统计一段时间(如最近1分钟)内服务的平均响应时间。若平均响应时间连续多次(如5次)超过设定的阈值(如500ms),则启动熔断。
    • 例如,以每10秒为一个统计窗口,若最近5个10秒窗口内平均响应时间都大于500ms,触发熔断。
  2. 基于错误率
    • 计算一段时间内服务请求的错误率。当错误率达到一定比例(如50%),且请求量超过一定数量(如100次)时,触发熔断。
    • 比如,在1分钟内,如果有100次以上请求,且其中50次及以上请求失败(错误率50%),则开启熔断。

降级规则

  1. 接口级降级
    • 对于非核心业务接口,当检测到服务响应缓慢或资源紧张时,直接返回兜底数据。例如,商品详情页中的一些关联推荐信息,若获取推荐服务响应缓慢,直接返回默认推荐列表。
    • 对于一些查询类接口,可以降低查询精度,如只返回部分关键字段,减少数据处理量。例如,用户列表接口,在降级时只返回用户名和ID,不返回详细地址等信息。
  2. 服务级降级
    • 对于整个微服务,若其负载过高,可停止一些非必要功能。如订单服务,在业务高峰期可以暂时停止订单评价提醒的功能,优先保证订单创建、支付等核心功能。
    • 当服务熔断后,开启快速失败策略,即不再调用该服务,直接返回降级结果,告知用户服务暂时不可用或返回默认数据。

不同场景下切换策略

  1. 业务高峰期
    • 适当降低熔断阈值,如将错误率阈值从50%调整为40%,响应时间阈值从500ms调整为400ms,以便更快触发熔断,防止故障扩散。
    • 加大降级力度,优先保障核心业务接口,对于更多的非核心接口和功能进行降级处理。例如,在电商大促时,对于商品评论展示等非核心功能进行降级,只展示少量热门评论。
  2. 业务低峰期
    • 适当提高熔断阈值,如将错误率阈值从40%提高到50%,响应时间阈值从400ms提高到500ms,减少不必要的熔断。
    • 减少降级范围,逐步恢复被降级的接口和功能,对服务进行全面检查和优化,为下一次高峰期做准备。例如,在凌晨业务低峰时,对之前降级的一些个性化推荐功能进行恢复测试和优化。
  3. 系统故障恢复阶段
    • 当服务从熔断状态恢复后,采用逐步试探的方式调用服务。例如,先以较小的请求量(如正常请求量的10%)调用服务,若响应正常,再逐步增加请求量(每次增加10%),直到恢复到正常水平。
    • 在这个阶段,密切监控服务的响应时间和错误率,一旦发现异常,及时重新触发熔断或调整降级策略。如发现服务错误率开始上升,即使未达到熔断阈值,也可以适当增加降级范围。