Backpressure
Architecture 🔴 SeniorDéfinition
Mécanisme par lequel un consommateur lent signale au producteur de ralentir, pour éviter que les données s'accumulent en mémoire jusqu'au plantage. Dans les streams Node.js, write() renvoie false quand le tampon interne dépasse highWaterMark et l'événement drain indique quand reprendre ; pipeline() gère cela automatiquement. Le même principe existe en Kafka (consommation par lot), en RxJS et dans les files de messages (limites de préfetch).
Analogie
Un serveur qui apporte les plats au rythme où le convive les mange, au lieu d'empiler quinze assiettes sur la table jusqu'à ce qu'elle cède.
Exemple de code
import { pipeline } from 'node:stream/promises';
import { createReadStream, createWriteStream } from 'node:fs';
import { createGzip } from 'node:zlib';
// pipeline() propage la backpressure et les erreurs :
// si le disque écrit lentement, la lecture ralentit d'elle-même.
await pipeline(
createReadStream('export-10go.csv'),
createGzip(),
createWriteStream('export-10go.csv.gz'),
);
// À la main, ce serait :
// if (!dest.write(chunk)) await once(dest, 'drain');
Cas d'usage
Export de fichiers volumineux, relais de flux HTTP, ingestion de messages : partout où un producteur rapide alimente un consommateur plus lent.
Anti-pattern
Termes liés
Dans l'actu
- 08/10 MongoDB détaille l'Intelligent Workload Management, en GA avec MongoDB 9.0 sur les clusters Atlas dédiés sans surcoût : les requêtes excédentaires sont mises en file d'attente plutôt que rejetées, les opérations courtes restent pr… Semaine 41 (2e moitié) · 8 – 11 octobre 2026 →
Fiche mise à jour le 2026-09-27