限流
文章平均质量分 83
BellCalderon
这个作者很懒,什么都没留下…
展开
-
在项目中使用 (Redis + Lua)实现分布式应用限流,基于自定义注解方式实现 实战限流
1、新建脚本放在该项目的 resources 目录下,起名 limit.lua 即可 local key = KEYS[1] local limit = tonumber(ARGV[1]) local current = tonumber(redis.call('get', key) or "0") if current + 1 > limit then return 0 else redis.call("INCRBY", key,"1") redis.call("...原创 2020-06-17 00:59:33 · 565 阅读 · 0 评论 -
在项目中使用(guava的RateLimiter)基于自定义注解方式实现 实战限流
1、单体项目可以使用这种方式实现限流,而分布式和集群项目是 基于基于Redis+Lua的分布式限流 常用的限流算法有漏桶算法和令牌桶算法,guava的RateLimiter使用的是令牌桶算法,也就是以固定的频率向桶中放入令牌,例如一秒钟10枚令牌,实际业务在每次响应请求之前都从桶中获取令牌,只有取到令牌的请求才会被成功响应,获取的方式有两种:阻塞等待令牌或者取不到立即返回失败,下图来自网上: 本次实战,我们用的是guava的RateLimiter,场景是spring mvc在处理请求时候,从桶中申请原创 2020-06-16 23:30:17 · 1030 阅读 · 1 评论