Architektur Fortgeschritten
Throttling und Rate Limiting¶
ThrottlingRate LimitingAPI 3 min Lesezeit
Implementierung von Rate Limiting zum Schutz von APIs. Token Bucket, Sliding Window und HTTP-Header.
Algorithmen¶
Token Bucket: Tokens werden mit konstanter Geschwindigkeit nachgefuellt. Sliding Window: Zaehlt Requests in einem gleitenden Fenster.
// 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-Header¶
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 42
X-RateLimit-Reset: 1708900000
Retry-After: 30 # bei 429
Zusammenfassung¶
Rate Limiting ist eine Notwendigkeit fuer jede oeffentliche API. Informieren Sie Clients ueber HTTP-Header.
Brauchen Sie Hilfe bei der Implementierung?¶
Unser Team hat Erfahrung mit dem Entwurf und der Implementierung moderner Architekturen. Wir helfen Ihnen gerne.