В распределённых системах с микросервисами для организации отката транзакций используют паттерны управления распределёнными транзакциями, так как классические ACID-транзакции не работают через границы сервисов.
Как вы обеспечивали транзакционность при декомпозиции монолита на микросервисы?
В распределённых системах с микросервисами для организации отката транзакций используют паттерны управления распределёнными транзакциями, так как классические ACID-транзакции не работают через границы сервисов.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
В распределённых системах с микросервисами для организации отката транзакций используют паттерны управления распределёнными транзакциями, так как классические ACID-транзакции не работают через границы сервисов.
Основные подходы:
- Саги (Sagas) — последовательность локальных транзакций в разных сервисах, каждая из которых имеет компенсирующую операцию для отката. Если одна из транзакций неудачна, выполняются компенсирующие операции для отмены предыдущих шагов.
- Оркестровка саги — централизованный контроллер управляет выполнением и откатом шагов.
- Хореография саги — каждый сервис самостоятельно реагирует на события и выполняет свои шаги и компенсации.
Пример: при оформлении заказа сервис заказов создает заказ, сервис оплаты списывает деньги, сервис доставки планирует доставку. Если списание денег не удалось, сервис заказов запускает компенсирующую операцию — отмену заказа.
Это позволяет обеспечить согласованность данных без глобальных блокировок и распределённых транзакций.