Skip to content
用于限流的令牌桶算法,漏桶算法(Python实现)
Branch: master
Clone or download
Latest commit 9c98424 Mar 19, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
leaky_bucket fix leaky_bucket.py Mar 19, 2019
token_bucket add: leaky bucket May 18, 2016
.gitignore Initial commit May 18, 2016
LICENSE Initial commit May 18, 2016
Leaky_bucket_analogy.JPG add: image Jun 6, 2016
README.md add: image Jun 6, 2016
token_bucket.JPG add: image Jun 6, 2016

README.md

Rate Limiter

降级和限流是面对大流量必不可少的神兵利器. 流量控制算法就是通过网络整形或者速率控制来解决此类问题.

流量控制算法

  • 令牌桶算法
  • 漏桶算法

令牌桶算法

  1. 每秒会有 r 个令牌放入桶中,或者说,每过 1/r 秒桶中增加一个令牌
  2. 桶中最多存放 b 个令牌,如果桶满了,新放入的令牌会被丢弃
  3. 当一个 n 字节的数据包到达时,消耗 n 个令牌,然后发送该数据包
  4. 如果桶中可用令牌小于 n,则该数据包将被缓存或丢弃

漏桶算法

  1. 数据被填充到桶中,并以固定速率注入网络中,而不管数据流的突发性
  2. 如果桶是空的,不做任何事情
  3. 主机在每一个时间片向网络注入一个数据包,因此产生一致的数据流

漏桶算法

这两个算法是有区别的: 漏桶算法能够强行限制数据的传输速率,而令牌桶算法在能够限制数据的平均传输速率外,还允许某种程度的突发传输.

You can’t perform that action at this time.