Backpressure
Backpressure tilpasser datastrømmen til modtagerens behandlingskapacitet gennem signaler om at sænke tempoet eller holde pause.
Backpressure er den tilbagemelding, en belastet modtager sender til datakilden tidligere i kæden om at levere færre data eller holde pause. Et behandlingstrin kan dermed tilpasse tilførslen til sin kapacitet.
I en fiktiv import læser kilden 120 poster i sekundet, mens databasen behandler 40. Ved konstante hastigheder og uden kasserede poster vokser køen med 80 poster i sekundet. En større buffer udskyder problemet. Backpressure får kilden til at læse langsommere eller holde pause, indtil behandlingen kan følge med.
Send pausesignalet videre
I en fungerende Node.js-skrivestrøm betyder returværdien false fra .write(), at der skal holdes pause før flere datablokke. Den allerede afleverede blok sendes ikke igen af den grund. Efter drain kan flere blokke følge; fejl og lukkede strømme skal håndteres særskilt. Bufferens tærskel highWaterMark er ikke en fast øvre grænse for det samlede hukommelsesforbrug.
Signalet hjælper kun, hvis de tidligere trin respekterer det og begrænser deres egne buffere. Kan kilden ikke sænke tempoet, må applikationen også begrænse, hvor meget arbejde den tager imod, og fastlægge håndteringen af overbelastning. Rate limiting fastsætter en tilladt forespørgselsrate; backpressure reagerer på modtagekapaciteten i datastrømmen.
Kilder
Relaterede begreber
- BeskedkøEn beskedkø fungerer som buffer for beskeder, indtil en forbruger overtager dem til behandling.
- Rate limitingRate limiting fastlægger, hvor ofte en klient må sende forespørgsler efter en bestemt regel.
- Cache stampedeEt cache stampede opstår, når samtidige cache-misses starter den samme dyre beregning eller dataforespørgsel flere gange.
- Race conditionEt forkert resultat afhænger af tidsrækkefølgen i overlappende adgange.
- HukommelseslækHukommelse, der ikke længere behøves, holdes unødigt optaget under drift.
- SamtidighedAt organisere flere opgaver, så deres behandlingsperioder kan overlappe.
Dit projekt med ASES
Beskriv dit projekt for os. Vi vender tilbage med en første vurdering.