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