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

前提条件

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

背景信息

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

降级规则配置通常用于弱依赖降级场景,详情请参见弱依赖降级

功能入口

  1. 登录AHAS控制台
  2. 在AHAS控制台左上角,选择应用接入的地域
  3. 在控制台左侧导航栏中选择流量防护 > 应用防护
  4. 应用防护页面单击目标应用卡片。
  5. 选择以下任意一种方法进入新建降级规则页面:
    • 在左侧导航栏单击应用概览,然后单击页面下方目标接口操作列中的降级
    • 在左侧导航栏单击接口详情,在接口详情页面单击资源卡片右上角新增管理规则的图标,然后在管理规则对话框中单击新增降级规则
    • 在左侧导航栏单击规则设置,单击降级规则页签,在页面右上角单击新增降级规则
  6. 新建降级规则对话框中配置规则信息。
    说明 慢调用比例、统计窗口时长、最小请求数目等配置项需要Java SDK版本 ≥ 1.6.0或Java Agent版本 ≥ 1.7.5。

常用场景1 慢调用比例

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

新建降级规则对话框中配置如下示例规则信息。

  • 填写接口名称
  • 统计窗口时长设置为1秒,最小请求数目设置为10。
  • 阈值类型选择慢调用比例
  • 设置慢调用RT值为1000 ms,超过1000 ms则判定为慢请求。
  • 降级阈值设置为0.8,表示触发熔断的慢调用比例阈值为80%;熔断时长为10秒。
creat_demotion_rule_example

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

常用场景2 异常比例

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

新建降级规则对话框中配置如下示例规则信息。

  • 填写接口名称
  • 统计窗口时长设置为1秒,最小请求数目设置为10。
  • 阈值类型选择异常比例
  • 降级阈值设置为0.8,表示触发熔断的异常比例阈值为80%;熔断时长为10秒。
creat_demotion_rule_example2

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

更多信息

新建降级规则页面的参数说明如下。

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

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

  • 选择以异常比例作为阈值,需要在降级阈值中设置触发熔断的异常比例,取值范围为0~1的小数。

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

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