Что такое 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()
```
**Плюсы:**
- Обходит ограничение распределённых транзакций
- Сохраняет согласованность данных
**Минусы:**
- Сложность отладки
- Нужно проектировать компенсации