一个基于golang的速率限制(Rate Limiting)算法,超过设定速率阻塞程序

网友投稿 896 2022-11-01 17:42:09

一个基于golang的速率限制(Rate Limiting)算法,超过设定速率阻塞程序

Go的一个令牌桶,类队列派发许可,用于资源有限或者被限制请求的情况下使用。

package mainimport ( "fmt" "github.com/Tokeniso/duoo")func main() { var number int32 = 500 // 每second许可数量 var second int32 = 3 // 秒 boolRate := duoo.RateStartWithDebug(number, second) for i:=0;i<2000;i++ { _, err := boolRate.GetPermission() if err != nil { } } for key, val := range boolRate.Count { fmt.Printf("循环批次:%d -- wait:%d -- retry:%d -- done:%d\n", key, val.Wait, val.Retry, val.Done) }}

输出

启动中....启动完成.refresh channel, tag: 0refresh channel, tag: 1refresh channel, tag: 2refresh channel, tag: 3循环批次:0 -- wait:501 -- retry:1 -- done:500循环批次:1 -- wait:501 -- retry:1 -- done:500循环批次:2 -- wait:501 -- retry:1 -- done:500循环批次:3 -- wait:500 -- retry:0 -- done:500Process finished with exit code 2

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:MyBatis连接池的深入和动态SQL详解
下一篇:Mutations - 用于编写安全、可重用和可维护的代码Ruby和Rails应用程序
相关文章