1. 程式人生 > >redis做分布式服務限流

redis做分布式服務限流

bsp class 分布式服務 核心 () 實現 分布式 try mit

1.單機限流

使用guava提供工具庫裏的RateLimiter類(內部采用令牌捅算法實現)進行限流

<!--核心代碼片段-->
private RateLimiter rateLimiter = RateLimiter.create(400);//400表示每秒允許處理的量是400
 if(rateLimiter.tryAcquire()) {
   
 

分布式限流 

redis中記錄用戶的請求計數和一個周期內的第一次請求時間(可以以1分鐘為一個周期)

比較請求時間是否在一個周期內,而且請求計數<閥值,則成功;否則返回“請求過於頻繁”!

1.設置一個filter ,過濾所有請求,對於請求進行限流過濾

redis做分布式服務限流