本文对限流规则进行说明。
限流规则的定义包括以下维度:
限流类型
接口方法:支持对某个具体的 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中返回。默认返回内容为:
|
限流条件阈值
条件模型
条件模型 | 限流阈值 | 说明 |
---|---|---|
单位时间内服务访问次数或 Web 页面访问次数 | QPS 计数值 | 根据单位时间内的请求数进行限流。 |
堆内存使用量 | 最大堆内存使用量(单位为兆MB) | 根据当前堆内存使用量进行限流。 |
CPU 负载 | 100 * CPU 负载百分比 | 根据过去一分钟内的 CPU 平均负载进行限流。 |
并发线程数 | 最大并发线程数 | 根据单台机器上并发的线程数进行限流。 |
单位时间:打印限流日志的周期。对于单位时间内访问次数的限流条件,也表示统计周期。单位为毫秒(ms)。最小值为 1000 ms。
限流阈值:见上表。
流量类型:
所有流量:对正常流量和压测流量均限流。
正常流量:仅对正常流量限流。
压测流量:仅对压测流量限流。
限流对象
对于接口方法,配置要限流的接口路径名称和方法签名。
对于 Web 页面方法,配置要限流的请求 URI。
更多详情,请参考 配置限流对象参数。
在文档使用中是否遇到以下问题
更多建议
匿名提交