配置熔断规则

AHAS的熔断规则可以监控应用内部或者下游依赖的响应时间或异常比例,当达到指定的阈值时立即降低下游依赖的优先级。在指定的时间内,系统不会调用该不稳定的资源,避免应用受到影响,从而保障应用高可用性。当指定时间过后,再重新恢复对该资源的调用。

前提条件

已在AHAS应用防护中接入应用,具体操作请参见接入应用方式

背景信息

除了流量控制以外,对调用链路中不稳定的方法或者下游依赖进行熔断也是重要措施之一。由于调用关系的复杂性,如果调用链路中的某一环节出现了错误,会导致这个请求失败,甚至会放大不稳定性,导致整个链路无法正常服务。熔断功能会在调用链路中某个方法出现不稳定时(例如某方法出现Timeout或异常比例升高),对这个方法的调用进行限制,让请求快速失败,避免此错误影响整个链路。关于熔断的相关信息,请参见熔断结构图

熔断规则配置通常用于弱依赖降级场景,更多信息,请参见弱依赖降级

功能入口

  1. 登录AHAS控制台
  2. 在AHAS控制台左上角,选择应用接入的地域。
  3. 在控制台左侧导航栏中选择流量防护 > 应用防护
  4. 应用防护页面的应用卡片页签单击目标应用卡片。
  5. 在左侧导航栏单击应用概览,然后单击页面下方目标接口操作列中的熔断
  6. 熔断规则页签中配置规则信息。
    说明 慢调用比例、统计窗口时长、最小请求数目等配置项需要Java SDK版本≥1.6.0或Java Agent版本≥1.7.5。

常用场景1:慢调用熔断示例

例如调用第三方服务,但响应时间太慢,会影响当前接口,所以对其进行熔断操作。

新增熔断规则新增规则对话框中配置以下示例规则信息。

参数示例值描述
接口名称test接口名称。
统计窗口时长1统计时长为1秒。
阈值类型慢调用比例选择以慢调用比例作为阈值。
慢调用RT1000超过1000 ms则判定为慢请求。
降级阈值80%触发熔断的慢调用比例阈值为80%。
熔断时长10熔断时长有10秒。
最小请求数目10触发熔断的最小请求数目为10。
熔断恢复策略单次探测恢复经过熔断时长后,熔断器会对接下来的一个请求进行探测,若该请求符合预期(不为慢调用或没有异常),则结束熔断;否则重新回到熔断阶段。

规则开启后,在统计时长1秒内,当请求数目大于10,并且慢调用的比例大于80%的时候,则在接下来10秒的熔断时长内,请求都会快速失败。经过10秒后熔断器会进入探测恢复状态,若接下来的一个请求响应时间小于设置的1000 ms则结束熔断,若大于1000 ms则会再次被熔断。

常用场景2:异常熔断示例

例如第三方内容展示时,系统会出现异常,当异常比例较高时,可以对其进行熔断操作,以保证更好的用户体验。

新增熔断规则新增规则对话框中配置以下示例规则信息。

参数示例值描述
接口名称test接口名称。
统计窗口时长1统计时长为1秒。
阈值类型异常比例选择以异常比例作为阈值。
降级阈值80%触发熔断的异常比例阈值为80%。
熔断时长10熔断时长有10秒。
最小请求数目10触发熔断的最小请求数目为10。
熔断恢复策略单次探测恢复经过熔断时长后,熔断器会对接下来的一个请求进行探测,若该请求符合预期(不为慢调用或没有异常),则结束熔断;否则重新回到熔断阶段。

规则开启后,在统计时长1秒内,当请求数目大于10,并且异常的比例大于80%的时候,则在接下来10秒的熔断时长内,请求都会快速失败。经过10秒后熔断器会进入探测恢复状态,若接下来的一个请求没有异常则结束熔断,否则会再次熔断。

更多信息

新增熔断规则新增规则对话框的参数说明如下。

参数描述
接口名称适用该规则的应用资源。
统计窗口时长统计的时间窗口长度,取值范围为1秒~120分钟。
最小请求数目触发熔断的最小请求数目,若当前统计窗口内的请求数小于此值,即使达到熔断条件规则也不会触发。
阈值类型选择以慢调用比例异常比例作为阈值。
  • 选择以慢调用比例作为阈值,需要设置允许的慢调用RT(即最大的响应时间),请求的响应时间大于该值则统计为慢调用。

    降级阈值中设置触发熔断的慢调用比例。规则开启后,在单位统计时长内请求数目大于设置的最小请求数目,并且慢调用的比例大于阈值,则接下来的熔断时长内请求会自动被熔断。经过熔断时长后熔断器会进入探测恢复状态,若接下来的一个请求响应时间小于设置的慢调用RT则结束熔断,若大于设置的慢调用RT则会再次被熔断。

  • 选择以异常比例作为阈值,需要在降级阈值中设置触发熔断的异常比例。

    规则开启后,在单位统计时长内业务异常数目大于设置的最小请求数目,并且异常的比例大于阈值,则接下来的熔断时长内请求会自动被熔断。

熔断时长即熔断触发后持续的时间。资源进入熔断状态后,在配置的熔断时长内,请求都会快速失败。
熔断恢复策略熔断器进入恢复阶段(半开启状态)的恢复策略。
  • 单次探测恢复:经过熔断时长后,熔断器会对接下来的一个请求进行探测,若该请求符合预期(不为慢调用或没有异常),则结束熔断;否则重新回到熔断阶段。
  • 渐进式恢复:需要设置恢复阶段数每步最小通过数目
    • 经过熔断时长后,熔断器按照设定的恢复阶段数进行渐进式恢复,若该阶段内请求达到一定量即每步最小通过数目,则触发检查。检查的请求若都未超过阈值,则逐步提高允许通过的请求比例,直到请求完全恢复;若某一步的指标超出阈值,则重新回到熔断阶段。
    • 请求比例T=100/恢复阶段数N,则第一阶段请求比例为T,第二阶段为2T……直到100%。
    • 例如恢复阶段数为3,每步最小通过数目为5,则三个阶段分别按照33%、67%和100%的比例放入请求,当每阶段的请求数目大于等于5时进行检查,若请求的指标未超阈值则进入下一恢复阶段,直至完全恢复。
    说明 渐进式恢复策略功能需要Java SDK版本≥1.6.2。