Zum Hauptinhalt springen

Rate Limiting

FIT-Connect setzt sich aus mehreren Diensten zusammen. Für einige dieser Dienste ist der Durchsatz für Anfragen begrenzt, um abhängige Dienste nicht zu überlasten. Um dies zu realisieren wird in diesen Fällen ein Rate-Limiting angewandt, d.h. eine Begrenzung der Zahl der Anfragen an den Dienst in einem bestimmten Zeitintervall. Die genauen Begrenzungen werden je Dienst festgelegt.

Ratelimit-Headers

Ist für einen Dienst das Rate Limiting eingerichtet, wird der Dienst in jeder Antwortnachricht entsprechende HTTP-Header senden. Die HTTP-Header folgen dem IETF-Draft RateLimit Fields for HTTP.

RateLimit-Limit

Dieser Header gibt die aktuelle Begrenzung der Anfragen im momentanen Zeitfenster an. Falls mehrere Beschränkungen definiert sind, z.B. eine Beschränkung der Anfragen pro Sekunde und eine Beschränkung der Anfragen pro Minute, wird hier die Anzahl der zuerst eintretenden Beschränkung angegeben.

RateLimit-Remaining

Dieser Header gibt die Anzahl der aktuell verfügbaren Anfragen im aktuellen Zeitfenster und der aktuell wirkenden Beschränkung zurück.

RateLimit-Reset

Dieser Header gibt die Zeit in Sekunden an, wann das aktuelle Zeitfenster abläuft. Danach beginnt ein neues Zeitfenster für die aktuell wirkende Beschränkung.

Überschreiten des Limits

Wird eine Anfrage-Begrenzung überschritten, wird diese mit dem HTTP-Status-Code 429 beantwortet und kein Inhalt vom Dienst zurückgegeben. Die Anfrage sollte dann, unter Berücksichtigung des Headers RateLimit-Reset wiederholt werden.

Beispiel

Beispiel für die in der HTTP-Response enthaltenen HTTP-Header:

RateLimit-Limit: 20             # Begrenzung auf 20 Anfragen im aktuellen Zeitfenster
RateLimit-Remaining: 3 # Es sind noch 3 Anfragen im aktuellen Zeitfenster möglich
RateLimit-Reset: 14 # In 14 Sekunden wird das aktuelle Zeitfenster ablaufen und ein neues beginnen.