Встречается на собеседованиях • сегодня

Что такое паттерн SAGA

SAGA — это паттерн для управления распределёнными транзакциями в микросервисной архитектуре. Он разбивает длинную транзакцию на последовательность локальных операций, каждая из которых выполняется в своём сервисе. Если одна операция завершается неудачей, SAGA запускает компенсирующие транзакции для отката предыдущих шагов.

Пример сценария:

  1. Сервис заказов создаёт заказ (шаг 1).
  2. Сервис оплаты резервирует средства (шаг 2).
  3. Если доставка не может быть выполнена (ошибка на шаге 3), SAGA запускает компенсацию: отменяет резерв и удаляет заказ.

Типы реализации:

  • Хореография (без центрального координатора, сервисы общаются через события).
  • Оркестрация (центральный координатор управляет процессом).
javascript
// Пример оркестрации (псевдокод)
class OrderSaga {
  async execute() {
    try {
      await orderService.create();
      await paymentService.reserve();
      await deliveryService.schedule();
    } catch (error) {
      await paymentService.cancelReserve(); // Компенсация
      await orderService.cancel(); 
    }
  }
}
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы