rate
按秒配额的带宽限速器:为读写字节流提供令牌补充式限速(字节数/秒),
常配合 conn 包使用。
迁移自 go-hua/rate,代码保持原样。
用法
import "git.zeroonesoft.cn/golib/zogo/rate"
r := rate.NewRate(512 * 1024) // 512 KB/s;0 表示不限速
r.Start() // 启动每秒配额补充
defer r.Stop()
r.Add(n) // 每次读/写后上报本秒已消耗字节数,超配额时 Add 阻塞到下个周期
r.SetLimit(1024 * 1024) // 动态调整限速
used := r.GetNow() // 本秒已消耗
完整可运行例程:examples/rate/main.go
注意
NewRate(0)为不限速模式,Add直接放行。- 限速粒度为秒级令牌桶,短时突发精度有限;逐连接限速在
conn中叠加使用。