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

Какой опыт с паттерном Saga

Паттерн Saga помогает управлять распределенными транзакциями в микросервисной архитектуре, разбивая их на последовательность локальных транзакций с компенсирующими действиями при ошибках.

Пример:

java
// Оркестрация Saga через класс-координатор
public class OrderSaga {
    public void execute(Order order) {
        try {
            inventoryService.reserveItems(order); // Шаг 1
            paymentService.processPayment(order);   // Шаг 2
            shippingService.shipOrder(order);       // Шаг 3
        } catch (Exception e) {
            // Компенсирующие действия
            paymentService.refund(order);  
            inventoryService.releaseItems(order);
        }
    }
}

Нюансы:

  • Оркестрация vs Хореография: Оркестрация (централизованный координатор) проще для контроля, хореография (события) — для масштабирования.
  • Идемпотентность: Компенсирующие действия должны быть идемпотентными (повторный вызов не меняет результат).
  • Сложность отладки: Требует четкого логгирования всех шагов.

Используется в системах с высокой согласованностью, например, e-commerce (оформление заказов).

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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