Sobes.tech
Junior — Middle

Tizimda so'rovlar sonini vaqt birligida cheklash mexanizmi qanday amalga oshiriladi?

sobes.tech AI

AIdan javob

Go'da vaqt birligida so'rovlar sonini cheklash mexanizmi (rate limiting) ko'pincha tokenlar yoki vaqt oynalari bilan hisoblagichlar yordamida amalga oshiriladi.

golang.org/x/time/rate paketidan foydalanish misoli:

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

var limiter = rate.NewLimiter(1, 5) // 1 so'rov har sekundda, maksimal 5 token bilan

func handler(w http.ResponseWriter, r *http.Request) {
    if !limiter.Allow() {
        http.Error(w, "Too Many Requests", http.StatusTooManyRequests)
        return
    }
    // so'rovni ishlash
}

Bu yerda, rate.NewLimiter har sekundda 1 so'rovga ruxsat beradigan, lekin 5 tokengacha to'plashi mumkin bo'lgan limitatorni yaratadi, bu qisqa muddatli so'rovlar to'planishiga imkon beradi. Agar so'rovlar juda ko'p bo'lsa, ular 429 xatosi bilan rad etiladi.

Boshqa yondashuvlar — statik oynalar, siljiydigan oynalar yoki Redis yordamida tarqatilgan rate limiting.