配置流控规则

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

背景信息

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

新建流控规则

  1. 登录EDAS控制台

  2. 在左侧导航栏,单击应用管理 > 应用列表,在顶部菜单栏选择地域并在页面上方选择所属微服务空间,在集群类型下拉列表,选择K8s集群,然后在页面单击具体的应用名称。

  3. 在左侧导航栏中选择限流降级 > 规则管理

  4. 单击流控规则页签,单击新增流控规则

  5. 新增流控防护规则对话框配置参数完成后,单击新增

    1. 选择防护场景

      新建流控规则

      配置项

      描述

      接口名称

      待流控的资源名称。

    2. 配置防护规则

      image.png

      配置项

      描述

      是否集群流控

      是否开启集群流控,即对集群内此资源的调用总量进行限制。

      是否开启

      打开开关表示启用该规则,关闭开关表示禁用该规则。

      来源应用

      该规则针对的来源应用,默认来源应用为default,代表不区分来源应用。

      统计维度

      统计QPS的维度,包含以下三种维度:

      • 当前接口:用于接口调用流控。该接口被来源应用调用次数超过阈值时,会对当前接口来自于来源应用的请求进行流控。

      • 关联接口:用于资源争抢情况。当关联接口被来源应用调用QPS超过阈值时,会对当前接口来自于来源应用的请求进行流控。

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

      • 链路入口:用于应用内Call Stack调用流控情况。当Call Stack入口被来源应用调用QPS数超过阈值时,会对当前接口来自于来源应用的请求进行流控。

      单机QPS阈值

      应用或服务流量的QPS指标。

      流控效果

      流量控制的方式,包含以下三种方式:

      • 快速失败:常规流控方式,当前接口超过设置阈值的流量,直接返回默认流控信息,如文本、静态页面等。

      • 预热启动:适用于避免突增流量瞬间冲击系统的场景。请求流量会在预热时间内缓步增加至阈值量级,多余请求会直接拒绝。更多信息,请参见预热启动(Warm Up)

      • 排队等待:适用于流量匀速器场景。触发流控后,多余请求会按照顺序等待,达到超时时间后失败。更多信息,请参见削峰填谷

    3. 配置限流行为

      择接口类型后,单击新增行为配置Web行为或RPC行为。

      image.png

      配置成功后,新的隔离规则将出现在流控规则列表中。

管理规则

在规则列表中,您可以编辑、删除、启用、禁用、批量启用或批量禁用规则。

  • 如需编辑规则,单击目标规则右侧操作列中的编辑,并按需修改规则内容。

  • 如需删除规则,单击目标规则右侧操作列中的删除,并在对话框中单击确定

  • 如需启用或禁用规则,打开或关闭目标规则右侧状态列中的开关,并在对话框中单击确定

  • 如需批量启用或禁用规则,选中要操作的一个或多个规则,单击页面底部的批量开启批量关闭,并在对话框中单击确定