Sobes.tech
Junior — Middle

Sistemde belirli bir zaman diliminde istek sayısını sınırlama mekanizması nasıl uygulanır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go'da zaman biriminde istek sayısını sınırlama mekanizması (rate limiting) genellikle token bankaları veya zaman pencereleri ile sayıcılar kullanılarak uygulanır.

golang.org/x/time/rate paketi kullanımı örneği:

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

var limiter = rate.NewLimiter(1, 5) // saniyede 1 istek, maksimum 5 token ile

func handler(w http.ResponseWriter, r *http.Request) {
    if !limiter.Allow() {
        http.Error(w, "Too Many Requests", http.StatusTooManyRequests)
        return
    }
    // istek işleme
}

Burada, rate.NewLimiter saniyede 1 isteğe izin veren, ancak 5'e kadar token toplayabilen bir limitör oluşturur, bu da kısa süreli istek patlamalarına izin verir. Çok fazla istek olursa, 429 hatasıyla reddedilir.

Diğer yaklaşımlar arasında sabit pencere, kayan pencere veya Redis kullanımıyla dağıtık rate limiting bulunur.