MST
星途 面试题库

面试题:缓存设计之中等难度:缓存降级与熔断机制在高并发场景下的应用

假设你正在开发一个电商系统,商品详情页面的访问量非常高,并且依赖于多个后端服务获取商品的详细信息,如库存服务、价格服务等。在高并发情况下,可能会出现部分服务响应缓慢甚至不可用。请描述如何应用缓存降级与熔断机制来保证商品详情页面的正常访问,并且简要说明在这种场景下,缓存降级与熔断机制各自的触发条件和处理逻辑。
29.6万 热度难度
后端开发缓存设计

知识考点

AI 面试

面试题答案

一键面试

缓存降级

  1. 触发条件:当后端某些依赖服务(如库存服务、价格服务)响应时间过长(超过设定的阈值,例如500ms)或者出现故障(如服务不可用、频繁报错等)时,触发缓存降级。
  2. 处理逻辑
    • 系统优先从缓存中获取商品详细信息。若缓存中有数据,则直接返回缓存数据给前端展示,以保证商品详情页面的快速加载。
    • 若缓存中没有数据,并且触发了缓存降级(依赖服务异常),则返回兜底数据。兜底数据可以是商品的基本信息(如名称、简单描述等)以及提示信息(如“库存和价格信息可能不准确”)。同时,启动异步任务,尝试再次获取最新的商品详细信息并更新缓存,以便下次请求能获取到更准确的数据。

熔断机制

  1. 触发条件
    • 错误率熔断:在一定时间窗口内(例如1分钟),如果对某个后端服务(如库存服务)的请求错误率(如超时、服务不可用等错误的请求数占总请求数的比例)超过设定的阈值(如50%),触发熔断。
    • 超时熔断:在一定时间窗口内(例如1分钟),如果对某个后端服务的请求平均响应时间超过设定的阈值(如1000ms),触发熔断。
  2. 处理逻辑
    • 当触发熔断后,在熔断开启状态下,后续对该服务的请求不再实际调用该后端服务,而是直接返回熔断后的默认响应(例如返回缓存数据或者兜底数据,并提示用户服务暂时不可用)。
    • 熔断开启一段时间后(如5分钟,这个时间可配置),进入半熔断状态。在半熔断状态下,系统会尝试发送少量请求到后端服务,如果这些请求大部分成功(如成功率超过80%),则关闭熔断,恢复正常调用;如果请求仍然失败率较高,则继续保持熔断状态。