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

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

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

Ключевые моменты:

  • Каждый сервис выполняет свою часть работы и публикует событие.
  • Если что-то идёт не так, запускаются компенсирующие транзакции (откаты).
  • Есть два стиля: оркестрация (центральный координатор) и хореография (сервисы общаются через события).

Пример (хореография):

csharp
// OrderService
public async Task PlaceOrder(Order order)
{
    await _db.SaveOrderAsync(order);
    await _eventBus.PublishAsync(new OrderPlaced { OrderId = order.Id });
}

// PaymentService (подписан на OrderPlaced)
public async Task Handle(OrderPlaced @event)
{
    try {
        await _paymentService.Charge(@event.OrderId);
        await _eventBus.PublishAsync(new PaymentProcessed { OrderId = @event.OrderId });
    }
    catch {
        await _eventBus.PublishAsync(new PaymentFailed { OrderId = @event.OrderId });
    }
}
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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