Backpressure
La backpressure adapte le débit entrant à la capacité de traitement du destinataire grâce à un signal de ralentissement ou de pause.
La backpressure est le signal par lequel un destinataire saturé demande à la source en amont de réduire ou de suspendre l’envoi de données. Une étape de traitement peut ainsi adapter le flux entrant à sa capacité.
Dans un import fictif, la source lit 120 enregistrements par seconde et la base de données en traite 40. À débits constants, sans suppression d’enregistrements, le retard augmente de 80 enregistrements par seconde. Agrandir le tampon reporte le problème. La backpressure ralentit ou suspend la lecture à la source jusqu’à ce que le traitement puisse suivre.
Transmettre le signal de pause
Sur un flux d’écriture Node.js en état de fonctionner, la valeur false renvoyée par .write() demande une pause avant l’envoi de nouveaux blocs. Le bloc déjà transmis n’est pas renvoyé pour cette raison. L’envoi peut reprendre après drain ; les erreurs et les flux fermés nécessitent un traitement distinct. Le seuil de tampon highWaterMark ne constitue pas une limite stricte de la mémoire totale utilisée.
Le signal n’aide que si les étapes en amont le respectent et limitent leurs propres tampons. Si la source ne peut pas ralentir, l’application doit aussi limiter le travail accepté et définir sa réaction à la surcharge. La limitation de débit fixe une fréquence de requêtes autorisée ; la backpressure réagit à la capacité de réception dans le flux.
Sources
Termes associés
- File de messagesUne file de messages conserve les messages en attente de leur prise en charge par un consommateur.
- Limitation du débitLa limitation du débit fixe la fréquence autorisée des requêtes selon une règle définie.
- Cache stampedeUn cache stampede survient quand plusieurs requêtes manquent la même entrée en cache et relancent le même calcul coûteux.
- Condition de concurrenceUn résultat erroné dépend de l’ordre chronologique d’accès simultanés qui se chevauchent.
- Fuite de mémoireDe la mémoire devenue inutile reste occupée sans nécessité pendant l’exécution du programme.
- Concurrence en programmationOrganiser plusieurs tâches pour que leurs périodes de traitement puissent se chevaucher.
Votre projet avec ASES
Décrivez-nous votre projet. Nous revenons vers vous avec une première évaluation.