Přeskočit na obsah
_CORE
Architektura Pokročilý

Throttling a Rate Limiting

ThrottlingRate LimitingAPI
3 min čtení

Implementace rate limitingu pro ochranu API. Token bucket, sliding window a HTTP hlavičky.

Algoritmy

Token Bucket: Tokeny se doplňují konstantní rychlostí. Sliding Window: Počítá requesty v klouzavém okně.

// Redis sliding window rate limiter
async function rateLimit(clientId, limit = 100, windowSec = 60) {
    const key = \`rl:\${clientId}\`;
    const now = Date.now();
    const pipe = redis.pipeline();
    pipe.zremrangebyscore(key, 0, now - windowSec * 1000);
    pipe.zadd(key, now, \`\${now}-\${Math.random()}\`);
    pipe.zcard(key);
    pipe.expire(key, windowSec);
    const results = await pipe.exec();
    const count = results[2][1];
    return { allowed: count <= limit, remaining: Math.max(0, limit - count) };
}

HTTP hlavičky

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 42
X-RateLimit-Reset: 1708900000
Retry-After: 30  # při 429

Shrnutí

Rate limiting je nutnost pro každé veřejné API. Informujte klienty přes HTTP hlavičky.

Potřebujete pomoct s implementací?

Náš tým má zkušenosti s návrhem a implementací moderních architektur. Rádi vám pomůžeme.

Nezávazná konzultace