算法原理:
https://baike.baidu.com/item/漏桶算法
https://baike.baidu.com/item/令牌桶算法
代码实现参考:
令牌桶:
https://github.com/juju/ratelimit/blob/master/ratelimit.go
漏桶:
https://github.com/yangwenmai/ratelimit/blob/master/leakybucket/leaky_memory.go
令牌桶算法代码解析:
定义:
type Bucket struct {
clock Clock
// 第一次创建这个令牌桶的时间
startTime time.Time
// 最大容量
capacity int64
// 每次填充令牌的个数
quantum int64
// 填充的间隔
fillInterval time.Duration
// mu guards the fields below it.
mu syn