全部产品

限流规则说明

更新时间:2021-06-18 15:30:43

本文对限流规则进行说明。

限流规则的定义包括以下维度:

限流类型

  • 接口方法:支持对某个具体的 RPC 接口或普通 Bean 的方法限流。要求在限流对象中配置接口路径名称和方法签名。

  • Web 页面:对基于 Spring MVC 的 Web 请求进行限流。要求在限流对象中配置请求 URI。

运行模式

  • 拦截模式:限流生效的模式,若匹配上规则,会将方法调用进行限制,调用配置的“限流后操作”。

  • 监控模式:仅打印限流记录日志,不实际产生限流效果。

限流算法

  • QPS 计数算法:通过限制单位时间段内允许的请求调用量进行限流。

  • 令牌桶(Token Bucket)算法:控制发送到网络上的数据的数目,并允许突发数据的发送。

有关算法的详细说明参见 限流算法说明

限流后置操作

限流操作

适用于接口方法限流

适用于Web 页面限流

解释

空处理
Y
Y
不做任何处理,返回空值。
抛出异常
Y
N
异常信息为填写的输入框内容。
跳转到指定页面
N
Y
跳转到指定的页面地址。
页面 JSON 报文
N
Y
直接将指定的 JSON 字符串在 HTML Response 中返回。默认返回内容为:
{success:false,error:"MAX_VISIT_LIMIT"}
页面 XML 报文
N
Y
直接将特定的 XML 字符串在 HTML Response中返回。默认返回内容为:
<?xml version="1.0" encoding="GBK"?><alipay><is_success>F</is_success><error>MAX_VISIT_LIMIT</error></alipay>

限流条件阈值

  • 条件模型

条件模型

限流阈值

说明

单位时间内服务访问次数或 Web 页面访问次数

QPS 计数值

根据单位时间内的请求数进行限流。

堆内存使用量

最大堆内存使用量(单位为兆MB)

根据当前堆内存使用量进行限流。

CPU 负载

100 * CPU 负载百分比

根据过去一分钟内的 CPU 平均负载进行限流。

并发线程数

最大并发线程数

根据单台机器上并发的线程数进行限流。

  • 单位时间:打印限流日志的周期。对于单位时间内访问次数的限流条件,也表示统计周期。单位为毫秒(ms)。最小值为 1000 ms。

  • 限流阈值:见上表。

  • 流量类型

    • 所有流量:对正常流量和压测流量均限流。

    • 正常流量:仅对正常流量限流。

    • 压测流量:仅对压测流量限流。

限流对象

  • 对于接口方法,配置要限流的接口路径名称和方法签名。

  • 对于 Web 页面方法,配置要限流的请求 URI。

更多详情,请参考 配置限流对象参数