Request Coalescing: den Thundering Herd in Node.js verhindern

Wenn ein zwischengespeicherter Wert bei hoher Last abläuft, laufen alle Anfragen, die in den nächsten Millisekunden eintreffen, gleichzeitig am Cache vorbei. Jede einzelne löst dieselbe Datenbankabfrage aus, denselben externen API-Aufruf, dieselbe teure Berechnung – und alle liefern dasselbe Ergebnis. Das ist das Thundering-Herd-Problem, und es lässt sich trügerisch leicht übersehen, bis der Traffic hoch genug ist, damit es wirklich zählt.

Die Lösung ist kein verteilter Lock und keine Sleep-and-Retry-Schleife. Es ist Inflight Request Coalescing: gleichzeitige, bereits laufende Anfragen für dieselbe Ressource deduplizieren, sodass nur ein einziger Aufruf an das Backend läuft und jeder wartende Aufrufer sich den aufgelösten Wert teilt.