Welche Unterschiede bestehen zwischen dem Token-Bucket- und dem Leaky-Bucket-Algorithmus beim API-Rate-Limiting?

Der Token-Bucket-Algorithmus und der Leaky-Bucket-Algorithmus steuern den Zugriff auf API-Ressourcen durch unterschiedliche Mechanismen der Durchflusskontrolle. Während der Token-Bucket auf die Verfügbarkeit von Berechtigungen (Tokens) setzt, fokussiert sich der Leaky-Bucket auf die konstante Abflussrate von Anfragen.

MerkmalToken BucketLeaky Bucket
Traffic-ProfilErlaubt kurzzeitige BurstsGlättet Traffic auf konstante Rate
MechanismusToken-Akkumulation im BucketWarteschlange (Queue) mit festem Leak
Verhalten bei LeerstandRequest wird sofort abgelehntRequest wird in Queue gestellt oder abgelehnt
Primärer FokusFlexibilität bei variabler LastStabilität des Backend-Systems

Beim Token-Bucket-Verfahren werden Tokens mit einer definierten Rate in einen Bucket gefüllt. Ein Request kann nur verarbeitet werden, wenn ein Token entnommen werden kann. Sind Tokens durch Inaktivität angesammelt worden, können mehrere Anfragen in extrem kurzer Zeit (Burst) verarbeitet werden, bis der Bucket leer ist. Dies spiegelt das reale Nutzerverhalten wider, bei dem Anfragen oft stoßweise auftreten.

Der Leaky-Bucket-Algorithmus funktioniert wie ein Eimer mit einem Loch im Boden. Anfragen fließen in den Bucket und werden in einer festen, unveränderlichen Rate abgearbeitet. Ist der Bucket voll, werden neue Anfragen verworfen. Dieser Ansatz eliminiert jegliche Lastspitzen und garantiert, dass das Backend niemals eine Last erhält, die über der definierten Rate liegt.

Die Wahl des Algorithmus ist Teil einer fundierten IT-Consulting & Digitale Strategie, da sie direkt die User Experience und die Systemstabilität beeinflusst. Während der Leaky Bucket eine maximale Vorhersehbarkeit der Last bietet, führt er bei legitimen Lastspitzen zu einer höheren Ablehnungsrate oder künstlichen Latenzen.

Für die meisten modernen REST-APIs empfehlen wir den Token-Bucket-Algorithmus. Er bietet die notwendige Flexibilität für dynamische Client-Interaktionen, ohne die langfristige Systemstabilität zu gefährden. Der Leaky-Bucket-Ansatz ist hingegen nur dann vorzuziehen, wenn die nachgelagerten Systeme absolut keine Toleranz für Lastspitzen aufweisen und eine strikte Glättung des Datenstroms technisch gefordert ist.

Sergej Wiens

Sergej Wiens

Gründer & Software Architekt