Перейти к содержанию

Синхронное vs Асинхронное взаимодействие

Системы могут взаимодействовать друг с другом синхронно или асинхронно, в зависимости от того, ожидает ли вызывающая сторона немедленного ответа от получателя.


Синхронное взаимодействие

Синхронное взаимодействие — это когда отправитель делает запрос и ждёт ответа, прежде чем продолжить выполнение.

Признаки:

  • Блокирующий вызов: вызывающая система “заморожена”, пока не получит ответ.

  • Используется, когда результат важен немедленно.

  • Простая логика, но высокая связность между сервисами.

Примеры:

  • HTTP-запросы (REST API, SOAP).

  • SQL-запрос к БД.

  • gRPC с ожиданием ответа.

Плюсы:

  • Простота реализации и отладки.

  • Быстрая обратная связь.

Минусы:

  • Задержки и зависимость от времени отклика другой стороны.

  • Невысокая отказоустойчивость: если сервис недоступен — ошибка.

  • Меньшая масштабируемость.


Асинхронное взаимодействие

Асинхронное взаимодействие — это когда отправитель не ждёт ответа сразу, а может продолжить выполнение, пока ответ не поступит позже (или вовсе не нужен).

Признаки:

  • Неблокирующий вызов.

  • Обмен через очереди сообщений или события.

  • Используется для повышения производительности и отказоустойчивости.

Примеры:

  • Отправка сообщения в очередь (RabbitMQ, Kafka).

  • Webhooks.

  • Email-уведомления.

  • Отложенная обработка заказов.

Плюсы:

  • Высокая масштабируемость и устойчивость.

  • Нет жёсткой привязки во времени между отправителем и получателем.

Минусы:

  • Более сложная реализация (например, повторные попытки, обработка ошибок).

  • Задержка в обработке (в зависимости от системы).

  • Необходимость отслеживать состояние.

Сравнение

Характеристика Синхронное Асинхронное
Ожидание ответа Да Нет
Связность систем Высокая Низкая
Скорость отклика Мгновенно (если всё работает) С задержкой
Масштабируемость Ограниченная Хорошая
Примеры REST API, SOAP, SQL Kafka, Webhooks, Email

Когда использовать что?

  • Синхронное — для запросов, где нужен немедленный результат (логин, запрос баланса).

  • Асинхронное — для операций, которые можно выполнить позже (отправка письма, генерация отчёта).