Kong的插件:Rate Limiting
简述
这个插件是限流使用的,如果我们后端服务扛不住前端的流量或者要防止某些人恶意的使用流量攻击我们,可以考虑一下限流
操作起来
试验准备
- 要有一个可用的service和route,如果没有可以参照https://blog.csdn.net/u014686399/article/details/100084613,我的试验也是基于这个的
启用插件
/services/bd7a85b9-27e2-4f66-80cd-980976bdb4ff/plugins POST
{
"name":"rate-limiting",
"config":{
"second": 20
}
}
- bd7a85b9-27e2-4f66-80cd-980976bdb4ff 这是service的id
- rate-limiting这是插件的名字
- config是用来配置限流的程序, second是说每秒多少,插件还支持分钟,小时,天,年等插件官网
插件说明
插件支持三种策略来记录请求的频率, 分别是local
,cluster
,redis
- cluster,这是默认的方式,也是在要求频率控制精确的场景下,比较提倡的方式。这种方式把频率都记录在数据库中,每次请求过来都要查一下数据库,因此极大的影响了效率。我也简单对比了一下:
启用插件前:
启用插件后: - redis, 这种需要引入redis,把频率记录在redis里面,每次请求过来都要查询一下redis,性能肯定比cluster快,但是因为引入redis,要考虑维护redis的成本
- local,在对精度要求不高的场景下,官方推荐这种方式,在性能和维护上都很不错。如果是在DB-less的场景只能选择redis和local了
测试一下
使用jmeter模拟大访问量的场景:
当大流量的时候就会有429的返回码
先写到这里了,有问题进QQ群630300475
还没有评论,来说两句吧...