配置流控规则的原理是监控应用或服务流量的QPS指标,当指标达到设定的阈值时立即拦截流量,避免应用被瞬时的流量高峰冲垮,从而保障应用高可用性。本文介绍如何配置管理流控规则,以及3种常用场景的流控配置规则。
前提条件
将应用接入AHAS应用防护,具体操作请参见接入应用方式。
背景信息
流量控制在网络传输中是一个常用的概念,常用于调整网络包的发送数据。系统需要处理的请求是随机不可控的,而系统的处理能力是有限的,因此就需要根据系统的处理能力对流量进行控制。
新建流控规则
- 登录AHAS控制台。
- 在AHAS控制台左上角,选择应用接入的地域。
- 在控制台左侧导航栏中选择 。
- 在应用防护页面的应用卡片页签单击目标应用卡片。
- 选择以下任意一种方法进入新建流控规则页面:
- 在左侧导航栏单击接口详情,在接口详情页面单击资源卡片右上角或的图标,然后在管理规则对话框中单击新增流控规则页签。
- 在左侧导航栏单击应用概览,然后单击页面下方目标接口操作列中的流控。
- 在左侧导航栏单击规则设置,在流控规则页签的右上角单击新增流控规则。
在新建流控规则对话框中配置规则信息。
单机模式
参数
描述
接口名称
待流控的资源名称。
来源应用
该规则针对的来源应用,默认来源应用设为
default
,代表不区分来源应用。若是Dubbo服务,请填写对应调用方的Dubbo applicationName,注意调用方也需要接入Sentinel。
若是Web服务,请参见扩展接口。
若是通过注解、自定义埋点,请参见常用类及其方法,ContextUtil只在调用链入口生效,即首个埋点生效。
当前账号下已经接入了流量防护的其他应用,填写
default
即表示不特殊区分。
重要来源数目不宜过多,200个以内内存使用量可控,过多则会影响性能。
统计维度
选择资源调用关系进行流控。
QPS 阈值
触发对流控接口的统计维度对象的QPS阈值。
流控效果
选择流控方式来处理被拦截的流量。
快速失败:达到阈值时,立即拦截请求。按照应用系统设置中的适配模块配置信息,进行内容返回。
预热启动:需设置具体的预热时间。详情请参见Warm Up(冷启动)。
如果系统在此之前长期处于空闲的状态,当流量突然增大的时候,该方式会让处理请求的速率缓慢增加,经过设置的预热时间以后,到达系统处理请求速率的设定值。默认会从设置的QPS阈值的1/3开始慢慢往上增加至设置的QPS值,多余请求会按照快速失败处理。
排队等待:请求匀速通过,允许排队等待,通常用于请求调用削峰填谷等场景。需设置具体的超时时间,达到超时时间后请求会快速失败。 详情请参见削峰填谷。
是否开启
打开开关表示启用该规则,关闭开关表示禁用该规则。开关修改之后会立即生效。
集群流控模式
参数
描述
是否集群流控
开启集群流控,对集群内此资源的调用总量进行限制。
接口集群总QPS
该接口预估的集群最大QPS,表示最大流量,用于为Token Server自动分配提供参考,当流量超出该值的请求会退化到单机模式。
阈值模式
可选择设置集群QPS阈值或单机QPS阈值。
集群QPS阈值:设置的阈值等同于整个集群的总阈值。
单机QPS阈值:设置的阈值等同于单机能够承受的限额,Token Server会根据连接数来计算总的阈值。
失败退化策略
当出现连接失败、通信失败或Token Server不可用等情况时,流控规则是退化到单机限流的模式或是直接通过忽略失败情况。
退化到单机限流:当出现失败的情况时,退化到根据的单机阈值来进行流控。需要设置退化单机阈值,代表单机的兜底阈值。
直接通过:当出现失败的情况时,忽略失败情形,直接通过。
单击新建。
常用场景
常用场景下的流控规则配置可参见以下示例。
场景1 流量匀速通过
请求流量具有波峰波谷的特点,流控的原理是将前面的峰值流量延迟(排队时长)到后面再处理,既能最大化满足所有请求,又能保证用户体验。详情请参见削峰填谷。
例如,统计维度选择当前接口,流控效果选择排队等待,配置匀速模式下请求QPS阈值为5。系统则每200 ms处理一条请求,多余的处理任务将排队;同时设置了等待时长为5s,则预计排队时长超过5s的处理任务将快速失败。如下图所示。
场景2 资源争抢时,留足资源给优先级高的接口
read_db
和write_db
这两个资源分别代表数据库读写。为保证提交的数据不丢失,write_db
接口优先级更高。当写库操作过于频繁时,读数据的请求会被限流。详情请参见关联限流。例如,统计维度选择关联接口,流控效果选择快速失败,并发数阈值为10,则当
write_db
资源的QPS超过10之后,read_db
会被限流以保证留足资源给write_db
,避免write_db
数据丢失。如下图所示。场景3 预热启动避免大流量冲击
流控的原理是在流量入口处将流量控制住缓缓放进来,可以让通过的流量缓慢增加,在一定时间内逐渐增加到阈值上限,以便系统可以预热。最适合突发流量的场景。详情请参见Warm Up(冷启动)。
例如,统计维度选择链路入口,流控效果选择预热启动,QPS阈值为60,预热时间为2s,预热流控方式下,默认会从设置的QPS阈值的1/3开始慢慢往上增加至QPS设置值。本示例中,当入口的QPS超过20(即60÷3)时,会在预热的2s内缓慢增长至60。在如下图所示。
管理流控规则
在流控规则页面,您可以启用、禁用、编辑或删除流控规则。
单流控规则启用/禁用:
在流控规则页面,找到目标资源下对应的流控规则,单击状态栏的启用开关,可快速启用或禁用该规则。
多流控规则批量启用/禁用:
在流控规则页面,勾选多个流控规则,单击批量启用或批量禁用,可快速启用或禁用多个规则。
编辑规则:
在流控规则页面,找到目标资源下对应的流控规则,单击操作栏的编辑,可修改该规则的相关信息。
删除规则:
在流控规则页面,找到目标资源下对应的流控规则,单击操作栏的删除。