K8s之ControllerRateLimiter简单理解
生活随笔
收集整理的這篇文章主要介紹了
K8s之ControllerRateLimiter简单理解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、RateLimiter實現了對于隊列元素的重試規則,包括三個函數When獲取某個元素應該等待的時間,Forget釋放某個元素不再監測,NumRequeues返回該元素已經失敗重試的次數。
2、RateLimiter主要有四種類型:
主要行為表現在當某一事件元素失敗后,等待時間的計算規則不一致。
- BucketRateLimiter令牌桶算法,可以處理尖峰流量,實現平滑限流,可以控制在一定頻率來執行;
- ItemExponentialFailureRateLimiter根據失敗次數按指數延時;
- ItemFastSlowRateLimiter先快后慢;
- MaxOfRateLimiter包含多個限流器,并返回所有RateLimiter的最壞值。
3、默認的DefaultControllerRateLimiter是MaxOfRateLimiter取最壞值,其中并包括兩個限流器,
BucketRateLimiter限流器是一個令牌桶算法處理尖峰流量,實現平滑限流,令牌桶大小是100,生成令牌速度是10QPS,拿令牌是沒有速度限制的;
ItemExponentialFailureRateLimiter:等待時間=min(1000s,5ms*2^n),與失敗次數n呈指數關系;?
備注:k8s controller的重試等待時間是5ms*2的n次方,n是重試次數,但是不超過1000s,并且還有一個令牌桶算法處理尖峰流量實現平滑限流,所以流量暴增時等待時間可能比1000s更長。
總結
以上是生活随笔為你收集整理的K8s之ControllerRateLimiter简单理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 41款常用APP被爆过度索取权限、数据共
- 下一篇: Golang之理解错误输出