最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Golang模擬令牌桶進(jìn)行對(duì)訪問的限流方式

 更新時(shí)間:2021年04月27日 09:43:59   作者:鹿灝楷silves  
這篇文章主要介紹了Golang模擬令牌桶進(jìn)行對(duì)訪問的限流方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

利用channel進(jìn)行模擬令牌桶對(duì)訪問進(jìn)行限流

func FW(max int,duration time.Duration){
//定義一個(gè)channel ,進(jìn)行初始化
	contain := make(chan bool , max)
	for i := 0 ; i < max ; i ++{
		contain <- true//寫入channel
	}
	go func() {//開啟一個(gè)線程
		for {
			contain <- true
			time.Sleep(duration)
		}
	}()
	for <- contain {//如果上一個(gè)線程寫入一個(gè)true,就會(huì)運(yùn)行這個(gè)代碼塊
		fmt.Println("helllo world")
	}
}

補(bǔ)充:golang簡(jiǎn)易令牌桶算法實(shí)現(xiàn)

基本思路:

定義一個(gè)chan,chan大小為需要限制的qps大小,go一個(gè)協(xié)程啟動(dòng)tick,每1000/qps時(shí)間在tick中寫入數(shù)值,啟動(dòng)另一個(gè)協(xié)程,讀取chan中的值,如果讀取到chan中有值,則向下層接口發(fā)送請(qǐng)求。

代碼如下:

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 {
        //收客戶請(qǐng)求,發(fā)送http請(qǐng)求給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)
    }
}

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • GoLang讀取文件的10種方法實(shí)例

    GoLang讀取文件的10種方法實(shí)例

    讀取文件是所有編程語(yǔ)言中最常見的操作之一,下面這篇文章主要給大家介紹了關(guān)于GoLang讀取文件的10種方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • Go語(yǔ)言轉(zhuǎn)化php數(shù)組的示例代碼

    Go語(yǔ)言轉(zhuǎn)化php數(shù)組的示例代碼

    這篇文章主要為大家詳細(xì)介紹了Go語(yǔ)言如何實(shí)現(xiàn)轉(zhuǎn)化php數(shù)組的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),對(duì)我們深入學(xué)習(xí)GO語(yǔ)言有一定的幫助,需要的可以參考下
    2023-11-11
  • golang 內(nèi)存對(duì)齊的實(shí)現(xiàn)

    golang 內(nèi)存對(duì)齊的實(shí)現(xiàn)

    在代碼編譯階段,編譯器會(huì)對(duì)數(shù)據(jù)的存儲(chǔ)布局進(jìn)行對(duì)齊優(yōu)化,本文主要介紹了golang 內(nèi)存對(duì)齊的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-08-08
  • golang接口IP限流,IP黑名單,IP白名單的實(shí)例

    golang接口IP限流,IP黑名單,IP白名單的實(shí)例

    這篇文章主要介紹了golang接口IP限流,IP黑名單,IP白名單的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • golang gorm 計(jì)算字段和獲取sum()值的實(shí)現(xiàn)

    golang gorm 計(jì)算字段和獲取sum()值的實(shí)現(xiàn)

    這篇文章主要介紹了golang gorm 計(jì)算字段和獲取sum()值的實(shí)現(xiàn)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • golang 生成定單號(hào)的操作

    golang 生成定單號(hào)的操作

    這篇文章主要介紹了golang 生成定單號(hào)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Golang error使用場(chǎng)景介紹

    Golang error使用場(chǎng)景介紹

    我們?cè)谑褂肎olang時(shí),不可避免會(huì)遇到異常情況的處理,與Java、Python等語(yǔ)言不同的是,Go中并沒有try...catch...這樣的語(yǔ)句塊,這個(gè)時(shí)候我們?nèi)绾尾拍芨玫奶幚懋惓D??本文來教你正確方法
    2023-03-03
  • GO中高效的將int轉(zhuǎn)換為string的方法與源碼

    GO中高效的將int轉(zhuǎn)換為string的方法與源碼

    本文將從逐步介紹幾種在?Go?中將?int?轉(zhuǎn)換為?string?的常見方法,并重點(diǎn)剖析這幾種方法在性能上的特點(diǎn),另外,還會(huì)重點(diǎn)介紹?FormatInt?高效的算法實(shí)現(xiàn),需要的朋友可以參考下
    2024-01-01
  • 深入理解Go語(yǔ)言實(shí)現(xiàn)多態(tài)?

    深入理解Go語(yǔ)言實(shí)現(xiàn)多態(tài)?

    本文主要介紹了Go語(yǔ)言實(shí)現(xiàn)多態(tài),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Go語(yǔ)言帶緩沖的通道實(shí)現(xiàn)

    Go語(yǔ)言帶緩沖的通道實(shí)現(xiàn)

    這篇文章主要介紹了Go語(yǔ)言帶緩沖的通道實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04

最新評(píng)論

青神县| 蕉岭县| 罗江县| 崇阳县| 康定县| 海盐县| 闵行区| 越西县| 连城县| 中宁县| 灌云县| 玉山县| 拜城县| 信阳市| 罗平县| 平安县| 循化| 泾阳县| 信阳市| 犍为县| 泊头市| 安福县| 双鸭山市| 邻水| 宁德市| 宣武区| 昌吉市| 兴城市| 黔江区| 崇州市| 卢湾区| 冷水江市| 雅安市| 麻阳| 呈贡县| 舟山市| 屏东市| 凤城市| 广元市| 五寨县| 长岭县|