Backpressure
Backpressure passt den Datenzufluss an die Verarbeitungskapazität des Empfängers an, indem dieser eine Verlangsamung oder Pause signalisiert.
Backpressure ist die Rückmeldung eines ausgelasteten Empfängers an die vorgelagerte Datenquelle, weniger oder vorübergehend keine weiteren Daten zu liefern. So kann ein Verarbeitungsschritt den Zufluss an seine Kapazität anpassen.
In einem fiktiven Import liest die Quelle 120 Datensätze pro Sekunde, während die Datenbank 40 verarbeitet. Bei gleichbleibenden Raten und ohne verworfene Datensätze wächst der Rückstand um 80 Datensätze pro Sekunde. Ein größerer Puffer verschiebt das Problem. Backpressure lässt die Quelle langsamer lesen oder pausieren, bis die Verarbeitung wieder nachkommt.
Ein Pausensignal weitergeben
Bei einem funktionsfähigen Node.js-Schreibstream signalisiert der Rückgabewert false von .write() eine Pause vor weiteren Datenblöcken. Der bereits übergebene Block wird deshalb nicht nochmals gesendet. Nach drain können weitere Blöcke folgen; Fehler und geschlossene Streams brauchen eigene Behandlung. Der Puffer-Schwellenwert highWaterMark ist dabei keine feste Obergrenze für den gesamten Speicherverbrauch.
Das Signal hilft nur, wenn die vorgelagerten Schritte es beachten und ihre eigenen Puffer begrenzen. Lässt sich die Quelle nicht bremsen, braucht die Anwendung zusätzlich eine begrenzte Aufnahme und einen festgelegten Umgang mit Überlast. Rate Limiting legt eine zulässige Anfragerate fest; Backpressure reagiert auf die Aufnahmefähigkeit im Datenfluss.
Quellen
Verwandte Begriffe
- Message QueueEine Message Queue puffert Nachrichten, bis ein Verbraucher sie zur Verarbeitung übernimmt.
- Rate LimitingRate Limiting begrenzt, wie viele Anfragen ein Client nach einer bestimmten Regel in einem Zeitraum stellen darf.
- Cache StampedeEin Cache Stampede entsteht, wenn gleichzeitige Anfragen dieselben Daten im Cache nicht finden und dieselbe teure Arbeit mehrfach starten.
- Race ConditionEin fehlerhaftes Ergebnis hängt von der zeitlichen Reihenfolge überlappender Zugriffe ab.
- Memory LeakNicht mehr benötigter Speicher bleibt während des Betriebs unnötig gebunden.
- NebenläufigkeitMehrere Aufgaben so organisieren, dass ihre Bearbeitungszeiträume überlappen können.
Ihr Vorhaben mit ASES
Beschreiben Sie uns Ihr Vorhaben. Wir melden uns mit einer ersten Einschätzung.