soul源码学习(十六)-限流插件之rate_limiter(上)

开启配置

  1. 打开rate_limter开关,并配置redis地址
    在这里插入图片描述
    这里使用单机redis模式即可

  2. 配置rate_limiter插件的选择器和路由
    在这里插入图片描述在这里插入图片描述
    这里我们只针对一个具体的url进行限流,其中令牌桶的容量设置成100,速率设置成1

测试

测试前,启动soul-examples-http,我们针对该客户端进行测试,使用工具为jmeter

  1. 先进行单个请求的发送,观察redis的变化
    在这里插入图片描述
    可以看到rate_limiter插件会往redis中存入两个key,一个是时间戳,一个是令牌桶的总容量,由于访问了一个,所以目前是99,如果当前没有访问请求,过一段时间后,这两个key会自动过期删除,
  2. 使用jmeter进行压测,选取1s中并发执行100次,这是观察jmeter的结果
    在这里插入图片描述
    可以发现此时没有报异常,redis中令牌桶的值为1(在1s内又补充了1个令牌):
    在这里插入图片描述
    基本上将令牌桶使用完毕

我们将jmeter设置1s中并发执行101次,将生成的那1个token也消耗掉,那么此时压测结果应该不报错,并且redis中的令牌桶数量应该为0,测试结果如下:
在这里插入图片描述
在这里插入图片描述
与猜想的结果一致

我们再次将jmeter设置1s中并发执行102次,那么根据之前的推断,此时jmeter压测结果应该有一次报错,redis中额令牌数量应该为0,测试结果如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
后端的输出日志如下:
在这里插入图片描述
与猜想的结果一致,由此可知限流插件起了作用

总结

本小节简单对rate_limiter插件进行简单了配置与压测,配置中的两个重要参数容量和填充速率, 容量用来应对突发的大量请求,填充速率用来限制并发请求数,下一小节将会具体看看rate_limiter插件的具体算法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值