跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • uber-go 中的 ratelimit 包, 为何 sleepFor 不能小于 maxSlack 呢?
未分類
29 1 月 2021

uber-go 中的 ratelimit 包, 为何 sleepFor 不能小于 maxSlack 呢?

uber-go 中的 ratelimit 包, 为何 sleepFor 不能小于 maxSlack 呢?

資深大佬 : RedisMasterNode 4

Take方法见: https://github.com/uber-go/ratelimit/blob/master/limiter_atomic.go

其中有一段代码:

...   if newState.sleepFor < t.maxSlack {    newState.sleepFor = t.maxSlack   } ... 

sleepFor是“间隔时间-上次执行时间至当前时间”, 例如间隔时间为 1 秒, 上次执行时间为 5 秒前, sleepFor 就是-4

sleepFor在末尾用于t.clock.Sleep(newState.sleepFor),貌似没有别的用途,那为什么需要让它不能小于t.maxSlack?

或者如果有 dalao 明白这段注释的意思也可以解释一下:

...   // We shouldn't allow sleepFor to get too negative, since it would mean that   // a service that slowed down a lot for a short period of time would get   // a much higher RPS following that. ... 

萌新提问, 感谢~

大佬有話說 (1)

  • 資深大佬 : zhangsanfeng2012

    限制突发吧,我猜的

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具