欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Golang?throttled基于GCRA速率限制庫使用探索

 更新時間:2024年01月10日 14:20:40   作者:Eagle1949?技術(shù)源泉  
這篇文章主要為大家介紹了Golang?throttled基于GCRA速率限制庫使用實例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

Throttled包

Throttled包實現(xiàn)了對HTTP端點等資源的速率限制訪問。它使用通用信元速率算法(GCRA)來限制對資源(如HTTP端點)的訪問,從而實現(xiàn)速率限制。

2.0.0版本對節(jié)流API進行了一些重大更改。如果此更改破壞了您的代碼,或者您希望保留舊API的功能,請打開一個問題。我們不保證會有任何特定的更改,但希望了解更多關(guān)于用戶需求的信息。

安裝

import (
“github.com/throttled/sthrottled/v2”
)

然后,任何標(biāo)準(zhǔn)的Go工具,如構(gòu)建、測試,都會自動找到包。您也可以使用go-get將其拉入您的項目中:

go get -u github.com/throttled/throttled/v2

如果你以前使用了throttled,現(xiàn)在推薦你升級到最新版本,并升級到含有context的新函數(shù)接口。

下面的函數(shù)可進行替換:

memstore.New => memstore.NewCtx
goredisstore.New => goredisstore.NewCtx
redigostore.New => redigostore.NewCtx
throttled.NewGCRARateLimiter => throttled.NewGCRARateLimiterCtx
throttled.HTTPRateLimiter => throttled.HTTPRateLimiterCtx

請注意,并非所有store都使用了context.Context。

HTTPLimiter用于對http進行速率限制訪問的用法

此示例演示了HTTPLimiter用于對http進行速率限制訪問的用法。每分鐘每條路徑最多可處理20個請求,最多可處理5個附加請求:

package main
import (
 "fmt"
 "log"
 "net/http"
 "github.com/throttled/throttled/v2"
 "github.com/throttled/throttled/v2/store/memstore"
)
func myHandlerFunc(w http.ResponseWriter, r *http.Request) {
 fmt.Fprintf(w, "Hello, world")
}
func main() {
 store, err := memstore.NewCtx(65536)
 if err != nil {
  log.Fatal(err)
 }
 quota := throttled.RateQuota{
  MaxRate:  throttled.PerMin(20),
  MaxBurst: 5,
 }
 rateLimiter, err := throttled.NewGCRARateLimiterCtx(store, quota)
 if err != nil {
  log.Fatal(err)
 }
 httpRateLimiter := throttled.HTTPRateLimiterCtx{
  RateLimiter: rateLimiter,
  VaryBy:      &throttled.VaryBy{Path: true},
 }
 handler := http.HandlerFunc(myHandlerFunc)
 http.ListenAndServe(":8080", httpRateLimiter.RateLimit(handler))
}

我們經(jīng)常在使用第三方API時,會看到這樣的提示,該接口頻率限制限額,請合理安排業(yè)務(wù)調(diào)用,特別是token的請求,經(jīng)常會要求你緩存到本地,如果我們的項目供他人使用,也有速率限制時,可以集成這個庫方便的完成需求。

Github地址:

https://github.com/throttled/throttled 

以上就是Golang throttled基于GCRA速率限制庫使用探索的詳細內(nèi)容,更多關(guān)于Golang throttled GCRA速率限制的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Golang使用Swag搭建api文檔的全過程

    Golang使用Swag搭建api文檔的全過程

    Gin是Golang目前最為常用的Web框架之一,公司項目驗收需要API接口設(shè)計說明書(Golang后端服務(wù)基于Gin框架編寫),所以本文給大家介紹了Golang使用Swag搭建api文檔的全過程,需要的朋友可以參考下
    2024-02-02
  • Golang發(fā)送Get和Post請求的實現(xiàn)

    Golang發(fā)送Get和Post請求的實現(xiàn)

    做第三方接口有時需要用Get或者Post請求訪問,本文主要介紹了Golang發(fā)送Get和Post請求的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • GoLang中Module的基本使用方法

    GoLang中Module的基本使用方法

    Go module是從Go 1.11版本才引入的新功能,下面這篇文章主要給大家介紹了關(guān)于GoLang中Module的基本使用方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-01-01
  • golang中的三個點 ''...''的用法示例詳解

    golang中的三個點 ''...''的用法示例詳解

    這篇文章主要介紹了golang中的三個點 '...' 的用法示例詳解,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • go語言使用中提示%!(NOVERB)的解決方案

    go語言使用中提示%!(NOVERB)的解決方案

    o語言的設(shè)計目標(biāo)是提供一種簡單易用的編程語言,同時保持高效性和可擴展性,它支持垃圾回收機制,具有強大的并發(fā)編程能力,可以輕松處理大規(guī)模的并發(fā)任務(wù),Go語言還擁有豐富的標(biāo)準(zhǔn)庫和活躍的開發(fā)社區(qū),使得開發(fā)者能夠快速構(gòu)建出高質(zhì)量的應(yīng)用程序,需要的朋友可以參考下
    2023-10-10
  • Go語言中三種不同md5計算方式的性能比較

    Go語言中三種不同md5計算方式的性能比較

    md5計算在我們?nèi)粘9ぷ鞯臅r候經(jīng)常能遇到,下面這篇文章主要介紹了Go語言中三種不同md5計算方式的性能比較,需要的朋友可以參考借鑒,下面來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-01-01
  • Go指針的具體使用

    Go指針的具體使用

    本文主要介紹了Go指針的具體使用,包括使用指針、空指針、指針數(shù)組、指向指針的指針等,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • Go1.21新增slices包的用法詳解

    Go1.21新增slices包的用法詳解

    Go?1.21新增的?slices?包提供了很多和切片相關(guān)的函數(shù),可以用于任何類型的切片,這篇文章主要來和大家介紹一下slices包中相關(guān)函數(shù)的用法,需要的可以參考一下
    2023-08-08
  • go語言之給定英語文章統(tǒng)計單詞數(shù)量(go語言小練習(xí))

    go語言之給定英語文章統(tǒng)計單詞數(shù)量(go語言小練習(xí))

    這篇文章給大家分享go語言小練習(xí)給定英語文章統(tǒng)計單詞數(shù)量,實現(xiàn)思路大概是利用go語言的map類型,以每個單詞作為關(guān)鍵字存儲數(shù)量信息,本文通過實例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2020-01-01
  • golang替換無法顯示的特殊字符(\u0000,?\000,?^@)

    golang替換無法顯示的特殊字符(\u0000,?\000,?^@)

    這篇文章主要介紹了golang替換無法顯示的特殊字符,包括的字符有\(zhòng)u0000,?\000,?^@等,下文詳細資料,需要的小伙伴可以參考一下
    2022-04-04

最新評論