MST

星途 面试题库

面试题:Spring Cloud微服务架构下如何设计高可用的服务协作熔断机制

在一个基于Spring Cloud的复杂微服务系统中,存在多个相互依赖的服务,如用户服务依赖于基础数据服务,基础数据服务又依赖于数据库服务。当数据库服务出现故障时,如何设计一套高可用的服务协作熔断机制,确保用户服务不会因底层服务故障而长时间等待或崩溃,详细说明熔断策略、触发条件以及熔断恢复机制的设计思路。
45.2万 热度难度
后端开发微服务架构

知识考点

AI 面试

面试题答案

一键面试

熔断策略

  1. 使用断路器模式:在用户服务与基础数据服务之间、基础数据服务与数据库服务之间引入断路器。断路器有三种状态:关闭(Closed)、打开(Open)和半打开(Half - Open)。
  2. 统计失败请求:在关闭状态下,断路器统计一定时间窗口内请求失败的次数或失败率。例如,统计最近100次请求中失败的数量。

触发条件

  1. 失败率触发:如果失败请求的比例超过设定阈值(如50%),断路器从关闭状态切换到打开状态。例如,在100次请求中有50次以上失败,触发熔断。
  2. 连续失败次数触发:连续一定数量(如10次)的请求失败,也触发熔断,将断路器切换到打开状态。

熔断恢复机制设计思路

  1. 半打开状态:断路器打开一段时间(如10秒)后,进入半打开状态。在半打开状态下,断路器允许一定数量(如5次)的试探性请求通过。
  2. 成功恢复:如果试探性请求大部分(如80%以上)成功,说明底层服务可能已经恢复,断路器切换回关闭状态,恢复正常请求。
  3. 失败重试:如果试探性请求中失败比例较高(如超过20%),断路器重新回到打开状态,继续熔断一段时间,然后再次进入半打开状态进行试探。