Sobes.tech
Junior — Middle

Kā tiek īstenots ierobežojuma mehānisms pieprasījumu skaitam vienā laika vienībā sistēmā?

sobes.tech AI

Atbilde no AI

Rate limiting mehānisms (ātruma ierobežošana) Go bieži tiek īstenots, izmantojot žetonus vai skaitītājus ar laika logiem.

Piemērs, izmantojot paketi golang.org/x/time/rate:

import (
    "golang.org/x/time/rate"
    "net/http"
)

var limiter = rate.NewLimiter(1, 5) // 1 pieprasījums sekundē ar maksimāli 5 žetoniem

func handler(w http.ResponseWriter, r *http.Request) {
    if !limiter.Allow() {
        http.Error(w, "Too Many Requests", http.StatusTooManyRequests)
        return
    }
    // pieprasījuma apstrāde
}

Šeit rate.NewLimiter izveido ierobežotāju, kas ļauj 1 pieprasījumu sekundē, bet var uzkrāt līdz 5 žetoniem, ļaujot īslaicīgas pieprasījumu uzliesmojumus. Ja pieprasījumu skaits ir pārāk liels, tie tiek noraidīti ar kļūdas kodu 429.

Citas pieejas ietver fiksētu logu, slīdošo logu vai Redis izmantošanu izplatītai ātruma ierobežošanai.