Расскажи про паттерн SAGA, два типа — оркестрация и хореография, в чём отличие
Ответ от нейросети
sobes.tech AI
Паттерн SAGA используется для управления распределёнными транзакциями в микросервисной архитектуре, когда одна большая бизнес-операция разбивается на серию локальных транзакций в разных сервисах.
Есть два основных типа реализации SAGA:
-
Оркестрация — централизованный подход. Есть специальный компонент (оркестратор), который управляет последовательностью шагов, вызывает сервисы и обрабатывает их ответы. Оркестратор знает логику всей саги и решает, когда запускать компенсационные транзакции при ошибках.
-
Хореография — децентрализованный подход. Каждый сервис самостоятельно реагирует на события, публикуемые другими сервисами, и запускает свои локальные транзакции. Нет центрального контроллера, координация происходит через обмен событиями.
Отличия:
- Оркестрация даёт централизованный контроль и упрощает управление сложной логикой, но создаёт точку отказа и может усложнять масштабирование.
- Хореография более гибкая и отказоустойчивая, но сложнее отследить полный поток и отладить ошибки, так как логика распределена по сервисам.
Пример оркестрации: есть сервис-оркестратор, который вызывает сервис оплаты, затем сервис доставки, и при ошибке вызывает компенсирующие операции.
Пример хореографии: сервис оплаты публикует событие "Оплата успешна", на которое подписывается сервис доставки и запускает свою часть работы.