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.