kong的插件: Response Rate Limiting
简述
这也是一种限流的插件和Rate Limiting相似,但是有一定的区别。Response Rate Limiting是由后端服务控制频率的减少,而Rate Limiting是由Kong完成的。
操作起来
环境准备
你应该有一个能正常使用的service和route,如果没有可以参考https://blog.csdn.net/u014686399/article/details/100084613,我的试验就是基于这个的
启用插件
/routes/1972af43-5cb0-4c84-b15e-b96a2da52893/plugins POST
{
"name":"response-ratelimiting",
"config":{
"limits":{
"xmm":{
"day":10
}
}
}
}
- 1972af43-5cb0-4c84-b15e-b96a2da52893 这是route的id
- response-ratelimiting 插件的名字
- xmm 这个是自定义的, 限制的名字
- day这是表示这个路由一天能被访问10次。具体还可以按照分钟,秒,小时,年等官网
插件的说明
如果路由或者服务上没有应用认证的插件(如base-auth,key-auth),kong会议client ip的维度统计。如果应用可会以consumer的维度统计。
后端服务改造一下
默认后端服务会接收到 X-Ratelimit-Remaining-Xmm 请求头,表示还有剩余多少次访问,其中Xmm
是我们定义的limit的名字。我们可以设置X-Kong-Limit
作为回应,表示在剩余值的基础上减少多少。如 X-Kong-Limit: XMM=2,表示减少2;X-Kong-Limit: XMM=0,表示不减少;
下面是我的代码:
def get(self):
self.print_header()
self.set_header("X-Kong-Limit", "xmm=2") #重点部分
self.render("index.html")
测试一下
图中表示,剩余值设置的是20,现在还剩8次
我再点击8次
先写到这里了,有问题进QQ群630300475
还没有评论,来说两句吧...