面试题答案
一键面试熔断机制检测服务故障的方式
- 基于调用结果统计:熔断机制通常会持续统计服务调用的成功和失败次数。例如,在一个设定的时间窗口内,统计请求总数、成功请求数和失败请求数。如果失败请求数达到一定比例(比如超过 80%),就可能触发熔断。
- 超时判定:当服务调用在规定时间内没有返回响应,这也被视为一次失败调用。熔断机制会记录超时次数,若超时次数在一段时间内过多,也可能促使熔断机制启动。
熔断机制不同状态之间的切换
- 闭合状态(Closed State):
- 说明:正常情况下,熔断处于闭合状态,此时服务调用正常进行,熔断机制统计调用结果。
- 向打开状态切换:当失败请求比例或超时次数达到预先设定的阈值时,熔断从闭合状态切换到打开状态。例如,设定失败率超过 60%且请求数大于 100 次就触发熔断,当满足这个条件时,就切换到打开状态。
- 打开状态(Open State):
- 说明:在打开状态下,熔断机制会阻止大部分请求直接调用故障服务,避免更多的失败和资源浪费。通常会快速返回一个预设的错误响应(如降级后的结果),而不是真正调用故障服务。
- 向半打开状态切换:经过一段设定的时间(熔断冷却时间)后,熔断状态从打开切换到半打开。这个冷却时间是为了给故障服务一个恢复的机会。例如,冷却时间设置为 5 分钟,5 分钟后进入半打开状态。
- 半打开状态(Half - Open State):
- 说明:在半打开状态下,熔断机制会允许少量的请求去实际调用故障服务。这是一种试探性的行为,用于检测服务是否已经恢复正常。
- 向闭合状态切换:如果这些试探性的请求大部分(比如超过 60%)成功,说明服务可能已经恢复正常,熔断状态就会切换回闭合状态,恢复正常的服务调用。
- 向打开状态切换:如果这些试探性请求中失败比例仍然较高(比如超过 40%),则认为服务还未恢复,熔断状态会重新切换回打开状态,并再次启动熔断冷却时间。