服务熔断

服务熔断 #

什么是服务熔断 #

简介 #

当服务中的服务端接口不稳定,出现频繁超时或错误时,可能会引起服务调用雪崩。我们可以对应用开启服务熔断功能,使有故障的服务端及时返回错误,并释放系统资源,提高用户体验和系统性能。

熔断规则 #

通往各个⽬标服务单独设置 熔断器,多个服务间调⽤熔断器记录的次数互相隔离,每个请求周期熔断器监控请求的执⾏状态并记录:

  • 请求总次数
  • 错误次数
  • 成功次数
  • 连续成功次数
  • 连续失败次数

image-20211013161421838

熔断器的状态介绍 #

根据请求响应状态码判断调⽤是否成功 4xx、5xx , 4xx以上状态码统⼀定义为失败, 当失败次数达到配置的规则时触发熔断。

熔断器有三种状态

  • 关闭状态:当熔断器处于关闭状态时,请求是可以被放⾏的;当熔断器统计的失败次数触发开关时,转为打开状态。
  • 打开状态:当熔断器处于打开状态时,所有请求都是不被放⾏的,直接返回失败;只有在经过⼀个设定的时间窗⼝周期后,熔断器才会转换到半开状态。
  • 半开状态:当熔断器处于半开状态时,当前只能有⼀个请求被放⾏;这个被放⾏的请求获得远端服务的响应后,假如是成功的,熔断器转换为关闭状态,否则转换到打开状态。

image-20211013155037065

熔断事件列表 #

image-20211013155301191

当满足熔断规则时,熔断器打开,触发熔断,同时会生成熔断事件。“熔断事件列表”对所有熔断进行了记录,在此处可以查看到熔断的具体详情,包括

  • 熔断时间
  • 熔断的服务信息,包括:当前服务和下游异常服务
  • 触发熔断的具体规则,包括:
    • 连续错误次数达到阈值
    • 错误率达到阈值
    • 连续错误次数或错误率达到阈值
    • 链路错误次数和错误率共同达到阈值

接下来阐述熔断规则相关内容。

熔断规则 #

注意,服务拥有默认熔断规则

为了更好的保护服务和系统稳定性,我们为服务配置了默认的熔断策略。规则如下:连续错误次数达到阈值熔断。错误次数阈值 5次,半开状态请求数量 1个,关闭状态清除周期 600秒,半开触发延时 30秒,请求超时 5秒。

如果你需要更宽松的熔断策略,需自行配置,否则将采用默认熔断规则。

规则列表 #

image-20211013160533765

熔断规则列表展示了平台已配置的熔断规则列表。同时你还需要注意:为了服务的稳定性,我们给服务设置了默认的熔断规则。正如上面所提示的那样。

为了更好的理解熔断策略,你可以参考文章开头所讲的“什么是服务熔断”。

熔断规则配置 #

通过点击“添加熔断规则”或“编辑”按钮,我们可以得到如下的配置表单:

image-20211013160741936

在此处,你可以对熔断规则进行详细配置。再次提示,为了更好地进行熔断配置,你可以本文开头所提的“什么是服务熔断”相关章节。

部分熔断参数配置说明如下:

参数说明
maxRequests熔断器半开时允许运⾏的请求数量 默认设置为:1,请求成功则断路器关闭
Interval熔断器处于关闭状态时的清除周期,默认600s,如果⼀直是关闭则不清除请求的次数信息
timeout熔断器出于打开状态时,经过多久触发为半开状态,默认30s,之后有请求则会触发状态