Backpressure
La backpressure adatta il flusso di dati in ingresso alla capacità del destinatario attraverso segnali di rallentamento o pausa.
La backpressure è il segnale con cui un destinatario saturo chiede alla sorgente a monte di inviare meno dati o di fermarsi temporaneamente. Una fase di elaborazione può così adeguare il flusso in ingresso alla propria capacità.
In un’importazione fittizia, la sorgente legge 120 record al secondo mentre il database ne elabora 40. A ritmi costanti e senza scartare record, il lavoro arretrato cresce di 80 record al secondo. Un buffer più grande rimanda il problema. La backpressure rallenta o sospende la lettura alla sorgente finché l’elaborazione riesce a tenere il passo.
Trasmettere il segnale di pausa
In uno stream di scrittura Node.js funzionante, il valore false restituito da .write() indica di attendere prima di inviare altri blocchi. Il blocco già passato non viene inviato nuovamente per questo motivo. Dopo drain si possono inviare altri blocchi; errori e stream chiusi richiedono una gestione separata. La soglia del buffer highWaterMark non è un limite rigido alla memoria totale utilizzata.
Il segnale è utile solo se le fasi a monte lo rispettano e limitano i propri buffer. Se la sorgente non può rallentare, l’applicazione deve anche limitare il lavoro accettato e definire come reagire al sovraccarico. Il rate limiting stabilisce una frequenza di richieste consentita; la backpressure reagisce alla capacità di ricezione nel flusso.
Fonti
Termini correlati
- Coda di messaggiUna coda di messaggi mantiene i messaggi in attesa che un consumatore li prenda in carico per elaborarli.
- Rate limitingIl rate limiting stabilisce la frequenza consentita delle richieste di un client secondo una regola.
- Cache stampedeUn cache stampede si verifica quando più cache miss simultanei avviano ripetutamente lo stesso calcolo o la stessa query costosa.
- Race conditionUn risultato errato dipende dall’ordine temporale di accessi sovrapposti.
- Memory leakMemoria non più necessaria resta trattenuta inutilmente durante il funzionamento.
- ConcorrenzaOrganizzare più compiti perché i periodi di elaborazione possano sovrapporsi.
Il vostro progetto con ASES
Descriveteci il vostro progetto. Vi ricontatteremo con una prima valutazione.