采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
我很迷惑,rate.NewLimiter(limit, burst)方法,limit每秒产生多少token, burst最多容纳多少token。老师举的例子,一开始可以取5个,后面只能每秒只能取一个,这不就是令牌桶算法了吗???这符合令牌桶的规则呀,1.以固定速率向桶中增加令牌。2.桶满了,令牌丢失. 3.取令牌的时候桶有多少就能领多少.
令牌桶是预先生成令牌数据(可以理解为一个channel中存储了多条数据)的算法,漏桶是基于时间差生成可获取token数据(只有数量没有channel池子或者通道)的算法。这样理解可能更加清晰一些。
谢谢老师
老师我的想法和你说这个有点不同。time/rate 的算法实现就是为了不维护一个 定时器,一个队列的低效方式,而采用直接计算加计数的方式,但是仍然是令牌桶算法。漏桶和令牌桶的区别要从目的和使用来看,漏桶的消耗是固定不支持突发,而令牌桶包括time/rate中算法实现的都支持突发的爆发式消耗(只要又足够的令牌)。以此来看我感觉更偏向于令牌桶算法。
确实time/rate更像是两种方式的融合。从token生成原理上来说是漏桶、从支持突发性上来说更像令牌桶。
登录后可查看更多问答,登录/注册
简历中摒弃烂大街的培训机构项目,带你开发企业级微服务网关
1.5k 23
1.5k 9
1.0k 8
1.4k 8
953 7