Что такое Saga в построении микросервисов

Python Senior Без компании
Что такое Saga в построении микросервисов
Ответы
Saga — это паттерн для управления распределёнными транзакциями в микросервисной архитектуре. Вместо одной ACID-транзакции (как в монолите) Saga разбивает процесс на последовательность локальных транзакций, каждая в своём сервисе. Если что-то идёт не так, Saga запускает компенсирующие транзакции (откаты). **Типы Sagas:** - **Оркестрируемые** — центральный координатор управляет потоком. - **Хореографические** — сервисы общаются через события. **Пример (оркестрируемая Saga):** ``` def place_order_saga(): try: payment_service.charge() inventory_service.reserve_items() shipping_service.schedule() except Exception: # Компенсация payment_service.refund() inventory_service.release_items() shipping_service.cancel() ``` **Плюсы:** - Обходит ограничение распределённых транзакций - Сохраняет согласованность данных **Минусы:** - Сложность отладки - Нужно проектировать компенсации