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

Golang模擬令牌桶進行對訪問的限流方式

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

利用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簡易令牌桶算法實現(xiàn)

基本思路:

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

代碼如下:

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

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

相關(guān)文章

  • GoLang讀取文件的10種方法實例

    GoLang讀取文件的10種方法實例

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

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

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

    golang 內(nèi)存對齊的實現(xiàn)

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

    golang接口IP限流,IP黑名單,IP白名單的實例

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

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

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

    golang 生成定單號的操作

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

    Golang error使用場景介紹

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

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

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

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

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

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

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

最新評論

丹凤县| 永春县| 新田县| 孙吴县| 嘉祥县| 南江县| 碌曲县| 湘潭县| 曲周县| 中江县| 应城市| 普兰县| 嘉义市| 洛川县| 江川县| 万宁市| 垦利县| 永寿县| 建平县| 祁东县| 两当县| 郓城县| 甘谷县| 焦作市| 陕西省| 三亚市| 盐亭县| 会同县| 依兰县| 巴林右旗| 谷城县| 重庆市| 南江县| 邹城市| 屯留县| 育儿| 泽普县| 兴安县| 峨眉山市| 思南县| 甘泉县|