主页 > 知识库 > golang简易令牌桶算法实现代码

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

热门标签:宿迁便宜外呼系统代理商 重庆庆云企业400电话到哪申请 湛江crm外呼系统排名 不封卡外呼系统 郑州智能语音电销机器人价格 仙桃400电话办理 宁波语音外呼系统公司 上海极信防封电销卡价格 地图标注免费定制店

基本思路:定义一个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实现请求限流的几种办法
  • golang高并发限流操作 ping / telnet
  • golang接口IP限流,IP黑名单,IP白名单的实例
  • Golang 限流器的使用和实现示例
  • Golang实现请求限流的几种办法(小结)
  • Golang模拟令牌桶进行对访问的限流方式

标签:儋州 青海 物业服务 辽宁 西双版纳 海南 安康 电子产品

巨人网络通讯声明:本文标题《golang简易令牌桶算法实现代码》,本文关键词  golang,简易,令牌桶,算法,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《golang简易令牌桶算法实现代码》相关的同类信息!
  • 本页收集关于golang简易令牌桶算法实现代码的相关信息资讯供网民参考!
  • 推荐文章