公司目前在市面上有大量的机器在运转。每天对接到服务器就有数百万的请求过来,无形中消耗了带宽和计算资源。可以通过一定的策略来过滤掉部分请求,保证服务器的稳定。
扩展阅读:
1.当然这层逻辑既可以落到接入层,也可以落到业务层。这里为了不影响线上其它业务,保证系统的稳定和代码可追溯。也方便实行最小验证,我把它落在业务层。
2.限流的算法有多种,例如:计数器、令牌桶、漏桶。这次用到的是计数器,也相对简单。
计数器算法就是在某个时间周期内,接入的请求数自增。超过上限的请求全部抛掉。
1.首先创建lua脚本(ratelimit.lua)
local
2.获取lua脚本的摘要
redis-cli script load "$(cat ratelimit.lua)"
"123456789b24c879d926f3a38cb21a3fd9062e55"
3.定义装饰器
# 异步限流策略 2个/10秒
示例
@async_ratelimit
"欢迎关注我的公众号,一起共同进步"