面试题答案
一键面试权重设定依据
- 错误率:
- 权重设定:较高权重,如 0.5。
- 依据:错误率直接反映了服务调用的失败情况。高错误率意味着服务可能出现了故障,无法正常提供功能,严重影响业务流程。例如在支付微服务中,若错误率过高,可能导致用户支付失败,对业务造成重大损失。所以错误率在熔断触发条件中应占较大比重。
- 响应时间:
- 权重设定:权重设为 0.3。
- 依据:响应时间过长会降低用户体验,甚至导致业务流程超时。虽然它不像错误率那样直接表示服务故障,但长时间的延迟也可能暗示服务内部存在性能瓶颈或资源不足问题。如电商的商品详情页服务,若响应时间过长,用户可能会离开页面,影响业务转化。不过相比错误率,其对业务的直接影响程度稍低,所以权重低于错误率。
- 请求量:
- 权重设定:权重设为 0.2。
- 依据:请求量反映了服务的繁忙程度。高请求量可能是业务高峰导致,并不一定代表服务出现问题。它更多是作为辅助指标,用于判断在高负载情况下服务的运行状况。例如在电商大促期间,某服务请求量剧增,但只要错误率和响应时间在可接受范围内,就不应轻易熔断。所以其权重相对较低。
多指标融合判断熔断触发算法
- 指标标准化:
- 为了能将不同量级和单位的指标进行统一计算,需要对错误率(
errorRate
)、响应时间(responseTime
)和请求量(requestCount
)进行标准化处理。 - 错误率:本身是 0 - 1 之间的比例,无需处理。
- 响应时间:假设历史统计中,响应时间最长为
maxResponseTime
,最短为minResponseTime
,标准化后的响应时间normResponseTime = (responseTime - minResponseTime) / (maxResponseTime - minResponseTime)
。 - 请求量:假设历史统计中,请求量最大值为
maxRequestCount
,最小值为minRequestCount
,标准化后的请求量normRequestCount = (requestCount - minRequestCount) / (maxRequestCount - minRequestCount)
。
- 为了能将不同量级和单位的指标进行统一计算,需要对错误率(
- 加权计算:
- 设一个综合得分
compositeScore
,计算公式为:compositeScore = 0.5 * errorRate + 0.3 * normResponseTime + 0.2 * normRequestCount
。
- 设一个综合得分
- 熔断判断:
- 设定一个熔断阈值
threshold
,例如 0.6。 - 当
compositeScore >= threshold
时,触发熔断机制,暂时切断对该服务的调用,以防止故障扩散。同时开启断路器,进入熔断状态。在熔断状态下,可根据一定策略(如定时试探)判断服务是否恢复,若恢复则关闭断路器,恢复正常调用。
- 设定一个熔断阈值