请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

time/rate 的限流算法,怎么感觉越来越像是令牌桶算法呀?

我很迷惑,rate.NewLimiter(limit, burst)方法,limit每秒产生多少token, burst最多容纳多少token。老师举的例子,一开始可以取5个,后面只能每秒只能取一个,这不就是令牌桶算法了吗???这符合令牌桶的规则呀,1.以固定速率向桶中增加令牌。2.桶满了,令牌丢失. 3.取令牌的时候桶有多少就能领多少.

正在回答

1回答

牛儿吃草 2020-06-11 22:11:51

令牌桶是预先生成令牌数据(可以理解为一个channel中存储了多条数据)的算法,漏桶是基于时间差生成可获取token数据(只有数量没有channel池子或者通道)的算法。这样理解可能更加清晰一些。

0 回复 有任何疑惑可以回复我~
  • 谢谢老师
    回复 有任何疑惑可以回复我~ 2020-06-12 22:40:11
  • 老师我的想法和你说这个有点不同。time/rate 的算法实现就是为了不维护一个 定时器,一个队列的低效方式,而采用直接计算加计数的方式,但是仍然是令牌桶算法。漏桶和令牌桶的区别要从目的和使用来看,漏桶的消耗是固定不支持突发,而令牌桶包括time/rate中算法实现的都支持突发的爆发式消耗(只要又足够的令牌)。以此来看我感觉更偏向于令牌桶算法。
    回复 有任何疑惑可以回复我~ 2020-09-14 16:38:12
  • 确实time/rate更像是两种方式的融合。从token生成原理上来说是漏桶、从支持突发性上来说更像令牌桶。
    回复 有任何疑惑可以回复我~ 2020-09-25 10:19:29
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信