配置流控规则
配置流控规则的原理是监控应用或服务流量的QPS指标,当指标达到设定的阈值时立即拦截流量,避免应用被瞬时的流量高峰冲垮,从而保障应用高可用性。
功能入口
- 登录微服务治理控制台。
- 在控制台左侧导航栏中选择应用治理。
- 在应用治理页面的应用卡片页签单击目标应用卡片。
- 在左侧导航栏选择流量防护 - 规则管理,在流控规则页签单击新增流控规则,然后在弹出的对话框中配置规则信息,参数说明如下。
- 设置完成单击新增。
页面参数说明如下:
参数 | 描述 |
---|---|
接口名称 | 待流控的资源名称。 |
来源应用 | 该规则针对的来源应用,默认来源应用设为default,代表不区分来源应用。 |
统计维度 | 选择资源调用关系进行流控。 • 当前接口 :直接控制来自来源应用中调用来源的访问流量,如果来源应用为default则不区分调用来源。通常应用于流量匀速通过的场景。 • 关联接口 :控制当前资源的关联资源的流量。通常应用于资源争抢时,留足资源给优先级高接口的场景。 • 链路入口 :控制该资源所在的调用链路的入口流量。选择链路入口后需要继续配置 入口资源 ,即该调用链路入口的上下文名称。通常应用于预热启动避免大流量冲击的场景。 |
单机QPS阈值 | 触发对流控接口的统计维度对象的QPS阈值。 |
流控效果 | 选择流控方式来处理被拦截的流量。 • 快速失败 :达到阈值时,立即拦截请求。按照应用系统设置中的适配模块配置信息,进行内容返回。 • 预热启动 :需设置具体的预热时间。如果系统在此之前长期处于空闲的状态,当流量突然增大的时候,该方式会让处理请求的速率缓慢增加,经过设置的预热时间以后,到达系统处理请求速率的设定值。默认会从设置的QPS阈值的1/3开始慢慢往上增加至设置的QPS值,多余请求会按照快速失败处理。 • 排队等待 :请求匀速通过,允许排队等待,通常用于请求调用削峰填谷等场景。需设置具体的超时时间,达到超时时间后请求会快速失败。 |
是否开启 | 打开开关表示启用该规则,关闭开关表示禁用该规则。开关修改之后会立即生效。 |
使用场景
常用场景 1 :当资源争抢时,需留足资源给优先级高的接口
为了确保提交的数据不丢失,我们将数据库读写分离,并给写库分配了更高的优先级。对于读取数据的请求,如果过于频繁,会对写入操作进行限流。
在新建流控防护规则对话框中配置以下规则信息:
- 统计维度选择关联接口。
- 流控效果选择快速失败。
- 关联接口阈值为10。
当写库操作的QPS超过10之后,读库操作会被限流以保证留足资源给写库操作,避免写库操作数据丢失。
常用场景 2 :预热启动避免大流量冲击
采用流量控制的方法,在流量入口处进行控制,以缓慢增加的方式让流量通过,在一定时间内达到阈值上限,以便系统能够预热。这种方法最适合应对突发流量的场景。
在新建流控防护规则对话框中配置以下规则信息:
- 统计维度选择链路入口。
- 流控效果选择预热启动。
- 单机QPS阈值为90。
- 预热时间为10s。
预热流控方式下,默认会从设置的QPS阈值的1/3开始慢慢往上增加至QPS设置值。本示例中,当入口的QPS超过30(即90÷3)时,会在预热的10s内缓慢增长至90。
常用场景 3 :削峰填谷,使流量匀速通过
请求流量具有波峰波谷的特点,流量管理的原理是将前期的高峰流量延迟到后期再处理,以最大化满足所有请求,并保证用户体验。
在新建流控防护规则对话框中配置以下规则信息:
- 统计维度选择当前接口。
- 流控效果选择排队等待。
- 配置匀速模式下请求单机QPS阈值为5。
- 等待时长为5s。