Comunicarea sincronă blochează apelantul până la sosirea unui răspuns; comunicarea asincronă trimite un mesaj și continuă fără a aștepta. Fiecare face compromisuri diferite în cuplare, latență și reziliență.
Comunicarea sincronă blochează apelantul până la sosirea unui răspuns; comunicarea asincronă trimite un mesaj și continuă fără a aștepta. Fiecare face compromisuri diferite în cuplare, latență și reziliență.
| Aspect | Sincronă (REST/gRPC) | Asincronă (messaging) |
|---|
| Apelantul așteaptă? | Da | Nu |
| Cuplare temporală | Strânsă | Slabă |
| Reziliență la căderi | Scăzută | Înaltă (broker cu buffer) |
| Consecvență | Imediată | Finală |
| Complexitate | Mai scăzută | Mai înaltă |
| Debugabilitate | Mai ușoară (liniară) | Mai grea (fluxuri) |
SYNC: Caller ──request──▶ Service
Caller ◀─response── Service (blocked the whole time)
ASYNC: Caller ──message──▶ [ Queue ] ──▶ Service
Caller continues immediately; Service handles it later
Async ascunde eșecuri — un mesaj pierdut sau otrăvit poate rupe în tăcere un flux de lucru. Aveți nevoie de cozi de litere moarte și monitorizare.
Alegerea controlează direct cum se propagă eșecurile: apelurile sincrone eșuează rapid și vizibil, mesajele asincrone decuplează dar amână problemele pentru consumatori.
Mixarea lor bine — sincron la margine, asincron pentru fluxuri de lucru — este o abilitate fundamentală în construirea microserviciilor reziliente.