你使用的是什么版本的 Go ( go version)?go version輸出:go 版本 go1.12.17 darwin/amd64您使用的是什么版本的軟件包(rate version)?golang.org/x/time v0.0.0-20190308202827-9d24e82272b4你做了什么?在 amd64 上運(yùn)行以下命令:package mainimport ( "fmt" "golang.org/x/time/rate" "sync" "sync/atomic" "time")func main() { now := time.Now() t := time.After(time.Second) limit := rate.Limit(100) burst := 10 l := rate.NewLimiter(limit, burst) var count int for { select { case <-t: fmt.Printf("%ds, %d\n", time.Now().Sub(now).Nanoseconds()/1e9, count) return default: if l.Allow() { count++ } } }}你期待看到什么?1s, 10你看到了什么?1s, 110我很困惑count不等于突發(fā)大小。當(dāng)我設(shè)置 Limit=100,burst=10 時(shí),它應(yīng)該允許()最大調(diào)用是突發(fā)的。
1 回答

慕婉清6462132
TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超2個(gè)贊
突發(fā)不是最大速率。除了重新填充率之外,它是存儲(chǔ)桶中令牌的數(shù)量。
您將速率設(shè)置為每秒 100 個(gè)令牌,突發(fā)容量設(shè)置為 10。
程序運(yùn)行一秒鐘內(nèi)可以消耗 100 個(gè)令牌,再加上突發(fā)容量增加的 10 個(gè)令牌,這并不奇怪。
如果您希望在一秒鐘內(nèi)發(fā)生的事情不超過(guò) 10 件,請(qǐng)將速率設(shè)置為 10 并將突發(fā)設(shè)置為零。
- 1 回答
- 0 關(guān)注
- 174 瀏覽
添加回答
舉報(bào)
0/150
提交
取消