流控是 AHAS 提供的一种应用高可用防护能力。其原理是监控应用流量的 QPS 或线程数等指标,当达到您指定的阈值时立即拦截流量,以避免应用被瞬时的流量高峰冲垮,从而保障应用高可用性。

背景信息

流量控制在网络传输中是一个常用的概念,常用于调整网络包的发送数据。到来请求往往是随机不可控的,而系统的处理能力是有限的,因此就需要根据系统的处理能力对流量进行控制。流控规则的配置通常有以下场景:

新建流控规则

  1. 登录 AHAS 控制台
  2. 在 AHAS 控制台左上角,选择应用接入的地域
  3. 在控制台左侧导航栏中选择流控降级 > 应用流控降级
  4. 应用列表页面单击目标应用卡片。
  5. 选择以下任意一种方法进入新建流控规则页面:
    • 在左侧导航栏单击监控详情,在监控详情页面单击资源卡片右上角 ,然后在新增规则对话框中选择流控规则流控规则页签。
    • 在左侧导航栏单击簇点链路,然后单击目标资源操作列中的流控
    • 在左侧导航栏单击流控规则,然后在页面右上角单击新增流控规则
  6. 新建流控规则对话框中配置规则信息。
    图 1. 新建流控规则

    新建流控规则
    • 资源名称:即待流控的资源名称。
    • 来源应用:即该规则针对的来源应用,默认来源应用设为 default,代表不区分来源应用。
    • 阈值类型:可选择 QPSQPS 或者线程数线程数是指按照资源的并发线程数(即该资源正在执行的线程数)进行流量控制。
    • 流控模式:选择资源调用关系进行流控。资源关系有:直接关联链路s三种。
      • 直接:直接控制来自流控应用中调用来源的访问流量,如果流控应用default 则不区分调用来源。
      • 关联:控制当前资源的关联资源的流量。

        例如,read_dbwrite_db 这两个资源分别代表数据库读写。可以给 read_db 设置限流规则,设置关联资源write_db。这样当写库操作过于频繁时,读数据的请求会被限流。

      • 链路:控制该资源所在的调用链路的入口流量。选择链路后需要继续配置入口资源,即该调用链路入口的上下文名称。
    • 流控方式:当阈值类型阈值类型QPS 时,可以选择流控方式来处理被拦截的流量。
      • 快速失败:达到阈值时,立即拦截请求。
      • Warm Up需设置具体的预热时间。

        如果系统在此之前长期处于空闲的状态,当流量突然增大的时候,该方式会让处理请求的速率缓慢增加,经过设置的预热时间以后,到达系统处理请求速率的设定值。默认会从设置的 QPS 阈值的 1/3 开始慢慢往上增加至 QPS 设置值。

      • 排队等待:请求匀速通过,允许排队等待,通常用于消息队列削峰填谷等场景。需设置具体的超时时间,达到超时时间后请求会失败。

        例如,QPS 配置为 5,则代表请求每 200 ms 才能通过一个,多出的请求将排队等待通过。超时时间代表最大排队时间,超出最大排队时间的请求将会直接被拒绝。

    • 是否开启:打开开关表示启用该规则,关闭开关表示禁用该规则。
  7. 单击新建

管理流控规则

流控规则页面,您可以启用、禁用、编辑或删除流控规则。

  • 单流控规则启用/禁用:

    流控规则页面,找到目标资源下对应的流控规则,单击状态状态栏的启用开关,可快速启用或禁用该规则。

  • 多流控规则批量启用/禁用:

    流控规则页面,勾选多个流控规则,单击批量启用批量禁用,可快速启用或禁用多个规则。

  • 编辑规则:

    流控规则页面,找到目标资源下对应的流控规则,单击操作栏的编辑,可修改该规则的相关信息。

  • 删除规则:

    流控规则页面,找到目标资源下对应的流控规则,单击操作栏的删除删除