當前位置:名人名言大全網 - 短信平臺 - SpringCloud使用Zuul限流(spring-cloud-zuul-ratelimit)

SpringCloud使用Zuul限流(spring-cloud-zuul-ratelimit)

簡述:

Spring Cloud Zuul RateLimit項目Github地址:

/marcosbarbero/spring-cloud-zuul-ratelimit

該包實現了在Zuul對每個服務進行限流

微服務開發中有時需要對API做限流保護,防止網絡攻擊,比如做壹個短信驗證碼API,限制客戶端的請求速率能在壹定程度上抵禦短信轟炸攻擊,降低損失。微服務網關是每個請求的必經入口,非常適合做壹些API限流、認證之類的操作,本文介紹Zuul如何進行限流操作

個人建議:如果在網關做細粒度的限流,後面微服務業務變化的話網關也要跟著變,而且後面涉及到微服務之間的調用,這個網關限流做不了。所以在網關上不能做細粒度的限流,網關主要為服務器硬件設備的並發處理能力做限流,細粒度的限流還是交給專門的熔斷限流微服務去處理,這樣利於各微服務之間的解構和各團隊的協同開發

1、限流策略

2、可用的實現

Bucket4j實現需要相關的bean @Qualifier("RateLimit"):

3、常見的配置屬性

policy的相關屬性

4、發生錯誤如何處理

1、導入依賴

2、啟動類標註解

3、配置文件

4、啟動後進行訪問

由於我們配置的是壹秒只允許3個請求,當我們超過時,會拋出過多請求異常

5、自定義Key策略

如果希望自己控制key的策略,可以通過自定義RateLimitKeyGenerator的實現來增加自己的策略邏輯。

實例:

根據請求上的參數來對請求進行限流。比如有壹個請求是 http://localhost:9070/api-a//hello2?name=kevin ,對相同的name值進行限流。我們設置了1分鐘內,限流10次,那麽如果1分鐘內,name是kevin的請求超過10次,就會發生限流。

自定義RateLimitKeyGenerator的實現:

到此本文就結束啦!

參考: