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

Как бороться с неконсистентностью при сохранении информации только в половине сервисов

Используй паттерн Saga для управления распределёнными транзакциями. Разбей операцию на этапы, каждый с компенсирующим действием при ошибке.

Пример:

java
// Order Saga
public class OrderSaga {
    void execute(Order order) {
        try {
            inventoryService.reserveItems(order); // Шаг 1
            paymentService.charge(order);          // Шаг 2
            shippingService.schedule(order);       // Шаг 3
        } catch (Exception e) {
            // Компенсация
            paymentService.refund(order);
            inventoryService.releaseItems(order);
            throw e;
        }
    }
}

Альтернативы:

  • Event Sourcing + CQRS (восстановление состояния через события).
  • 2PC (Two-Phase Commit) — но сложно в микросервисах.

Важно: Логируй все шаги для отладки неконсистентности.

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

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

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

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