Gå til innholdet

Backpressure

Backpressure tilpasser tilførselen av data til mottakerens behandlingskapasitet gjennom signaler om å senke tempoet eller ta pause.

Programvarearkitektur

Backpressure er tilbakemelding fra en belastet mottaker til datakilden tidligere i kjeden om å sende færre data eller ta pause. Et behandlingstrinn kan dermed tilpasse tilførselen til kapasiteten sin.

I en fiktiv import leser kilden 120 poster i sekundet, mens databasen behandler 40. Ved konstante hastigheter og uten forkastede poster vokser køen med 80 poster i sekundet. En større buffer utsetter problemet. Backpressure får kilden til å lese langsommere eller ta pause til behandlingen holder følge.

Send pausesignalet videre

I en fungerende skrivestrøm i Node.js betyr returverdien false fra .write() at avsenderen skal vente med flere datablokker. Blokken som allerede er levert, sendes ikke på nytt av den grunn. Etter drain kan flere blokker følge; feil og lukkede strømmer må håndteres separat. Bufferterskelen highWaterMark er ingen fast øvre grense for det samlede minneforbruket.

Signalet hjelper bare hvis de tidligere trinnene respekterer det og begrenser sine egne buffere. Kan ikke kilden bremses, må applikasjonen også begrense hvor mye arbeid den tar imot, og bestemme hvordan overbelastning skal håndteres. Rate limiting fastsetter en tillatt forespørselsrate; backpressure reagerer på mottakskapasiteten i dataflyten.

Kilder