主页 > 知识库 > Golang模拟令牌桶进行对访问的限流方式

Golang模拟令牌桶进行对访问的限流方式

热门标签:涿州代理外呼系统 excel地图标注分布数据 外呼系统显本地手机号 百度地图标注后传给手机 寿光微信地图标注 外呼系统用什么卡 阿克苏地图标注 评价高的400电话办理 电话机器人软件免费

利用channel进行模拟令牌桶对访问进行限流

func FW(max int,duration time.Duration){
//定义一个channel ,进行初始化
	contain := make(chan bool , max)
	for i := 0 ; i  max ; i ++{
		contain - true//写入channel
	}
	go func() {//开启一个线程
		for {
			contain - true
			time.Sleep(duration)
		}
	}()
	for - contain {//如果上一个线程写入一个true,就会运行这个代码块
		fmt.Println("helllo world")
	}
}

补充: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高并发限流操作 ping / telnet
  • golang接口IP限流,IP黑名单,IP白名单的实例
  • Golang 限流器的使用和实现示例
  • Golang实现请求限流的几种办法(小结)

标签:鸡西 兰州 梅河口 钦州 铜川 汕头 吐鲁番 重庆

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