La contrapressió (en anglès backpressure) és un mecanisme de control de flux en informàtica que permet a un sistema receptor indicar a un emissor que la velocitat de transmissió de dades supera la seva capacitat de processament. Aquest concepte és fonamental en la programació de xarxa i en la gestió de fluxos de dades (streams) per evitar la saturació de la memòria i garantir l'estabilitat del sistema.
Mecanismes en sistemes asíncrons En la programació asíncrona, la contrapressió es gestiona mitjançant el control dels búfers d'escriptura. Quan una aplicació envia dades a través d'un sòcol (socket), aquestes es col·loquen en un búfer intermedi gestionat pel sistema operatiu. Si la connexió de xarxa és més lenta que la velocitat de generació de dades de l'aplicació, el búfer s'omple. Escriure dades sense supervisar l'estat del búfer pot provocar un consum excessiu de memòria RAM, derivant en una fallada del sistema per esgotament de recursos.
Per evitar-ho, s'utilitzen mètodes de control de flux —com el mètode drain de la biblioteca asyncio de Python— que suspenen l'execució de l'emissor quan el búfer supera un llindar crític (high-water mark). L'emissor només reprèn l'activitat quan el receptor ha processat prou dades i el búfer ha baixat d'un límit de seguretat (low-water mark). Aquest control és essencial en arquitectures de microserveis per evitar fallades en cascada.
Contrapressió en protocols de xarxa La contrapressió no és exclusiva de la programació d'aplicació. El Protocol de Control de Transmissió (TCP) implementa un mecanisme equivalent a nivell de transport mitjançant la finestra de recepció (receive window), que limita la quantitat de dades que l'emissor pot enviar sense confirmació, forçant una pausa automàtica quan el receptor no pot processar les dades amb prou rapidesa. De manera anàloga, el protocol HTTP/2 introdueix el control de flux per fluxos individuals, fet que permet gestionar la contrapressió de manera granular en connexions multiplexades amb múltiples peticions simultànies.
Vegeu també Bucle d'esdeveniments Programació asíncrona
Referències
Categoria:Protocols de xarxa