Synchroniczna komunikacja blokuje wywołującego do momentu otrzymania odpowiedzi; asynchroniczna komunikacja wysyła wiadomość i kontynuuje bez czekania. Każda podejście wiąże się z różnymi kompromisami w sprzężeniu, opóźnieniu i odporności.
Synchroniczna komunikacja blokuje wywołującego do momentu otrzymania odpowiedzi; asynchroniczna komunikacja wysyła wiadomość i kontynuuje bez czekania. Każda podejście wiąże się z różnymi kompromisami w sprzężeniu, opóźnieniu i odporności.
| Aspekt | Synchroniczna (REST/gRPC) | Asynchroniczna (messaging) |
|---|
| Czy wywołujący czeka? | Tak | Nie |
| Sprzężenie czasowe | Ścisłe | Luźne |
| Odporność na awarie | Niska | Wysoka (buforowanie przez broker) |
| Spójność | Natychmiastowa | Ostateczna |
| Złożoność | Niższa | Wyższa |
| Debugowalność | Łatwiejsza (liniowa) | Trudniejsza (przepływy) |
SYNC: Caller ──request──▶ Service
Caller ◀─response── Service (blocked the whole time)
ASYNC: Caller ──message──▶ [ Queue ] ──▶ Service
Caller continues immediately; Service handles it later
Async ukrywa błędy — utracona lub zatruta wiadomość może po cichu zniszczyć przepływ pracy. Potrzebujesz kolejek martwych listów i monitorowania.
Wybór bezpośrednio kontroluje, jak błędy się propagują: synchroniczne wywołania ulegają awarii szybko i widocznie, asynchroniczne wiadomości rozdzielają, ale odkładają problemy dla konsumentów.
Dobre mieszanie ich — synchronicznie na krawędzi, asynchronicznie dla przepływów pracy — jest kluczową umiejętnością w budowaniu odpornych mikrousług.