面试题答案
一键面试缓存降级
- 触发条件:当后端某些依赖服务(如库存服务、价格服务)响应时间过长(超过设定的阈值,例如500ms)或者出现故障(如服务不可用、频繁报错等)时,触发缓存降级。
- 处理逻辑:
- 系统优先从缓存中获取商品详细信息。若缓存中有数据,则直接返回缓存数据给前端展示,以保证商品详情页面的快速加载。
- 若缓存中没有数据,并且触发了缓存降级(依赖服务异常),则返回兜底数据。兜底数据可以是商品的基本信息(如名称、简单描述等)以及提示信息(如“库存和价格信息可能不准确”)。同时,启动异步任务,尝试再次获取最新的商品详细信息并更新缓存,以便下次请求能获取到更准确的数据。
熔断机制
- 触发条件:
- 错误率熔断:在一定时间窗口内(例如1分钟),如果对某个后端服务(如库存服务)的请求错误率(如超时、服务不可用等错误的请求数占总请求数的比例)超过设定的阈值(如50%),触发熔断。
- 超时熔断:在一定时间窗口内(例如1分钟),如果对某个后端服务的请求平均响应时间超过设定的阈值(如1000ms),触发熔断。
- 处理逻辑:
- 当触发熔断后,在熔断开启状态下,后续对该服务的请求不再实际调用该后端服务,而是直接返回熔断后的默认响应(例如返回缓存数据或者兜底数据,并提示用户服务暂时不可用)。
- 熔断开启一段时间后(如5分钟,这个时间可配置),进入半熔断状态。在半熔断状态下,系统会尝试发送少量请求到后端服务,如果这些请求大部分成功(如成功率超过80%),则关闭熔断,恢复正常调用;如果请求仍然失败率较高,则继续保持熔断状态。