配置流控规则的原理是监控应用或服务流量的QPS指标,当指标达到设定的阈值时立即拦截流量,避免应用被瞬时的流量高峰冲垮,从而保障应用高可用性。本文介绍如何配置和管理流控规则。

背景信息

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

新建流控规则

  1. 登录EDAS控制台
  2. 执行以下操作之一以进入应用详情页面:
    • 在左侧导航栏选择资源管理 > 集群,在集群页面的容器服务K8s集群页签上单击集群ID或名称,然后在集群详情页面的应用列表区域单击具体应用名称。
    • 在左侧导航栏选择应用管理 > 应用列表,在应用列表页面单击具体容器服务K8s集群应用的应用名称。
  3. 在左侧导航栏中选择限流降级 > 规则管理
  4. 单击流控规则页签,然后在页面右上角单击新增流控规则
  5. 新建流控规则对话框中输入以下规则信息并单击新建
    新建流控规则
    • 接口名称:待流控的资源名称。
    • 是否集群流控:是否开启集群流控,即对集群内此资源的调用总量进行限制。
    • 来源应用:该规则针对的来源应用,默认来源应用设为default,代表不区分来源应用。
    • 统计维度:统计QPS的维度。
      • 当前接口:用于接口调用流控。该接口被来源应用调用次数超过阈值时,会对当前接口来自于来源应用的请求进行流控。
      • 关联接口:用于资源争抢情况。当关联接口被来源应用调用QPS超过阈值时,会对当前接口来自于来源应用的请求进行流控。

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

      • 链路入口:用于应用内Call Stack调用流控情况。当Call Stack入口被来源应用调用QPS数超过阈值时,会对当前接口来自于来源应用的请求进行流控。
    • 单机QPS阈值:应用或服务流量的QPS指标。
    • 流控效果
      • 快速失败:常规流控方式,当前接口超过设置阈值的流量,直接返回默认流控信息,如文本、静态页面等。
      • 预热启动:适用于避免突增流量瞬间冲击系统的场景。请求流量会在预热时间内缓步增加至阈值量级,多余请求会直接拒绝。详情请参见Warm Up(冷启动)
      • 排队等待:适用于流量匀速器场景。触发流控后,多余请求会按照顺序等待,达到超时时间后失败。详情请参见削峰填谷
    • 是否开启:打开开关表示启用该规则,关闭开关表示禁用该规则。
    配置成功后,新的隔离规则将出现在流控规则列表中。

管理规则

规则管理页面的规则列表中,您可以编辑、删除、启用、禁用、批量启用或批量禁用规则。

  • 如需编辑规则,单击目标规则右侧操作列中的编辑,并按需修改规则内容。
  • 如需删除规则,单击目标规则右侧操作列中的删除,并在对话框中单击确定
  • 如需启用或禁用规则,打开或关闭目标规则右侧状态列中的开关,并在对话框中单击确定
  • 如需批量启用或禁用规则,选中要操作的一个或多个规则,单击页面底部的批量启用批量禁用,并在对话框中单击确定