Синхронная коммуникация блокирует вызывающего до получения ответа; асинхронная коммуникация отправляет сообщение и продолжает работу без ожидания. Каждый подход предполагает различные компромиссы в связанности, задержке и устойчивости.
Синхронная коммуникация блокирует вызывающего до получения ответа; асинхронная коммуникация отправляет сообщение и продолжает работу без ожидания. Каждый подход предполагает различные компромиссы в связанности, задержке и устойчивости.
| Аспект | Синхронная (REST/gRPC) | Асинхронная (messaging) |
|---|
| Вызывающий ждёт? | Да | Нет |
| Временная связанность | Строгая | Слабая |
| Устойчивость к сбоям | Низкая | Высокая (буферизация брокером) |
| Консистентность | Немедленная | Итоговая |
| Сложность | Ниже | Выше |
| Отладка | Проще (линейный поток) | Сложнее (распределённые потоки) |
SYNC: Caller ──request──▶ Service
Caller ◀─response── Service (blocked the whole time)
ASYNC: Caller ──message──▶ [ Queue ] ──▶ Service
Caller continues immediately; Service handles it later
Async скрывает сбои — потеря или повреждение сообщения может незаметно сломать рабочий процесс. Нужны очереди недоставленных сообщений и мониторинг.
Выбор напрямую определяет распространение сбоев: синхронные вызовы падают быстро и явно, асинхронные сообщения развязывают компоненты, но переносят проблемы на потребителей.
Правильное сочетание — синхрон на краю, асинхрон для рабочих процессов — это ключевой навык при построении устойчивых микросервисов.