Naar de inhoud

Backpressure

Backpressure stemt de instroom van gegevens af op de verwerkingscapaciteit van de ontvanger via signalen om te vertragen of te pauzeren.

Softwarearchitectuur

Backpressure is de terugkoppeling waarmee een drukbezette ontvanger de gegevensbron eerder in de keten vraagt minder gegevens te sturen of tijdelijk te pauzeren. Een verwerkingsstap kan zo de instroom aanpassen aan zijn capaciteit.

Bij een fictieve import leest de bron 120 records per seconde en verwerkt de database er 40. Bij constante snelheden en zonder records weg te gooien groeit de achterstand met 80 records per seconde. Een grotere buffer stelt het probleem uit. Backpressure laat de bron langzamer lezen of pauzeren totdat de verwerking kan volgen.

Het pauzesignaal doorgeven

Bij een werkende Node.js-schrijfstream betekent de retourwaarde false van .write() dat de afzender moet wachten met nieuwe gegevensblokken. Het al aangeboden blok wordt om die reden niet opnieuw verstuurd. Na drain kunnen nieuwe blokken volgen; fouten en gesloten streams vragen om aparte afhandeling. De bufferdrempel highWaterMark is geen harde bovengrens voor het totale geheugengebruik.

Het signaal helpt alleen als eerdere stappen het respecteren en hun eigen buffers begrenzen. Kan de bron niet vertragen, dan moet de toepassing ook de toelating van werk begrenzen en vastleggen wat er bij overbelasting gebeurt. Rate limiting bepaalt een toegestane aanvraagsnelheid; backpressure reageert op de opnamecapaciteit binnen de gegevensstroom.

Bronnen