限流是對 出入流量 進行控制 , 防止大量流入,導致資源不足,系統不穩定。
限流系統是對資源訪問的控制組件 , 控制主要有兩個功能 , 限流策略和熔斷策略,對不同的系統有不同的熔斷策略訴求,
有的系統希望直接拒絕、有的系統希望排隊等待、有的系統希望服務降級、有的系統會定制自己的熔斷策略,這裏只對 限流策略 這個功能做詳細的設計。
Guava RateLimiter提供了令牌桶算法實現:平滑突發限流(SmoothBursty) 和 平滑預熱限流(SmoothWarmingUp)實現
即壹個時間窗口內的請求數,如想限制某個接口/服務 每秒/每分鐘/每天的 請求數/調用量。如壹些基礎服務會被很多其他系統調用,
比如商品詳情頁服務會調用基礎商品服務調用,但是怕因為更新量比較大,將基礎服務打掛,這時我們需要對每秒/每分鐘的調用量進行限速;
此次控制分布式瞬發限流的設計類似於 窗口最大請求數設計業務請求,不滿足類似於Guava RateLimiter中的特性( 瞬發限流特性 )
接下來將實現壹種分布式 瞬發限流的實現 (令牌桶算法實現與RateLimiter類似,但基於分布式的實現)
distributed-current-limiter