Schützt APIs vor Überlastung und Missbrauch.
Token Bucket¶
Der Bucket füllt sich mit Tokens in konstanter Rate. Request = verbraucht ein Token. Leer = abgelehnt. Erlaubt Bursts.
Leaky Bucket¶
Requests fallen in den Bucket und werden mit konstanter Rate verarbeitet. Glättet Bursts.
Fixed Window¶
Zählt Requests in festen Zeitfenstern. Problem: doppelte Rate an Fenstergrenzen.
Sliding Window¶
Kombiniert die Präzision von Sliding mit der Effizienz von Fixed.
Redis-Implementierung¶
– Sliding Window Counter local key = KEYS[1] local window = tonumber(ARGV[1]) local limit = tonumber(ARGV[2]) local now = tonumber(ARGV[3]) redis.call(‘ZREMRANGEBYSCORE’, key, 0, now - window) if redis.call(‘ZCARD’, key) < limit then redis.call(‘ZADD’, key, now, now .. math.random()) return 1 end return 0
HTTP-Header¶
X-RateLimit-Limit: 100 X-RateLimit-Remaining: 42 Retry-After: 30
Token Bucket für die meisten Anwendungsfälle¶
Am flexibelsten — erlaubt Bursts, konstanter Speicherbedarf. Redis für verteilte Umgebungen.