golang简易令牌桶算法实现代码

 更新时间:2021年04月16日 10:19:31   作者:宁静致远_淡泊明志  
这篇文章主要介绍了golang简易令牌桶算法实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

基本思路:定义一个chan,chan大小为需要限制的qps大小,go一个协程启动tick,每1000/qps时间在tick中写入数值,启动另一个协程,读取chan中的值,如果读取到chan中有值,则向下层接口发送请求。

代码如下:

package main

import (
    "fmt"
    "time"
    "httpclient"
)

var LEN int = 10

func tickStoreCh(arrlen int, ch chan int) {
    len := 1000/arrlen
    fmt.Println(len)
    tickTime := time.NewTicker(time.Duration(len)*time.Millisecond)
    var i int
    for {
        fmt.Println(len)
        i++
        <-tickTime.C
        ch<- i
    }
}

func OrganReq(org string, qps int) {
    ch := make(chan int, qps)
    go tickStoreCh(qps, ch)
    time.Sleep(1000*time.Millisecond)
    for {
        //收客户请求,发送http请求给RE
        client := httpclient.NewHttpClient(time.Duration(1000)*time.Millisecond, time.Duration(2000)*time.Millisecond)
        header := make(map[string]string)
        header["Content-Type"] = "application/json;charset=utf-8"
        code, err := client.ResponseCode("http://127.0.0.1:19988", header, "llltest")
        value := <- ch
        fmt.Println(code, value, err, "lenchan:", len(ch))
        //time.Sleep(time.Second)
    }
}

到此这篇关于golang简易令牌桶算法实现代码的文章就介绍到这了,更多相关golang 令牌桶算法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • golang goquery selector选择器使用示例大全

    golang goquery selector选择器使用示例大全

    这篇文章主要为大家介绍了golang goquery selector选择器使用示例大全,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • golang 连接mongoDB的方法示例

    golang 连接mongoDB的方法示例

    这篇文章主要介绍了golang 连接mongoDB的方法示例,详细的介绍了golang的基础知识和连接mongoDB的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • 利用Go语言实现流量回放工具的示例代码

    利用Go语言实现流量回放工具的示例代码

    今天给大家推荐一款使用Go语言编写的流量回放工具 -- goreplay;工作中你一定遇到过需要在服务器上抓包的场景,有了这个工具就可以助你一臂之力,废话不多,我们接下来来看一看这个工具
    2022-09-09
  • Go语言实现关闭http请求的方式总结

    Go语言实现关闭http请求的方式总结

    面试的时候问到如何关闭http请求,一般人脱口而出的是关闭response.body,这是错误的。本文为大家整理了三个正确关闭http请求的方法,希望对大家有所帮助
    2023-02-02
  • Go使用select切换协程入门详解

    Go使用select切换协程入门详解

    这篇文章主要为大家介绍了Go使用select切换协程入门详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Go语言中的匿名结构体用法实例

    Go语言中的匿名结构体用法实例

    这篇文章主要介绍了Go语言中的匿名结构体用法,实例分析了匿名结构体的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • 我为什么喜欢Go语言(简洁的Go语言)

    我为什么喜欢Go语言(简洁的Go语言)

    从2000年至今,也写了11年代码了,期间用过VB、Delphi、C#、C++、Ruby、Python,一直在寻找一门符合自己心意和理念的语言。我很在意写代码时的手感和执行的效率,所以在Go出现之前一直没有找到
    2014-10-10
  • Golang 断言与闭包使用解析

    Golang 断言与闭包使用解析

    这篇文章主要介绍了Golang 断言与闭包使用解析,Go中的断言用于判断变量的类型,更多相关内容需要的朋友可以参考一下
    2022-07-07
  • go语言制作的zip压缩程序

    go语言制作的zip压缩程序

    这篇文章主要介绍了go语言制作的zip压缩程序,其主体思路是首先创建一个读写缓冲,然后用压缩器包装该缓冲,用Walk方法来将所有目录下的文件写入zip,有需要的小伙伴参考下。
    2015-03-03
  • Golang中context包使用场景和示例详解

    Golang中context包使用场景和示例详解

    这篇文章结合示例代码介绍了context包的几种使用场景,文中有详细的代码示例,对学习或工作有一定的帮助,需要的朋友可以参考下
    2023-05-05

最新评论