tokenbucket:go 包实现了 tokenbucket 限速器,golang
#令牌桶
概述
tokenbucket 包是一个速率限制器,基于以稳定速率填充令牌的桶的概念。
一旦桶被填满,就不能再添加令牌。
令牌通过调用 Take(nTokens) 的协作函数撤回,该函数返回调用者在有足够的令牌可用之前应该Hibernate的时间。
一旦撤回/保留的代币就不能再放回,因此不允许负代币计数。
调用者可以请求比桶的容量更多的令牌,但返回的延迟将成比例地更长。
初始化需要表示为增量之间的延迟的填充率和桶容量。
每秒速率为 1 / 延迟秒数。 一个方便的函数是 FillRate() float64
没有什么会强迫参与者合作。 这可能是错误或功能,具体取决于您打算如何使用它。 如 example.go 程序所示,在 for 循环内生成的 Goroutine 可以轻松共享同一个存储桶。
安装
如果您在类 Unix 操作系统上安装了可用的 go:
go get g