Backpressure afhandelen in reactieve streams
Beheer snelle producers en trage WebSocket-clients in WebFlux met Reactor-backpressure-operators, zodat streams stabiel blijven onder belasting.
Backpressure afhandelen in reactieve streams is een gratis WebSockets en realtime systemen met Spring-les op CoddyKit. Dit is les 4 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject WebSockets en realtime systemen met Spring. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus WebSockets en realtime systemen met Spring bevat in totaal 4 lessen.
Het probleem van een snelle producent en een trage consument
Een reactieve WebSocket kan marktkoersen sneller uitsturen dan een client ze kan verwerken. Zonder controle groeien buffers totdat het geheugen op is. Deze mismatch lost backpressure op.
Wat backpressure betekent
Backpressure betekent dat de consument de producent vertelt hoeveel hij aankan. In Reactor vraagt de abonnee n items op; de uitgever mag die vraag niet overschrijden.
Reactor wordt door vraag aangestuurd
Een reactieve Flux die vanuit een koude bron is opgebouwd, respecteert de vraag vanzelf: er wordt niets geproduceerd totdat daarom wordt gevraagd. De uitdaging ontstaat bij hete, door tijd aangestuurde bronnen, zoals een prijsfeed die ongeacht de vraag blijft uitzenden.
WebSocketHandler retourneert een Mono
In WebFlux koppelt een handler de uitgaande Flux aan session.send. Het framework abonneert zich en past de vraag van het transport voor u toe.
public Mono<Void> handle(WebSocketSession session) {
Flux<String> out = prices.map(p -> session.textMessage(p));
return session.send(out);
}onBackpressureBuffer
Buffer items bij een overloop tot een limiet en onderneem daarna actie. Dit werkt goed wanneer pieken kort duren.
flux.onBackpressureBuffer(1000,
dropped -> log.warn("dropped {}", dropped),
BufferOverflowStrategy.DROP_OLDEST);onBackpressureDrop
Wanneer de consument traag is, gooit u nieuwe items gewoon weg. Dit is ideaal voor telemetrie waarbij alleen de meest recente waarden belangrijk zijn.
flux.onBackpressureDrop(dropped -> metrics.increment("dropped"));onBackpressureLatest
Bewaar alleen het meest recente item en verwijder de tussenliggende items. Dit is perfect voor een live-dashboard dat de huidige waarde toont, niet de geschiedenis.
flux.onBackpressureLatest();Sampling en afremmen
Verlaag de snelheid vooraf in plaats van reactief items te verwijderen. sample geeft met een vast interval de meest recente waarde door en maakt zo van een onstuitbare stroom een beheersbare stroom.
flux.sample(Duration.ofMillis(200));Buffers overal begrenzen
Onbegrensde buffers zijn een stille geheugendoder. Stel altijd een maximum in en kies een strategie (verwijderen, fout of meest recent), zodat een vastgelopen client de heap van de server niet kan verbruiken.
Overbelaste clients detecteren
Als een client herhaaldelijk het verwijderen van items veroorzaakt, is hij mogelijk te traag voor de feed. Overweeg de updatesnelheid te verlagen, delta's te versturen of de sessie met een duidelijke status te sluiten.
session.close(CloseStatus.create(1011, "client too slow"));Een strategie kiezen
Stem de operator af op de gegevens:
- Bestellingen die niet verloren mogen gaan →
buffermet een veilige limiet, of een fout - Live-metrieken en prijzen →
latestofsample - Telemetrie met best-effort-aflevering →
drop
Korte controle
Toets uw begrip van backpressure.
Samenvatting
U hebt reactieve streams beheersbaar gemaakt:
- Backpressure brengt een snelle producent en een trage consument met elkaar in lijn
- Reactor wordt door vraag aangestuurd; hete bronnen hebben expliciete afhandeling nodig
- De strategieën
buffer,dropenlatestpassen bij verschillende soorten gegevens sampleremt een onstuitbare stroom bij de bron af- Laat buffers nooit onbegrensd; sluit clients die niet kunnen bijhouden
Leer WebSockets en realtime systemen met Spring met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 12
- Lessen
- 48
Veelgestelde vragen
Is de les “Backpressure afhandelen in reactieve streams” gratis?
Ja — de volledige tekst van “Backpressure afhandelen in reactieve streams” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus WebSockets en realtime systemen met Spring wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus WebSockets en realtime systemen met Spring bevat in totaal 4 lessen.
Wat leer ik in “Backpressure afhandelen in reactieve streams”?
Beheer snelle producers en trage WebSocket-clients in WebFlux met Reactor-backpressure-operators, zodat streams stabiel blijven onder belasting. Je oefent met WebSockets en realtime systemen met Spring door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met WebSockets en realtime systemen met Spring te beginnen?
Ervaring vooraf is niet nodig. WebSockets en realtime systemen met Spring op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.
Hoe lang duurt de les “Backpressure afhandelen in reactieve streams”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over WebSockets en realtime systemen met Spring?
Ja. Elke les over WebSockets en realtime systemen met Spring bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Inleiding tot reactief programmeren
- WebFlux WebSocket-handlers
- Reactieve realtime-services bouwen
- Backpressure afhandelen in reactieve streams