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